Skip to content

The xHAL serilization is too slow

Summary

When trying to return a significant amount of data via a non-optimized (for rpcsvc) type, the serialization is extremely slow, i.e. taking minutes for 1 MB of data. This prevents taking an S-bit rate scan at p5 with 12 chambers, 24 VFAT per chamber, over the full DAC range.

Steps to reproduce

  1. Launch an S-bit rate scan over the full DAC range with 12 chambers and 24 VFATs per chamber.
  2. Wait 5 minutes until the scan crashes due to the RPC method reply timing out.

What is the expected correct behavior?

Any serialization should be done in a reasonable amount of time and not crash the RPC connection.

Environment

  • Version used: 60bec733
  • Operation System: CC7.6 on gem-daq01.cms and CTP7-GENERIC-20180529T153916-0500-4935611 on eagle16 (at p5)

Possible fixes

In xHAL, the serialization of the function parameters and return values should be done with an efficient library. My researches orient me towards cereal, a well-documented, fast, modern, header-only, C++11 (we do not have more recent on the CTP7), and BSD license serialization library.

This must be considered as an intermediate step to the removal of the legacy rpcsvc code.