Skip to content

0.7 (WIP) Better Performance for Read/Write Operations

Pre-release
Pre-release
Compare
Choose a tag to compare
@ralphlange ralphlange released this 15 Sep 10:27
· 621 commits to master since this release

Batching Read and Write Requests for Better Performance - Work-in-Progress

Release 0.7 adds new low-level handling for single-node read and write requests. (Serving requests coming from periodically scanned or passive records.)

Instead of executing each request instantly with each request getting its separate OPC UA service call, the requests are queued (three prioritized queues controlled by the EPICS record PRIO field) and a separate worker thread works off these queues and creates batches of requests that are combined into a single service call.

Throttling parameters can be set through the opcuaSetOption interface. If both *-timeout-min and *-timeout-max are set, the wait time is interpolated depending on the actual number of nodes in the batched request.

Option Setting
nodes-max maximum number of nodes for any service call
read-nodes-max maximum number of nodes for read requests
read-timeout-min minimum time to wait (in ms) after a read request
read-timeout-max time to wait (in ms) after a read request for the maximum number of nodes
write-nodes-max maximum number of nodes for write requests
write-timeout-min minimum time to wait (in ms) after a write request
write-timeout-max time to wait (in ms) after a write request for the maximum number of nodes

Please also see the list of issues closed in v0.7.0 and the changes since v0.6.0.

As always: please report any findings in the issue tracker