A C++ shared-memory ring-buffer framework for large-scale data acquisition systems

Rolando Ingles, Mariusz Orlikowski, Andrzej Napieralski · 2017

Large-Scale Data Acquisition Systems are an essential part in many scientific experiments, and the processing of the large amount of data, represents a challenge in designing systems capable of managing such volume of data. Owing to the nature of this type of experiments, the processes responsible for gathering the data from devices which measure real-world phenomena, and those processes in charge of distributing the data to monitoring and/or controlling systems, shall communicate with accuracy and reliability. By running those processes concurrently in a multi-processor computer system such requirements of accuracy and reliability can be achieved. In this paper, we present the design of a C++ framework which implements a ring-buffer by using shared-memory as a fast mechanism of data communication among processes. Likewise, the framework controls the access to data in the shared ringbuffer by implementing inter-process synchronization objects in shared-memory. The effectiveness of the proposed solution is evaluated by evaluating the latency time from when a new data is written into the shared ring-buffer and the longest instant when such a data is gathered. After the experimental test, the results show that it is possible to develop a C++ framework for helping programmers to create data acquisition system when a large-scale data-stream is involved, getting suitable performance by using shared-memory.

Read the paper · More papers on PaperTik