pvaPy
pvaPy copied to clipboard
Mirror server slow processing large struct arrays
Problem: PV servers has difficultly keeping up reading PV objects with very large struct arrays. The same issue appears with both mirror server and p2p. Steps to reproduce:
- IOC is writing PV array with 27000 struct elements to a PV channel at 10hz
- Run mirror server mapped to PV channel to a second PV channel
- Run pvapy client to read data from the second PV channel
The pvapy client receives the data at 4Hz. The TCP-rx thread in the mirror server is maxed out and the perf profile shows that it is spending most time creating and deleting struct arrays (see graph below):

Both the mirror server and pv client can be optimized by caching the PV object structure after the connection is initialized.