EPICS Home

Experimental Physics and Industrial Control System


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

Subject: Re: Channel Access monitoring tools
From: Benjamin Franksen <[email protected]>
To: <[email protected]>
Date: Mon, 14 May 2012 11:08:10 +0200
On Friday, May 11, 2012, Bill Lavender wrote:
> One of the installations I am responsible for is having trouble with
> unexplained PV connection failures.  What I have is a program that needs
> to do things in a serialized fashion.  In other words, for each of
> several PVs, it needs to start a connection to a PV, wait for the
> connection to complete, and then immediately use that PV.
> 
> At present, I am doing something like this:
> 
> 1.  Invoke ca_create_channel() with a connection state change handler.
>     The connection state change handler sets a flag to indicate that
>     the connection has complete.
> 
> 2.  Call ca_pend_io() to make sure the request is sent on its way.

You want to use ca_flush (or was it called ca_flush_io?) for that. AFAIK 
ca_pend_io does not send accumulated requests, it just waits for responses 
(and other events).

Cheers
Ben

> 3.  I then wait inside a loop periodically calling ca_poll() until
>     my connection flag has been sent.
> 
> 4.  If the loop has been looping for too long, I declare a timeout
>     and call ca_clear_channel() to get rid of the existing unconnected
>     PV andn then call ca_pend_io() to send that request on the way.
> 
>     My code did not originally have this ca_clear_channel() call,
>     but I added it to see if it would help and in the name of
>     preventing memory leaks.  It didn't help.
> 
> 5.  I then go back to step one to create a new channel.
> 
> 6.  If I execute the outer loop from step 1 to step 5 too many times
>     then I give up and tell the user that I have timed out.
> 
> Increasing the timeouts has not helped.  For debugging, ,I have tried
> timeouts as long as 10 seconds and have not seen a change in the
> frequency of connection timeouts.
> 
> At present, the only client platform that I have that has these timeouts
> is Debian 6.0 Linux (Squeeze).  The same hardware running Debian 5.0
> did not have these problems.  The clients are using EPICS Base 3.14.10
> and the IOC is using 3.14.12.1.
> 
> I am assuming that what I need to do here is to monitor the network
> traffic between the Debian 6.0 machine and the IOC and compare it
> to the traffic between a Debian 5.0 machine and the same IOC.  I see
> that there is a Channel Access plugin for Wireshark that I hope will
> be helpful.  Are there other things that I should be trying?
> 
> The Channel Access code is wrapped in some code of my own, so it will
> not look quite the same as raw Channel Access code, but if you want
> to look at it anyway, look at the function mx_epics_pv_connect()
> in this file
> 
>   http://svn.csrri.iit.edu/mx/trunk/modules/epics/mx_epics.c
> 
> Thanks.
> 
> Bill Lavender
> [email protected]

Attachment: signature.asc
Description: This is a digitally signed message part.


Replies:
Re: Channel Access monitoring tools Bill Lavender
References:
Channel Access monitoring tools Bill Lavender

Navigate by Date:
Prev: Re: Problem installing CA for QT Hinko Kocevar
Next: cPCI express Urša Rojec
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Channel Access monitoring tools Mark Rivers
Next: Re: Channel Access monitoring tools Bill Lavender
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024