Performance analysis of five interprocess communication mechanisms across UNIX operating systems

  • Authors:
  • Patricia K. Immich;Ravi S. Bhagavatula;Ravi Pendse

  • Affiliations:
  • Department of Electrical and Computer Engineering, Wichita State University, 1845 Farimount Box 44, Wichita, KS;Department of Electrical and Computer Engineering, Wichita State University, 1845 Farimount Box 44, Wichita, KS;Department of Electrical and Computer Engineering, Wichita State University, 1845 Farimount Box 44, Wichita, KS

  • Venue:
  • Journal of Systems and Software
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

The availability of a variety of UNIX implementations necessitates the evaluation of their performance with respect to specific application characteristics. This paper concentrates on the performance evaluation of five different Interprocess Communication (IPC) mechanisms--pipes, FIFOs, messages, shared memory (with semaphores), and UNIX domain sockets. Benchmark programs were created for each mechanism, simulating a simple Producer/Consumer message transfer problem. Results were obtained for six UNIX releases--Linux 2.2.5-15, Linux 2.2.17, Linux 2.4.0-test9, RTLinux v2.3, FreeBSD 4.1, and FreeBSD 4.2. The UNIX source code was rigorously examined, and additional tests were created to determine implementation differences that would explain performance variations. Identified causes for performance differences include memory allocation schemes, transfer buffer sizes, data transfer mechanisms, locking mechanism implementations, and underlying code complexity. For all IPC mechanisms with the exception of shared memory, Linux 2.2.5-15 exhibited the best performance, followed by the remaining Linux kernels, with the FreeBSD releases finishing last. When compared against each other, pipes outperformed the other mechanisms. The developed benchmarks and ancillary tests attempt to isolate each aspect of the tested IPC mechanisms to facilitate a full understanding of IPC at the source code level.