The ratios are the claim
Between 1.3 and 7.4 times cheaper per operation, three times faster in the agent loop, two thirds of the memory of the guest.
Same initramfs, same benchmark binary, same QEMU rig, same machine model. The only thing that changes is the kernel.
One processor. 512 MiB for the operations, 1024 MiB for the model and the agent.
QEMU 8.2.2, Linux 7.3.0 built from the mainline tree, the same initramfs and the same binary on both sides.
Lower is faster on the same QEMU rig. The raw table below contains every measurement, including the losses.
Benchmark comparison between Rabbit and mainline Linux. Operation times span 6 kernel measurements on a logarithmic axis from 100 nanoseconds to 100 milliseconds. End-to-end times span 3 measurements from 1 second to 10000 seconds. Memory and throughput comparisons are shown in the table below.
The chart continues to the right: scroll it sideways for the two mainline series and their values.
Memory and throughput
Logarithmic scale: zero is not representable. The position of each mark encodes the order of magnitude, not the absolute difference.
| Metric | Rabbit | Linux 7.3.0 | Linux, mitigations off |
|---|---|---|---|
| System call | 376 ns | 29.3 us | 1.04 us |
| Map and touch memory | 6.83 ms/MiB | 25.8 ms/MiB | 8.69 ms/MiB |
| Fault in memory, 4 KiB pages | 2.01 ms/MiB | 44.6 ms/MiB | 13.7 ms/MiB |
| Fault in memory, 2 MiB pages | 825 us/MiB | 44.9 ms/MiB | 13.0 ms/MiB |
| Futex round trip | 6.53 us | 407 us | 97.7 us |
| Four threads, spawn to join | 620 us | 7.73 ms | 4.59 ms |
| Boot to the first result | 12.9 s | 206 s | 63.8 s |
| Resident memory of the guest | 319 MB | 476 MB | 483 MB |
| Time to the first token | 11.25 s | 24.67 s | 22.82 s |
| Tokens per second | 0.45 tok/s | 0.20 tok/s | 0.21 tok/s |
| Seconds of an agent loop | 821 s | 2793 s | 2570 s |
| Resident memory with the model | 857 MB | 1021 MB | 1023 MB |
Between 1.3 and 7.4 times cheaper per operation, three times faster in the agent loop, two thirds of the memory of the guest.
There is no hardware acceleration on the host, so a wall clock statement about a processor is not supported yet. A host with KVM is the open issue for that.
The reference kernel without mitigations is measured too, and the batches where a boot did not finish are in the repository with the samples that are missing.
Every measurement is committed as raw data. The published table is derived from these directories.
bench/results/vps-1cpu/The operationsbench/results/inference-native/The modelbench/results/agent/The agentThe benchmarking document explains the protocol; the report contains every measurement, the losses and the threats to validity.