Experimental Physics and Industrial Control System
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
<2006>
2007
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
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024