EPICS V 4 for Neutron Data Kay Kasemir
- Slides: 11
EPICS V 4 for Neutron Data Kay Kasemir, July 2014
V 4 for Neutron Data? http: //www. motorang. com/AIA/pic/tex-rubinowitz-cartoon. jpg
“V 4” pv. Data – Structured Data – Java, C++ – Normative Types: Structs w/ time, alarm, . . pv. Access – Network protocol – – – Similar to CA: UDP 5076, TCP 5075 Server decides on byte order Partial transfers, whatever client requests Clever ‘size’: 1 byte if <255, … Multicast under development Active development, ~daily commits
SNS Neutron Data uint 64 event. ID uint 64 pulse. ID // time. Stamp double proton. Charge struct { uint 32 time_of_flight uint 32 pixel } events[]
Direct Translation into V 4 pv. Data Structure ulong event. ID time_t time. Stamp double proton. Charge Structure Event[] uint time_of_flight uint pixel
. . With Normative Types? Structure // Time stamp for all; // event. ID in. user. Tag time_t time. Stamp NTScalar proton. Charge double value NTScalar. Array time_of_flight uint[] value NTScalar. Array pixel uint[] value
Test Setup • Server: ‘neutron. Server. Main’ – Based on pv. Database. CPP – Configurable: Update. Rate, Event Array Size • Client: ‘neutron. Client. Main’ – Tests for missing ‘event ID’ – Network traffic checked via ‘nethogs’
What you get for free
Performance
Performance • 150000 events, 100 packets/second: – 15 million events/sec – Server: 30% CPU on bl 9 -dassrv 1 – Client: 26% CPU on bl 9 -dasopi 1 • 1 ‘event’ �T. o. F + pixel � 8 bytes – Indeed about 8 bytes/event on network!!
Methinks. . Looking good! + + Can package data in flexible ways Already have network tools to inspect, monitor Community of developers and users Performance is good Note + Limited compatibility between versions + pvget doesn’t show “disconnected” + It’s C++ (std: : tr 1: : shared_ptr, core dumps, …) Next + Fix coredump + Create data to ‘attach’ to result (as for PVTimestamp. . ) + Create library for more tests and later use @ SNS