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  2022  2023  2024  2025  <2026 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  2025  <2026
<== Date ==> <== Thread ==>

Subject: IOC does not pool network link PVs?
From: "Kasemir, Kay via Tech-talk" <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Fri, 16 Jan 2026 17:49:32 +0000
Hi:

Just noticed something unexpected.

Assume you have a first IOC generating data:

record(calc, "data")

{

   field(SCAN, "1 second")

   field(CALC, "RNDM")

}


With display tools like EDM, CS-Studio, …, no matter if a display shows “data” once or 100 times, the client pools its PVs, so the tool only has a single connection to the IOC, with a single channel for “data”.

When I use a second IOC to read the data, however, there seems to be no such pooling. For example, running this IOC ...

record(ai, "read1")

{

   field(INP, "data")

}


record(ai, "read2")

{

   field(INP, "data")

}


record(ai, "read3")

{

   field(INP, "data")

}


.. will create the channel “data” three times.

On the first IOC, the server report shows one connection and then the same PV name in 3 channels

epics> casr 10

Channel Access Server V4.13

1 client connected:

    TCP client at 10.159….

… 3 Channels

       Channel: ‘data'

            field_type=DBF_DOUBLE (8 bytes), dbr_type=DBF_DOUBLE, 1 element, no filters

            # on eventq=1, access=rw

        Channel: 'data'

            field_type=DBF_DOUBLE (8 bytes), dbr_type=DBF_DOUBLE, 1 element, no filters

            # on eventq=1, access=rw

        Channel: 'data'

            field_type=DBF_DOUBLE (8 bytes), dbr_type=DBF_DOUBLE, 1 element, no filters

            # on eventq=1, access=rw


We noticed this when checking network traffic for an IOC that monitors waveforms in a similar arrangement.
Note that the reading records don’t even need to be processed.
Each INP link creates a channel, a CA monitor is created, the same waveform data is sent multiple times.

As a workaround, you may update your database to insert a ‘mirror’ record like this:

record(ai, "mirror")

{  

   field(INP, "data")

}


record(ai, "read1")

{  

   field(INP, "mirror")

}


record(ai, "read2")

{  

   field(INP, "mirror")

}


record(ai, "read3")

{

   field(INP, "mirror")

}


Now, the first IOC will show only one channel for “data”.

I assume the IOC always behaved this way, and adding a PV pool would be a major change.

-Kay




Replies:
Re: IOC does not pool network link PVs? Michael Davidsaver via Tech-talk
Re: IOC does not pool network link PVs? Ralph Lange via Tech-talk

Navigate by Date:
Prev: Andor operation over PCIe on Linux? Guyotte, Greg via Tech-talk
Next: Re: Query: Protocol & Module Recommendations for 500k-Point Waveform Data Integration into EPICS Érico Nogueira Rolim 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  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: Andor operation over PCIe on Linux? Sourabh Halli via Tech-talk
Next: Re: IOC does not pool network link PVs? Michael Davidsaver 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  2022  2023  2024  2025  <2026
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·