Approximate analysis of reader and writer access to a shared resource
SIGMETRICS '90 Proceedings of the 1990 ACM SIGMETRICS conference on Measurement and modeling of computer systems
UNIX network programming
Analysis and solution of non-preemptive policies for scheduling readers and writers
ACM SIGOPS Operating Systems Review
Concurrent control with “readers” and “writers”
Communications of the ACM
Advanced Topics in UNIX: Processes, Files, and Systems
Advanced Topics in UNIX: Processes, Files, and Systems
Performance: which OS is fastest for high-performance network applications?
Sys Admin - Interoperability
Advances in Engineering Software
On the interfacing between QEMU and SystemC for virtual platform construction: Using DMA as a case
Journal of Systems Architecture: the EUROMICRO Journal
Hi-index | 0.00 |
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.