EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: FW: How to share asyn's queue thread among ports?
From: Mark Rivers via Tech-talk <[email protected]>
To: "[email protected]" <[email protected]>
Date: Thu, 30 May 2019 16:26:06 +0000
I forgot to CC tech-talk.

-----Original Message-----
From: Mark Rivers 
Sent: Thursday, May 30, 2019 11:24 AM
To: 'Klemen Vodopivec' <[email protected]>
Subject: RE: How to share asyn's queue thread among ports?

Hi Klemen,

I have some ideas on this, but I need to have a little more information.

About how many detectors do you have?  You said 500 ports, so I assume that means 500 detectors?  You would have one asyn port per detector?

Would all ports be running in a single IOC, or multiple IOCs?

You have about 500 parameters per detector, i.e. per port?

How many parameters are being written to, and at about what rate?

How many parameters are being read, and about what rate?

How are your detectors communicating, i.e. TCP/IP or some other mechanism?

Are you currently using the asyn "addr" parameter, or just the "port" to specify the detector and the drvUser field to specify the parameter?

Is it important that a write operation actually have completed before the record processing completes?

Would it be OK to have status be periodically polled and use SCAN=I/O Intr?

Mark


-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Klemen Vodopivec via Tech-talk
Sent: Thursday, May 30, 2019 9:56 AM
To: [email protected]
Subject: How to share asyn's queue thread among ports?

Hi,

in a fast data-acquisiting application that also controls hundreds of neutron detectors we are using asynPortDriver interface for detector configuration and status communication which results in many asynPortDriver params. The communication is fast (less than 1ms for request/response round trip) but is probably still considered blocking. 
Especially because there's approx 500 params per port, many are written/read in groups and if every request blocks for 1ms it could block CA thread significantly. Our workaround so far was done in database but is overly complex. The obvious solution is to use asyn's blocking mode, but there's up to 500 ports resulting in as many threads.

Ideally there would be an asynPortDriver interface to manage queue threading, which we could then overload and do custom thread management. 
Is there any other approach to keep number of threads low while providing blocking mode? Would asyn patch that allows asynPortDriver do queue thread management be of broader interest?

-- Klemen

References:
How to share asyn's queue thread among ports? Klemen Vodopivec via Tech-talk

Navigate by Date:
Prev: Re: Camonitor with client dictated update rate Ralph Lange via Tech-talk
Next: Re: Camonitor with client dictated update rate Johnson, Andrew N. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
Navigate by Thread:
Prev: How to share asyn's queue thread among ports? Klemen Vodopivec via Tech-talk
Next: Re: [EXTERNAL] RE: How to share asyn's queue thread among ports? Klemen Vodopivec via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
ANJ, 30 May 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·