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  <20182019  2020  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Java API JCA / CAJ DBR_LONG
From: Ryan Slominski <[email protected]>
To: [email protected]
Date: Wed, 31 Jan 2018 11:50:25 -0500 (EST)
The new ca library also does not have a DBR_LONG, and uses DBR_INT to mean DBR_LONG.  Just FYI for anyone wondering.

When evaluating the new ca library vs CAJ/JCA for epics2web (https://github.com/JeffersonLab/epics2web) I noticed that there are some differences under the hood like the new ca library uses a "disruptor" concurrency/thread model on monitor callbacks - one per monitor (https://lmax-exchange.github.io/disruptor/).  The old CAJ/JCA has just a fixed leader/follower thread pool hard coded to 5 threads shared for every CA response, not just monitors.  The new ca library has a leader/follower thread pool on the selector as well, but it has a configurable size and delegates to the disruptor for monitors at least to keep long running callbacks from holding onto threads needed for the selector.  The thread model I used for epics2web was to assign a new thread per client websocket to write on the web socket and act as a consumer thread to a buffer that the leader/follower thread pool filled (producer threads).  My brief testing didn't show any performance advantage to using the ca lib with disruptor in my case, perhaps because the bottle neck is writing down the websocket, which requires synchronization (locking) anyways.  If the library client used monitor callbacks to do synchronous long running tasks instead of stuffing them into a buffer for a websocket then ca with disruptor probably would be better.  The modern API interfaces are certainly nicer.

Navigate by Date:
Prev: Suggest EPICS Base series type definitions on website J. Lewis Muir
Next: Re: Suggest EPICS Base series type definitions on website Andrew Johnson
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Java API JCA / CAJ DBR_LONG Ebner Simon Gregor (PSI)
Next: CAJ and JCA links on website point to SourceForge J. Lewis Muir
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  <20182019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·