EPICS Home

Experimental Physics and Industrial Control System


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

Subject: CAJ 1.0.4 issues
From: "Chu, Paul C." <[email protected]>
To: [email protected]
Date: Mon, 17 Apr 2006 10:03:10 -0400
We have been heavily using the CAJ with our machine here at SNS for a month or so.  So far we've seen the following issues:

1. if an app needs to connect to a large number of PVs, say > 1000, the app has to connect (at least request connections for) these PVs all at the beginning.  If not doing so, the latter PV connection requests would never succeed.  Also, we need to add a lot of "flushIO()" everywhere to keep "pushing" channel access requests to the server.

2. sometimes, when a lot of PV connections dropped, they have hard time to connect back.  For a small number of dropped PVs, the re-connectivity is fine.

3. we got the following Java exception when connecting to many fast updating PVs (in this case, 2Hz PV update rate and > 160 PVs):

java.nio.BufferUnderflowException
        at java.nio.Buffer.nextGetIndex(Buffer.java:404)
        at java.nio.HeapByteBuffer.getShort(HeapByteBuffer.java:285)
        at com.cosylab.epics.caj.impl.DBRDecoder.readValues(DBRDecoder.java:265)
        at com.cosylab.epics.caj.impl.DBRDecoder.getTimeDBR(DBRDecoder.java:439)
        at com.cosylab.epics.caj.impl.DBRDecoder.getDBR(DBRDecoder.java:115)
        at com.cosylab.epics.caj.impl.requests.EventAddRequest.response(EventAddRequest.java:171)
        at com.cosylab.epics.caj.impl.handlers.EventAddResponse.internalHandleResponse(EventAddResponse.java:60)
        at com.cosylab.epics.caj.impl.handlers.AbstractCAResponseHandler.handleResponse(AbstractCAResponseHandler.java:114)
        at com.cosylab.epics.caj.impl.CAResponseHandler.handleResponse(CAResponseHandler.java:117)
        at com.cosylab.epics.caj.impl.CATransport.processRead(CATransport.java:373)
        at com.cosylab.epics.caj.impl.CATransport.handleEvent(CATransport.java:272)
        at com.cosylab.epics.caj.impl.reactor.lf.LeaderFollowersHandler.handleEvent(LeaderFollowersHandler.java:70)
        at com.cosylab.epics.caj.impl.reactor.Reactor.processInternal(Reactor.java:367)
        at com.cosylab.epics.caj.impl.reactor.Reactor.process(Reactor.java:262)
        at com.cosylab.epics.caj.impl.reactor.lf.LeaderFollowersHandler.run(LeaderFollowersHandler.java:84)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:595)

The 3rd problem only shows on our accelerator network (Linux kernel 2.6.9), not our office network which running with PV gateway and different OS (Linux kernels > 2.6.10 and Windows XP SP2).

For the same applications, we don't see any of the above problems with the JCA/JNI.  

The good side of the CAJ is that it's performance is a lot better than the JCA/JNI.

Has anybody else seen these symptoms?  Any suggestions?  


Thanks,
Paul Chu




Navigate by Date:
Prev: Re: AlarmHandler - filtering vs. HYST Randy Flood
Next: pushing alarms from epics at dzero Geoff Savage
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Alarm Handler in Global mode in and outside the control room Ernest L. Williams Jr.
Next: pushing alarms from epics at dzero Geoff Savage
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024