-
Notifications
You must be signed in to change notification settings - Fork 15
Description
Deserialization and distribution of large structures using the UASDK client takes too long
Found in production, with a 0.10 Device Support on top of UASDK 1.7.4.
Server is an S7-1518, sending large structures (hundreds of elements) at a fast rate (100ms).
First analysis shows that the traversal of the structure tree (recursive setIncomingData()), run inside a callback called from a low-level worker thread of the UASDK, takes often more than 100ms, so that the low-level library eventually drops updates.
During this, the CPU load is exceptionally high, showing all load on the low-level worker threads and almost no load on the callback threads (record processing).
Suspicion:
Something is really wrong. Feels like each layer of the recursive setIncomingData() deserializes, queries the structure and then serializes again when calling each of its children.
Setup:
- OPCUA Support: 0.10
- Platform: RHEL 8.5
- EPICS Base: 7.0.4.1
- Client library: UA SDK 1.7.4
- Server: S7-1518