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  2019  2020  2021  <20222023  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  2019  2020  2021  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: odd ASYN behavior
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: EPICS Tech Talk <tech-talk at aps.anl.gov>, Ralph Lange <ralph.lange at gmx.de>
Date: Fri, 18 Mar 2022 22:27:51 +0000
Please also consider setting
    callbackParallelThreads    

to enable multiple concurrent threads to be working on the callback queues. Making the callback queue larger is one way, having the IOC process the callbacks faster is another way to cope with high traffic situations.

That's a good point.  In this case the problem only occurs at iocInit because there are lots of records with SCAN=I/O Intr that get processed once at iocInit.  In this case I think increasing the queue size is fine, it just means that iocInit takes a bit longer to complete.  In the case when the problem happens due to a high callback rate during normal operation then callbackParallelThreads is a better solution.

Mark


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Ralph Lange via Tech-talk <tech-talk at aps.anl.gov>
Sent: Friday, March 18, 2022 4:54 PM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: odd ASYN behavior
 
On Fri, 18 Mar 2022 at 22:11, Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> wrote:
The problem was that the EPICS callback queue was overflowing.  John was getting a lot of these errors:
    callbackRequest: cbLow ring buffer full

By adding this command just before iocInit() the problem was fixed:
    callbackSetQueueSize(10000)

This is normally not needed if the IOC is controlling a single TetrAMM.   However, John is controlling several TetrAMM devices from the same IOC, and that led to more callbacks than the default queue size could handle.

Please also consider setting
    callbackParallelThreads    

to enable multiple concurrent threads to be working on the callback queues. Making the callback queue larger is one way, having the IOC process the callbacks faster is another way to cope with high traffic situations.
See the AppDevGuide for more details [1].

There are iocShell commands to show statistics on queue usage to allow for checking as well as proper and safe queue size configuration. The iocStats module [2] can be used for continuous monitoring of queue status.

Cheers,
~Ralph




References:
odd ASYN behavior Runchey, John via Tech-talk
Re: odd ASYN behavior Mark Rivers via Tech-talk
Re: odd ASYN behavior Mark Rivers via Tech-talk
Re: odd ASYN behavior Runchey, John via Tech-talk
Re: odd ASYN behavior Mark Rivers via Tech-talk
Re: odd ASYN behavior Ralph Lange via Tech-talk

Navigate by Date:
Prev: Re: odd ASYN behavior Ralph Lange via Tech-talk
Next: Re: Unknown error with an equipment Mark Rivers 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  2019  2020  2021  <20222023  2024 
Navigate by Thread:
Prev: Re: odd ASYN behavior Ralph Lange via Tech-talk
Next: Linking PVs to EGU field Marco A. Barra Montevechi Filho 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  2019  2020  2021  <20222023  2024 
ANJ, 14 Sep 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·