Benchmarks for IPC among evering, shmipc, epoll, and io_uring

Benchmark Plots

ipc_benchmark_all ipc_benchmark_first_5 ipc_benchmark_mid_5 ipc_benchmark_last_5

Benchmark Commands


$ cargo bench --bench ipc-benchmark # i.e. --sample-size=50 --measurement-time=30 --save-baseline base

$ cargo bench --bench ipc-benchmark -- --sample-size=1000 --measurement-time=15 --save-baseline samples-size-1000

$ uv run scripts/make_diagrams.py --criterion-dir docs/criterion-x86_64  --bench ipc_benchmark --outdir docs/plots --estimate mean --show-only
       epoll  evering  io_uring  shmipc
4B      6975      382      8023    2490
64B     7069      389      8066    2494
512B    7780      684      7955    2629
1K      8182      999      8335    3964
4K     12325     2770     10201    4459
16K    24030    10132     20042   11753
32K    39101    17948     29241   23414
64K    57139    30028     48472   39638
256K   79765      511     45429   10627
512K  157073      997    110664   21644
1M    154386     2002    106702   43877
4M    530504     7628    429524  177246

$ critcmp base samples-size-1000 --target-dir . # -f "evering|shmipc"
group                                           base                                      samples-size-1000
-----                                           ----                                      -----------------
ipc_benchmark/ipc_benchmark_00_4B_epoll         1.00      4.5±0.12µs        ? ?/sec       1.55     7.0±13.89µs        ? ?/sec
ipc_benchmark/ipc_benchmark_00_4B_evering       1.00   368.2±12.90ns        ? ?/sec       1.04   382.1±55.40ns        ? ?/sec
ipc_benchmark/ipc_benchmark_00_4B_io_uring      1.00      3.9±0.22µs        ? ?/sec       2.07      8.0±8.56µs        ? ?/sec
ipc_benchmark/ipc_benchmark_00_4B_shmipc        1.00   720.0±87.04ns        ? ?/sec       3.46      2.5±8.38µs        ? ?/sec
ipc_benchmark/ipc_benchmark_01_64B_epoll        1.00      4.5±0.14µs        ? ?/sec       1.55     7.1±14.27µs        ? ?/sec
ipc_benchmark/ipc_benchmark_01_64B_evering      1.00   366.4±13.68ns        ? ?/sec       1.06   389.8±28.84ns        ? ?/sec
ipc_benchmark/ipc_benchmark_01_64B_io_uring     1.00      3.9±0.28µs        ? ?/sec       2.07      8.1±8.15µs        ? ?/sec
ipc_benchmark/ipc_benchmark_01_64B_shmipc       1.00   735.3±81.59ns        ? ?/sec       3.39      2.5±8.39µs        ? ?/sec
ipc_benchmark/ipc_benchmark_02_512B_epoll       1.00      5.0±0.08µs        ? ?/sec       1.56     7.8±16.80µs        ? ?/sec
ipc_benchmark/ipc_benchmark_02_512B_evering     1.00   640.3±13.08ns        ? ?/sec       1.07   684.2±56.90ns        ? ?/sec
ipc_benchmark/ipc_benchmark_02_512B_io_uring    1.00      4.1±0.15µs        ? ?/sec       1.95      8.0±9.12µs        ? ?/sec
ipc_benchmark/ipc_benchmark_02_512B_shmipc      1.00   977.5±52.17ns        ? ?/sec       2.69      2.6±8.40µs        ? ?/sec
ipc_benchmark/ipc_benchmark_03_1K_epoll         1.00      5.4±0.12µs        ? ?/sec       1.52     8.2±16.71µs        ? ?/sec
ipc_benchmark/ipc_benchmark_03_1K_evering       1.00   926.4±15.78ns        ? ?/sec       1.08   999.8±97.38ns        ? ?/sec
ipc_benchmark/ipc_benchmark_03_1K_io_uring      1.00      4.4±0.21µs        ? ?/sec       1.88     8.3±11.81µs        ? ?/sec
ipc_benchmark/ipc_benchmark_03_1K_shmipc        1.00  1252.7±112.55ns        ? ?/sec      3.16     4.0±14.45µs        ? ?/sec
ipc_benchmark/ipc_benchmark_04_4K_epoll         1.00      8.2±0.20µs        ? ?/sec       1.51    12.3±24.99µs        ? ?/sec
ipc_benchmark/ipc_benchmark_04_4K_evering       1.00      2.5±0.05µs        ? ?/sec       1.11      2.8±0.45µs        ? ?/sec
ipc_benchmark/ipc_benchmark_04_4K_io_uring      1.00      6.7±0.18µs        ? ?/sec       1.51    10.2±13.26µs        ? ?/sec
ipc_benchmark/ipc_benchmark_04_4K_shmipc        1.00      3.0±0.09µs        ? ?/sec       1.48      4.5±8.35µs        ? ?/sec
ipc_benchmark/ipc_benchmark_05_16K_epoll        1.00     18.0±0.41µs        ? ?/sec       1.33    24.0±45.72µs        ? ?/sec
ipc_benchmark/ipc_benchmark_05_16K_evering      1.00      9.9±0.09µs        ? ?/sec       1.02     10.1±2.29µs        ? ?/sec
ipc_benchmark/ipc_benchmark_05_16K_io_uring     1.00     15.2±0.25µs        ? ?/sec       1.32    20.0±29.39µs        ? ?/sec
ipc_benchmark/ipc_benchmark_05_16K_shmipc       1.00      9.5±0.19µs        ? ?/sec       1.24    11.8±13.37µs        ? ?/sec
ipc_benchmark/ipc_benchmark_06_32K_epoll        1.00     30.2±0.66µs        ? ?/sec       1.30   39.1±102.43µs        ? ?/sec
ipc_benchmark/ipc_benchmark_06_32K_evering      1.10     19.8±0.44µs        ? ?/sec       1.00     17.9±5.91µs        ? ?/sec
ipc_benchmark/ipc_benchmark_06_32K_io_uring     1.00     26.3±0.42µs        ? ?/sec       1.11    29.2±33.73µs        ? ?/sec
ipc_benchmark/ipc_benchmark_06_32K_shmipc       1.00     21.8±0.43µs        ? ?/sec       1.07    23.4±19.73µs        ? ?/sec
ipc_benchmark/ipc_benchmark_07_64K_epoll        1.00     55.6±3.33µs        ? ?/sec       1.03    57.1±92.16µs        ? ?/sec
ipc_benchmark/ipc_benchmark_07_64K_evering      1.29     38.7±0.59µs        ? ?/sec       1.00    30.0±15.10µs        ? ?/sec
ipc_benchmark/ipc_benchmark_07_64K_io_uring     1.06     51.4±1.72µs        ? ?/sec       1.00    48.5±66.70µs        ? ?/sec
ipc_benchmark/ipc_benchmark_07_64K_shmipc       1.00     37.0±0.68µs        ? ?/sec       1.07    39.6±43.22µs        ? ?/sec
ipc_benchmark/ipc_benchmark_08_256K_epoll       2.62   209.3±44.76µs        ? ?/sec       1.00     79.8±6.56µs        ? ?/sec
ipc_benchmark/ipc_benchmark_08_256K_evering     288.79  147.7±22.12µs        ? ?/sec      1.00  511.4±117.18ns        ? ?/sec
ipc_benchmark/ipc_benchmark_08_256K_io_uring    4.59   208.3±30.73µs        ? ?/sec       1.00    45.4±21.78µs        ? ?/sec
ipc_benchmark/ipc_benchmark_08_256K_shmipc      13.80  146.7±21.38µs        ? ?/sec       1.00     10.6±2.11µs        ? ?/sec
ipc_benchmark/ipc_benchmark_09_512K_epoll       2.49  391.1±114.82µs        ? ?/sec       1.00   157.1±49.05µs        ? ?/sec
ipc_benchmark/ipc_benchmark_09_512K_evering     285.01  284.4±62.39µs        ? ?/sec      1.00   997.7±88.10ns        ? ?/sec
ipc_benchmark/ipc_benchmark_09_512K_io_uring    3.38  373.9±113.15µs        ? ?/sec       1.00   110.7±59.20µs        ? ?/sec
ipc_benchmark/ipc_benchmark_09_512K_shmipc      13.61  294.6±64.15µs        ? ?/sec       1.00     21.6±2.13µs        ? ?/sec
ipc_benchmark/ipc_benchmark_10_1M_epoll         4.64  716.2±313.90µs        ? ?/sec       1.00   154.4±11.93µs        ? ?/sec
ipc_benchmark/ipc_benchmark_10_1M_evering       258.61 517.9±181.77µs        ? ?/sec      1.00      2.0±0.51µs        ? ?/sec
ipc_benchmark/ipc_benchmark_10_1M_io_uring      6.60  704.2±289.47µs        ? ?/sec       1.00   106.7±28.11µs        ? ?/sec
ipc_benchmark/ipc_benchmark_10_1M_shmipc        13.08 573.8±198.65µs        ? ?/sec       1.00     43.9±3.33µs        ? ?/sec
ipc_benchmark/ipc_benchmark_11_4M_epoll         3.21  1700.8±1671.54µs        ? ?/sec     1.00   530.5±45.16µs        ? ?/sec
ipc_benchmark/ipc_benchmark_11_4M_evering       178.88 1364.6±1073.46µs        ? ?/sec    1.00      7.6±6.06µs        ? ?/sec
ipc_benchmark/ipc_benchmark_11_4M_io_uring      3.13  1343.8±1559.20µs        ? ?/sec     1.00  429.5±286.36µs        ? ?/sec
ipc_benchmark/ipc_benchmark_11_4M_shmipc        8.51  1509.0±1381.64µs        ? ?/sec     1.00   177.2±23.59µs        ? ?/sec