Bench run: plain / 31220758079
← plain home |
dcompact →
generated (UTC): 2026-08-07T23:42:24.338820+00:00
ToplingDB zipkeyonly db_bench | ToplingDB zipkeyvalue db_bench | RocksDB v8.10 db_bench | RocksDB master (5fe22535) db_bench | DB INFO LOGs + bench yamls (Actions artifact) — ToplingDB zipkeyonly LOG-fillrandom, ToplingDB zipkeyonly LOG-fillrandom-omit, ToplingDB zipkeyonly LOG-fillseq, ToplingDB zipkeyonly LOG-fillseq-omit, ToplingDB zipkeyonly db_bench-fillrandom.yaml, ToplingDB zipkeyonly db_bench-fillseq.yaml, ToplingDB zipkeyvalue LOG-fillrandom, ToplingDB zipkeyvalue LOG-fillrandom-omit, ToplingDB zipkeyvalue LOG-fillseq, ToplingDB zipkeyvalue LOG-fillseq-omit, ToplingDB zipkeyvalue db_bench-fillrandom.yaml, ToplingDB zipkeyvalue db_bench-fillseq.yaml, RocksDB v8.10 LOG-fillrandom, RocksDB v8.10 LOG-fillseq, RocksDB master (5fe22535) LOG-fillrandom, RocksDB master (5fe22535) LOG-fillseq
ToplingDB bench yaml (runtime graft): ToplingDB zipkeyonly db_bench-fillrandom.yaml | ToplingDB zipkeyonly db_bench-fillseq.yaml | ToplingDB zipkeyvalue db_bench-fillrandom.yaml | ToplingDB zipkeyvalue db_bench-fillseq.yaml
Runner hardware/software
| OS | Ubuntu 24.04.4 LTS |
| Kernel | 6.17.0-1020-azure |
| CPU | AMD EPYC 7763 64-Core Processor |
| Logical CPUs | 4 |
| Memory | 15.6GiB |
| /dev/shm | 7.8GiB |
| RocksDB block cache | 7.8GiB |
num=100000000 | key_size=8 | value_size=50
On-disk DB size (3.7GiB) ≤ block cache (7.8GiB) — cache can hold the entire dataset. So this benchmark mainly shows CPU and memory cost. With ToplingDB dcompact, most of that CPU and memory cost can be offloaded.
/dev/shm usage (space; after db_bench + omit/scan, before delete)
Allocated disk usage (IEC blocks). RocksDB uses default Snappy compression. Space ratio = engine / v8.10; <1 = less space than RocksDB, >1 = larger.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (5fe22535) | Topling / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom | 3.2GiB | 654.7MiB | 3.7GiB | 3.7GiB | 0.86x | 0.17x |
| fillseq | 4.7GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.46x | 0.38x |
Peak RSS (memory; during db_bench)
Peak resident set size. RocksDB block cache = half physical memory (7.8GiB). Ratio = engine / v8.10; <1 = less memory, >1 = more memory. RocksDB omit columns are derived-from-main (no separate omit pass).
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 (derived-from-main) | RocksDB master (5fe22535) | Topling / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom | 2.5GiB | 2.9GiB | 4.1GiB | 4.2GiB | 0.61x | 0.71x |
| fillrandom-omit | 141.8MiB | 180.6MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.4GiB | 6.5GiB | 0.29x | 0.30x |
| fillseq-omit | 130.6MiB | 190.4MiB | 6.4GiB | n/a | 0.02x | 0.03x |
RSS over time
Sampled once per second from /proc/statm plus open-file page cache. Colored bands show benchmark segments (start time from db_bench output).
Comparison: db_bench fillrandom suite (perf)
Benchmarks: fillrandom, flush, compact, readseq×3, readrandom. RocksDB uses default Snappy compression. compact row shows operations/seconds. RocksDB time / Topling*: >1 = that Topling variant faster. Values show ops/sec.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/31.3s | 1/76.6s | 1/51.8s | 1/64.0s | 2.44x | 1.65x | 2.04x | 0.68x | 0.84x |
| fillrandom | 990495 | 957667 | 665737 | 651462 | 1.03x | 1.49x | 1.52x | 1.44x | 1.47x |
| readrandom | 4031732 | 1638770 | 336213 | 344150 | 2.46x | 11.99x | 11.72x | 4.87x | 4.76x |
| readseq | 22481311 | 16570222 | 10588178 | 8035175 | 1.36x | 1.34x | 1.77x | 0.99x | 1.30x |
Comparison: db_bench fillseq suite (perf)
Same as fillrandom. Watch compact / readseq / readrandom cost for minDictZip=10 vs space savings above.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/39.3s | 1/123.5s | 1/37.7s | 1/40.4s | 3.14x | 0.96x | 1.03x | 0.31x | 0.33x |
| fillseq | 2196793 | 2213142 | 3726937 | 3755240 | 0.99x | 0.59x | 0.58x | 0.59x | 0.59x |
| readrandom | 6773198 | 1358081 | 318330 | 327939 | 4.99x | 21.28x | 20.65x | 4.27x | 4.14x |
| readseq | 26307647 | 20447551 | 10539492 | 8077532 | 1.29x | 2.50x | 3.26x | 1.94x | 2.53x |
Lazy load demo (scan; RocksDB v8.10 baseline)
Topling needs an extra omit pass: scan_omit_key/value enables lazy value load (no real value load). RocksDB has no omit API, so the baseline is readseq×3 already present in the main fill* suite (no extra pass). master omitted here (v8.10 is the stronger RocksDB baseline). Time ratio = v8.10 / Topling*: >1 = Topling* faster, <1 = Topling* slower. nextwithkey is Topling-only.
fillrandom-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / Topling | v8.10 time / zipkeyvalue |
| nextwithkey | 39273919 | 39658854 | — | — | — |
| readseq | 38414052 | 38646626 | 10588178 | 2.29x | 2.31x |
fillseq-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / Topling | v8.10 time / zipkeyvalue |
| nextwithkey | 52222293 | 52589977 | — | — | — |
| readseq | 50942512 | 51083898 | 10539492 | 4.83x | 4.85x |
memtablerep_bench: CSPPMemTable advantage
Focus: CSPP (ToplingDB) vs skiplist. Baseline = RocksDB v8.10 skiplist. Column "CSPP / v8.10": for throughput >1 = CSPP faster; for us/op and elapsed <1 = CSPP cheaper.
| benchmark | metric | CSPP (ToplingDB) | skiplist (ToplingDB) | skiplist (RocksDB v8.10) | CSPP / v8.10 |
| fillrandom | Elapsed time | 34306635 us | 278349369 us | 276906710 us | 0.12x |
| fillrandom | Write throughput | 47.2575 MiB/s | 5.8245 MiB/s | 5.85485 MiB/s | 8.07x |
| fillrandom | write us/op | 0.343066 | 2.78349 | 2.76907 | 0.12x |
| readrandom | Elapsed time | 47773532 us | 362375449 us | 337011948 us | 0.14x |
| readrandom | Read throughput | 33.9361 MiB/s | 4.47394 MiB/s | 4.81065 MiB/s | 7.05x |
| readrandom | read us/op | 0.477735 | 3.62375 | 3.37012 | 0.14x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.009596 | 990495 | 100.960 | 100000000 | 54.8 MB/s |
| compact | 31317957.000000 | 0 | 31.318 | 1 | |
| readseq | 0.044777 | 22332819 | 4.478 | 100000000 | 1235.3 MB/s |
| readseq | 0.044796 | 22322908 | 4.480 | 100000000 | 1234.7 MB/s |
| readseq | 0.044481 | 22481311 | 4.448 | 100000000 | 1243.5 MB/s |
| readrandom | 0.248032 | 4031732 | 24.803 | 100000000 | 141.0 MB/s (63213768 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.455209 | 2196793 | 45.521 | 100000000 | 121.5 MB/s |
| compact | 39338461.000000 | 0 | 39.339 | 1 | |
| readseq | 0.037721 | 26510164 | 3.772 | 100000000 | 1466.4 MB/s |
| readseq | 0.038232 | 26155757 | 3.823 | 100000000 | 1446.8 MB/s |
| readseq | 0.038011 | 26307647 | 3.801 | 100000000 | 1455.2 MB/s |
| readrandom | 0.147641 | 6773198 | 14.764 | 100000000 | 374.6 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025758 | 38822256 | 2.576 | 100000000 | 296.2 MB/s |
| nextwithkey | 0.025473 | 39255465 | 2.547 | 100000000 | 299.5 MB/s |
| nextwithkey | 0.025462 | 39273919 | 2.546 | 100000000 | 299.6 MB/s |
| readseq | 0.026024 | 38424650 | 2.602 | 100000000 | 293.2 MB/s |
| readseq | 0.026034 | 38411160 | 2.603 | 100000000 | 293.1 MB/s |
| readseq | 0.026031 | 38414052 | 2.603 | 100000000 | 293.1 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019124 | 52288265 | 1.912 | 100000000 | 398.9 MB/s |
| nextwithkey | 0.019171 | 52160813 | 1.917 | 100000000 | 398.0 MB/s |
| nextwithkey | 0.019148 | 52222293 | 1.915 | 100000000 | 398.4 MB/s |
| readseq | 0.019636 | 50924301 | 1.964 | 100000000 | 388.5 MB/s |
| readseq | 0.019619 | 50968061 | 1.962 | 100000000 | 388.9 MB/s |
| readseq | 0.019629 | 50942512 | 1.963 | 100000000 | 388.7 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 278349369 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 5.8245 MiB/s |
| fillrandom | write us/op | 2.78349 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 362375449 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.47394 MiB/s |
| readrandom | read us/op | 3.62375 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 34306635 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 47.2575 MiB/s |
| fillrandom | write us/op | 0.343066 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 47773532 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 33.9361 MiB/s |
| readrandom | read us/op | 0.477735 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.044202 | 957667 | 104.420 | 100000000 | 53.0 MB/s |
| compact | 76558159.000000 | 0 | 76.558 | 1 | |
| readseq | 0.060787 | 16450718 | 6.079 | 100000000 | 909.9 MB/s |
| readseq | 0.059968 | 16675376 | 5.997 | 100000000 | 922.4 MB/s |
| readseq | 0.060349 | 16570222 | 6.035 | 100000000 | 916.6 MB/s |
| readrandom | 0.610213 | 1638770 | 61.021 | 100000000 | 57.3 MB/s (63224087 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.451846 | 2213142 | 45.185 | 100000000 | 122.4 MB/s |
| compact | 123547755.000000 | 0 | 123.548 | 1 | |
| readseq | 0.048953 | 20427536 | 4.895 | 100000000 | 1129.9 MB/s |
| readseq | 0.048927 | 20438491 | 4.893 | 100000000 | 1130.5 MB/s |
| readseq | 0.048905 | 20447551 | 4.891 | 100000000 | 1131.0 MB/s |
| readrandom | 0.736332 | 1358081 | 73.633 | 100000000 | 75.1 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025292 | 39536912 | 2.529 | 100000000 | 301.6 MB/s |
| nextwithkey | 0.025303 | 39520396 | 2.530 | 100000000 | 301.5 MB/s |
| nextwithkey | 0.025214 | 39658854 | 2.522 | 100000000 | 302.6 MB/s |
| readseq | 0.025773 | 38799873 | 2.577 | 100000000 | 296.0 MB/s |
| readseq | 0.025933 | 38559687 | 2.593 | 100000000 | 294.2 MB/s |
| readseq | 0.025875 | 38646626 | 2.588 | 100000000 | 294.9 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019041 | 52516981 | 1.904 | 100000000 | 400.7 MB/s |
| nextwithkey | 0.019014 | 52593102 | 1.901 | 100000000 | 401.3 MB/s |
| nextwithkey | 0.019014 | 52589977 | 1.902 | 100000000 | 401.2 MB/s |
| readseq | 0.019565 | 51110738 | 1.957 | 100000000 | 389.9 MB/s |
| readseq | 0.019588 | 51049944 | 1.959 | 100000000 | 389.5 MB/s |
| readseq | 0.019575 | 51083898 | 1.958 | 100000000 | 389.7 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.502 | 665737 | 150.209 | 100000000 | 36.8 MB/s |
| compact | 51757514.000 | 0 | 51.758 | 1 | |
| readseq | 0.133 | 7519303 | 8.407 | 63216053 | 415.9 MB/s |
| readseq | 0.095 | 10581785 | 5.974 | 63216053 | 585.3 MB/s |
| readseq | 0.094 | 10588178 | 5.970 | 63216053 | 585.7 MB/s |
| readrandom | 2.974 | 336213 | 297.430 | 100000000 | 11.8 MB/s (63213395 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.268 | 3726937 | 26.832 | 100000000 | 206.1 MB/s |
| compact | 37736553.000 | 0 | 37.737 | 1 | |
| readseq | 0.158 | 6347915 | 15.753 | 100000000 | 351.1 MB/s |
| readseq | 0.096 | 10431449 | 9.586 | 100000000 | 577.0 MB/s |
| readseq | 0.095 | 10539492 | 9.488 | 100000000 | 583.0 MB/s |
| readrandom | 3.141 | 318330 | 314.139 | 100000000 | 17.6 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 276906710 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 5.85485 MiB/s |
| fillrandom | write us/op | 2.76907 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 337011948 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.81065 MiB/s |
| readrandom | read us/op | 3.37012 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.535 | 651462 | 153.501 | 100000000 | 36.0 MB/s |
| compact | 63994535.000 | 0 | 63.995 | 1 | |
| readseq | 0.170 | 5873718 | 10.761 | 63207078 | 324.9 MB/s |
| readseq | 0.124 | 8075274 | 7.827 | 63207078 | 446.7 MB/s |
| readseq | 0.124 | 8035175 | 7.866 | 63207078 | 444.5 MB/s |
| readrandom | 2.906 | 344150 | 290.571 | 100000000 | 12.0 MB/s (63211985 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.266 | 3755240 | 26.629 | 100000000 | 207.7 MB/s |
| compact | 40436697.000 | 0 | 40.437 | 1 | |
| readseq | 0.195 | 5116446 | 19.545 | 100000000 | 283.0 MB/s |
| readseq | 0.124 | 8089674 | 12.361 | 100000000 | 447.5 MB/s |
| readseq | 0.124 | 8077532 | 12.380 | 100000000 | 446.8 MB/s |
| readrandom | 3.049 | 327939 | 304.935 | 100000000 | 18.1 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 277221374 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 5.8482 MiB/s |
| fillrandom | write us/op | 2.77221 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 339992443 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.76848 MiB/s |
| readrandom | read us/op | 3.39992 |