Hi,
I’m currently testing transporting NTNDArray objects over PVAccess between two areaDetector IOCs using the PVA plugin (to export the data) and the pvaDriver (to receive it on the other side). Both IOCs are running on the same Linux machine
at the moment.
I’m seeing poor performance using the default PV request type on the receive side:
field()
On the receive side I see fewer NTNDArray objects than I should, even with moderate frame rates and image sizes (50MB/s or so).
And I have been testing various options:
field()
record[queueSize=100]field()
record[pipeline=true]field()
record[queueSize=100, pipeline=true]field()
By grepping the source code, and reading some older PVRequest documentation, I think that the default queueSize is 2.
In another project we have been using the “record[queueSize=100]field()” option for years with good results, and I see the best results with that same option in this NTNDArray application. That seems to fix the issue, and I can run reliably
with no lost data until I run out of CPU on the test machine.
But I am wondering if anyone can explain these options and if setting queueSize matters if I use the pipeline=true option? Has anyone else used the pipeline option?
I saw strange results with the “record[queueSize=100, pipeline=true]field()” where I was sending data at 1Hz but receiving at 100Hz or so.
Cheers,
Matt