Abstract
The paper presents the parallel data processing system for data acquisition systems. A solution utilizes on ring buffer data storage place and dedicated memory management class, to be able to provide efficiently a requested memory area and release it. An operation is based on independently working single producer, a number of consumers and release tasks. They are intended to allocate memory buffer and acquire the data, process them and finally release the buffer. To organize such a sequence of the operations a new synchronization object is proposed. All the components allows the system operation with zero copy and lock-free data operation except the tasks synchronization to save CPU processing power while waiting for previous operation completion. The system was tested and some performance results are presented. The solution is currently intended to work in multithreading applications, however the design on robust interprocess operation is ongoing. The presented work includes solutions suitable for the future extension.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Feldman, S., Dechev, D.: A wait-free multi-producer multi-consumer ring buffer. SIGAPP Appl. Comput. Rev. 15(3), 59–71 (2015)
Krizhanovsky, A.: Lock-free multi-producer multi-consumer queue on ring buffer. Linux J. 2013(228), 4 (2013)
Inglés, R., Orlikowski, M., Napieralski, M.: A C++ shared-memory ring-buffer framework for large-scale data acquisition systems. In: 24th International Conference on Mixed Design of Integrated Circuits and Systems, Bydgoszcz, pp. 161–166 (2017)
Inglés, R., Orlikowski, M., Napieralski, A.: A C++ shared-memory IPC framework for high-throughput data acquisition systems. Int. J. Microelectron. Comput. Sci. 8(2), 43–49 (2017)
LMAX-Exchange/disruptor Wiki. https://github.com/LMAX-Exchange/disruptor/wiki. Accessed 23 Oct 2019
Port of LMAX-Disruptor to C++. https://github.com/Abc-Arbitrage/Disruptor-cpp. Accessed 27 Oct 2019
CODAC. https://www.iter.org/mach/codac. Accessed 30 Dec 2019
Sources of the Single Producer – Multiple Consumers Ring Buffer Data Distribution System. https://gitlab.dmcs.pl/mariuszo/ringbuffer_daq.git. Accessed 29 Nov 2019
Geva, M., Wiseman, Y.: Distributed shared memory integration. In: 2007 IEEE International Conference on Information Reuse and Integration, Las Vegas, pp. 146–151 (2007)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Orlikowski, M. (2020). Single Producer – Multiple Consumers Ring Buffer Data Distribution System with Memory Management. In: Rocha, Á., Adeli, H., Reis, L., Costanzo, S., Orovic, I., Moreira, F. (eds) Trends and Innovations in Information Systems and Technologies. WorldCIST 2020. Advances in Intelligent Systems and Computing, vol 1160. Springer, Cham. https://doi.org/10.1007/978-3-030-45691-7_1
Download citation
DOI: https://doi.org/10.1007/978-3-030-45691-7_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-45690-0
Online ISBN: 978-3-030-45691-7
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)