Skip to content
This repository has been archived by the owner on Mar 18, 2021. It is now read-only.

libpirate benchmarks

Michael Spiegel edited this page Apr 23, 2020 · 11 revisions

Throughput and latency benchmarks for various interprocess communication mechanisms.

The following implementations are measured:

  • shmem - interprocess shared memory in userspace
  • uio - userspace IO device. Kernel memory is mapped to userspace and used as shared memory
  • process-vm-device - character device copies memory directly from writer process to reader process without passing through kernelspace
  • unix-pipe - Unix named pipe
  • unix-socket - Unix domain socket
  • tcp-socket - TCP/IP socket
  • udp-socket - UDP socket
  • shmem-udp - UDP packets transmitted over interprocess shared memory. UDP and IP packets are constructed in userspace. UDP and IP checksums are computed. AVX2 vector instructions are used to compute checksum. Checksum implementation copied from the Snabb project.

Sysctl settings are increased on the UDP socket benchmarks to ensure that no packets are dropped:

sudo sysctl -w net.core.wmem_default=268435456
sudo sysctl -w net.core.rmem_default=268435456
sudo sysctl -w net.core.wmem_max=268435456
sudo sysctl -w net.core.rmem_max=268435456
sudo sysctl -w net.ipv4.udp_rmem_min=268435456
sudo sysctl -w net.ipv4.udp_wmem_min=268435456
sudo sysctl -w fs.pipe-max-size=268435456

Throughput

Latency

Clone this wiki locally