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: Re: PVXS and CA Put benchmark
From: Michael Davidsaver via Tech-talk <tech-talk at aps.anl.gov>
To: Bernardo Brotas Carvalho <bernardo.carvalho at tecnico.ulisboa.pt>
Cc: tech-talk at aps.anl.gov
Date: Thu, 23 Apr 2026 12:05:39 +0200
On 4/22/26 7:30 PM, Bernardo Brotas Carvalho via Tech-talk wrote:
Hi Epics tech-talkers,

While working on a prototype gateway to a WinCCOA  I ended up using PVXS C++ client library,
but I was a little surprised by the relatively low Throughput (when compared to a plain CA client), 
when making a bunch of "puts" to 1000 ai-PVs, served by a softIocPVX.

A couple of thoughts.

Overall put_pvxs.cpp is structured correctly, so the PUTs are being issued in parallel.

After exec()ing all Operations, you could call client::Context::hurryUp() [1].  Somewhat analogous to ca_flush_io(), this optional hint can speed up the search phase.  If you want to understand the effect, you can set:

export PVXS_LOG=pvxs.client.setup=DEBUG
Look for messages mentioning "hurryUp()" [2].

Also, you and your friend might wish to read about std::condition_variable or epicsEvent instead of sleep_for() in a loop ;)


[1] https ://epics-base.github.io/pvxs/client.html#_CPPv4N4pvxs6client7Context7hurryUpEv

[2] https ://github.com/epics-base/pvxs/blob/3d854e492c44261ca25541dfda2177e934efb8b7/src/client.cpp#L723-L731



My first result, made on a 10 year old Intel PC where:

## PVXS Client
=== EPICS PVXS Put Benchmark: 1000 PVs ===
=== SUMMARY ===
  Client creation:       1.02404 ms (0.100708%)
  Put issue phase:       4.97025 ms (0.488793%)
  Wait phase:            1010.81 ms (99.4072%)
  ---------------------------------
  TOTAL TIME:            1016.84 ms
  Throughput:            983.437 puts/sec

## CA Client
=== EPICS CA Put Benchmark: 1000 PVs ===
…. 
=== SUMMARY ===
  Connect phase:         100.629 ms (95.7%)
  Put issue phase:       0.195 ms (0.2%)
  Wait phase:            4.252 ms (4.0%)
  ---------------------------------
  TOTAL TIME:            105.130 ms
  Throughput:            9512.0 puts/sec

A second test, performed on an more recent 40-core Intel(R) Xeon(R) CPU, and using PV grouping, pool, threading, etc. 
( 50 groups of ~20 PVs each), gave me ~2000 puts/sec for PVXS , but still far from CA.

My Env is:
EPICS_CA_ADDR_LIST=localhost
EPICS_CA_AUTO_ADDR_LIST=NO
EPICS_PVA_ADDR_LIST=localhost
EPICS_PVA_AUTO_ADDR_LIST=NO
EPICS_PVA_NAME_SERVERS=localhost

Am I missing something?

In case of interest, my codes made “With a Little Help From My AI Friends”, are in:

Thanks in advance

Bernardo
IPFN-IST Portugal






Replies:
Re: PVXS and CA Put benchmark Bernardo Brotas Carvalho via Tech-talk
References:
PVXS and CA Put benchmark Bernardo Brotas Carvalho via Tech-talk

Navigate by Date:
Prev: Re: Access Security Config File (ACF) size? Ralph Lange via Tech-talk
Next: PVmapper - another EPICS nameserver Vodopivec, Klemen 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: Re: PVXS and CA Put benchmark Robby Tanner via Tech-talk
Next: Re: PVXS and CA Put benchmark Bernardo Brotas Carvalho 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, 02 May 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·