Bench run: plain / 31247301157
← plain home |
dcompact →
generated (UTC): 2026-08-08T09:12:52.979540+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) | zipkeyonly / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom | 3.0GiB | 583.2MiB | 3.7GiB | 3.7GiB | 0.82x | 0.15x |
| fillseq | 4.8GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.48x | 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) | zipkeyonly / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom | 2.3GiB | 2.2GiB | 4.1GiB | 4.2GiB | 0.56x | 0.54x |
| fillrandom-omit | 140.1MiB | 178.1MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.4GiB | 6.5GiB | 0.29x | 0.29x |
| fillseq-omit | 129.0MiB | 193.5MiB | 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 / zipkey*: >1 = that zipkey* engine 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/37.8s | 1/82.8s | 1/47.6s | 1/48.9s | 2.19x | 1.26x | 1.29x | 0.57x | 0.59x |
| fillrandom | 994142 | 976040 | 677905 | 637878 | 1.02x | 1.47x | 1.56x | 1.44x | 1.53x |
| readrandom | 4231396 | 1701045 | 361467 | 376761 | 2.49x | 11.71x | 11.23x | 4.71x | 4.51x |
| readseq | 22498397 | 16651901 | 10661147 | 8153776 | 1.35x | 1.33x | 1.74x | 0.99x | 1.29x |
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.0s | 1/38.0s | 1/40.3s | 3.13x | 0.97x | 1.02x | 0.31x | 0.33x |
| fillseq | 2240220 | 2217200 | 3776957 | 3709664 | 1.01x | 0.59x | 0.60x | 0.59x | 0.60x |
| readrandom | 6784709 | 1586849 | 327487 | 350913 | 4.28x | 20.72x | 19.33x | 4.85x | 4.52x |
| readseq | 26163743 | 20557739 | 10808806 | 8187517 | 1.27x | 2.42x | 3.20x | 1.90x | 2.51x |
Lazy load demo (scan; RocksDB v8.10 baseline)
zipkey* 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 / zipkey*: >1 = zipkey* faster, <1 = zipkey* slower. nextwithkey is ToplingDB-only.
fillrandom-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 39069337 | 39334569 | — | — | — |
| readseq | 38108797 | 38755468 | 10661147 | 2.26x | 2.30x |
fillseq-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 52105152 | 52191603 | — | — | — |
| readseq | 50966321 | 51075835 | 10808806 | 4.72x | 4.73x |
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 | 32953419 us | 272032683 us | 266131867 us | 0.12x |
| fillrandom | Write throughput | 49.1981 MiB/s | 5.95975 MiB/s | 6.09189 MiB/s | 8.08x |
| fillrandom | write us/op | 0.329534 | 2.72033 | 2.66132 | 0.12x |
| readrandom | Elapsed time | 44202982 us | 338714137 us | 324704890 us | 0.14x |
| readrandom | Read throughput | 36.6773 MiB/s | 4.78647 MiB/s | 4.99298 MiB/s | 7.35x |
| readrandom | read us/op | 0.44203 | 3.38714 | 3.24705 | 0.14x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.005890 | 994142 | 100.589 | 100000000 | 55.0 MB/s |
| compact | 37808337.000000 | 0 | 37.808 | 1 | |
| readseq | 0.044716 | 22363179 | 4.472 | 100000000 | 1237.0 MB/s |
| readseq | 0.045021 | 22211363 | 4.502 | 100000000 | 1228.6 MB/s |
| readseq | 0.044447 | 22498397 | 4.445 | 100000000 | 1244.5 MB/s |
| readrandom | 0.236328 | 4231396 | 23.633 | 100000000 | 147.9 MB/s (63203666 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.446384 | 2240220 | 44.638 | 100000000 | 123.9 MB/s |
| compact | 39324132.000000 | 0 | 39.324 | 1 | |
| readseq | 0.037731 | 26503131 | 3.773 | 100000000 | 1466.0 MB/s |
| readseq | 0.037375 | 26755788 | 3.738 | 100000000 | 1479.9 MB/s |
| readseq | 0.038220 | 26163743 | 3.822 | 100000000 | 1447.2 MB/s |
| readrandom | 0.147390 | 6784709 | 14.739 | 100000000 | 375.3 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025726 | 38870229 | 2.573 | 100000000 | 296.6 MB/s |
| nextwithkey | 0.025642 | 38997909 | 2.564 | 100000000 | 297.5 MB/s |
| nextwithkey | 0.025595 | 39069337 | 2.560 | 100000000 | 298.1 MB/s |
| readseq | 0.026132 | 38266350 | 2.613 | 100000000 | 291.9 MB/s |
| readseq | 0.026127 | 38273322 | 2.613 | 100000000 | 292.0 MB/s |
| readseq | 0.026240 | 38108797 | 2.624 | 100000000 | 290.7 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019052 | 52486440 | 1.905 | 100000000 | 400.4 MB/s |
| nextwithkey | 0.019050 | 52491151 | 1.905 | 100000000 | 400.5 MB/s |
| nextwithkey | 0.019191 | 52105152 | 1.919 | 100000000 | 397.5 MB/s |
| readseq | 0.019590 | 51045774 | 1.959 | 100000000 | 389.4 MB/s |
| readseq | 0.019638 | 50919556 | 1.964 | 100000000 | 388.5 MB/s |
| readseq | 0.019620 | 50966321 | 1.962 | 100000000 | 388.8 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 272032683 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 5.95975 MiB/s |
| fillrandom | write us/op | 2.72033 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 338714137 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.78647 MiB/s |
| readrandom | read us/op | 3.38714 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 32953419 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 49.1981 MiB/s |
| fillrandom | write us/op | 0.329534 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 44202982 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 36.6773 MiB/s |
| readrandom | read us/op | 0.44203 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.024547 | 976040 | 102.455 | 100000000 | 54.0 MB/s |
| compact | 82819957.000000 | 0 | 82.820 | 1 | |
| readseq | 0.060288 | 16586825 | 6.029 | 100000000 | 917.5 MB/s |
| readseq | 0.059632 | 16769255 | 5.963 | 100000000 | 927.6 MB/s |
| readseq | 0.060053 | 16651901 | 6.005 | 100000000 | 921.1 MB/s |
| readrandom | 0.587874 | 1701045 | 58.787 | 100000000 | 59.5 MB/s (63206660 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.451019 | 2217200 | 45.102 | 100000000 | 122.6 MB/s |
| compact | 122982722.000000 | 0 | 122.983 | 1 | |
| readseq | 0.049099 | 20366702 | 4.910 | 100000000 | 1126.5 MB/s |
| readseq | 0.048306 | 20700946 | 4.831 | 100000000 | 1145.0 MB/s |
| readseq | 0.048643 | 20557739 | 4.864 | 100000000 | 1137.1 MB/s |
| readrandom | 0.630179 | 1586849 | 63.018 | 100000000 | 87.8 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025428 | 39326386 | 2.543 | 100000000 | 300.0 MB/s |
| nextwithkey | 0.025418 | 39341161 | 2.542 | 100000000 | 300.1 MB/s |
| nextwithkey | 0.025422 | 39334569 | 2.542 | 100000000 | 300.1 MB/s |
| readseq | 0.025831 | 38712619 | 2.583 | 100000000 | 295.4 MB/s |
| readseq | 0.025797 | 38763851 | 2.580 | 100000000 | 295.7 MB/s |
| readseq | 0.025802 | 38755468 | 2.580 | 100000000 | 295.7 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019119 | 52303717 | 1.912 | 100000000 | 399.0 MB/s |
| nextwithkey | 0.019051 | 52489470 | 1.905 | 100000000 | 400.5 MB/s |
| nextwithkey | 0.019160 | 52191603 | 1.916 | 100000000 | 398.2 MB/s |
| readseq | 0.019563 | 51114369 | 1.956 | 100000000 | 390.0 MB/s |
| readseq | 0.019570 | 51097654 | 1.957 | 100000000 | 389.8 MB/s |
| readseq | 0.019578 | 51075835 | 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.475 | 677905 | 147.513 | 100000000 | 37.5 MB/s |
| compact | 47604797.000 | 0 | 47.605 | 1 | |
| readseq | 0.134 | 7484159 | 8.446 | 63210945 | 414.0 MB/s |
| readseq | 0.093 | 10796008 | 5.855 | 63210945 | 597.2 MB/s |
| readseq | 0.094 | 10661147 | 5.929 | 63210945 | 589.7 MB/s |
| readrandom | 2.766 | 361467 | 276.650 | 100000000 | 12.6 MB/s (63217571 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.265 | 3776957 | 26.476 | 100000000 | 208.9 MB/s |
| compact | 37953453.000 | 0 | 37.953 | 1 | |
| readseq | 0.156 | 6403010 | 15.618 | 100000000 | 354.2 MB/s |
| readseq | 0.093 | 10806070 | 9.254 | 100000000 | 597.7 MB/s |
| readseq | 0.093 | 10808806 | 9.252 | 100000000 | 597.9 MB/s |
| readrandom | 3.054 | 327487 | 305.355 | 100000000 | 18.1 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 266131867 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.09189 MiB/s |
| fillrandom | write us/op | 2.66132 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 324704890 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.99298 MiB/s |
| readrandom | read us/op | 3.24705 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.568 | 637878 | 156.770 | 100000000 | 35.3 MB/s |
| compact | 48897749.000 | 0 | 48.898 | 1 | |
| readseq | 0.170 | 5868315 | 10.772 | 63213248 | 324.6 MB/s |
| readseq | 0.123 | 8126317 | 7.779 | 63213248 | 449.5 MB/s |
| readseq | 0.123 | 8153776 | 7.753 | 63213248 | 451.0 MB/s |
| readrandom | 2.654 | 376761 | 265.420 | 100000000 | 13.2 MB/s (63214762 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.270 | 3709664 | 26.957 | 100000000 | 205.2 MB/s |
| compact | 40280830.000 | 0 | 40.281 | 1 | |
| readseq | 0.193 | 5176140 | 19.319 | 100000000 | 286.3 MB/s |
| readseq | 0.122 | 8187858 | 12.213 | 100000000 | 452.9 MB/s |
| readseq | 0.122 | 8187517 | 12.214 | 100000000 | 452.9 MB/s |
| readrandom | 2.850 | 350913 | 284.971 | 100000000 | 19.4 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 263862137 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.14429 MiB/s |
| fillrandom | write us/op | 2.63862 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 306723451 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 5.28569 MiB/s |
| readrandom | read us/op | 3.06723 |