Bench run: plain / 31298142068

← plain home | dcompact →

generated (UTC): 2026-08-09T07:40:13.155431+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

OSUbuntu 24.04.4 LTS
Kernel6.17.0-1020-azure
CPUAMD EPYC 9V74 80-Core Processor
Logical CPUs4
Memory15.6GiB
/dev/shm7.8GiB
RocksDB block cache7.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 (disk space; after db_bench + omit/scan)

Allocated disk usage (IEC blocks). RocksDB uses default Snappy compression. Space ratio = engine / v8.10; <1 = less space than RocksDB, >1 = larger.

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10RocksDB master (5fe22535)zipkeyonly / v8.10 (space)zipkeyvalue / v8.10 (space)
fillrandom3.2GiB740.8MiB3.7GiB3.7GiB0.86x0.19x
fillseq4.8GiB1.2GiB3.2GiB3.2GiB1.48x0.38x

Peak RSS (RAM; during db_bench)

RSS is Resident Set Size. RocksDB block cache = half physical memory (7.8GiB). Ratio = engine / v8.10; <1 = less RSS, >1 = more RSS. RocksDB omit columns are derived-from-main (no separate omit pass).

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10 (derived-from-main)RocksDB master (5fe22535)zipkeyonly / v8.10 (RSS)zipkeyvalue / v8.10 (RSS)
fillrandom2.4GiB2.3GiB4.1GiB4.2GiB0.59x0.55x
fillrandom-omit139.8MiB178.0MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.4GiB6.5GiB0.29x0.29x
fillseq-omit128.3MiB190.0MiB6.4GiBn/a0.02x0.03x

RAM usage 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).

startup fillrandom flush compact readseq readseq readseq readrandom 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 MiB 0 50 100 150 200 Time (s) ToplingDB zipkeyonly — fillrandom suite RAM rss shared anony pagecache anony+pc
startup fillseq flush compact readseq readseq readseq readrandom 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 Time (s) ToplingDB zipkeyonly — fillseq suite RAM rss shared anony pagecache anony+pc
startup fillrandom flush compact readseq readseq readseq readrandom 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 MiB 0 50 100 150 200 250 300 Time (s) ToplingDB zipkeyvalue — fillrandom suite RAM rss shared anony pagecache anony+pc
startup fillseq flush compact readseq readseq readseq readrandom 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 250 300 Time (s) ToplingDB zipkeyvalue — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom flush compact readseq readseq readseq readrandom 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 7500 8000 MiB 0 50 100 150 200 250 300 350 400 450 500 550 600 Time (s) RocksDB v8.10 — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq flush compact readseq readseq readseq readrandom 0 5000 10000 MiB 0 50 100 150 200 250 300 350 400 450 500 Time (s) RocksDB v8.10 — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom flush compact readseq readseq readseq readrandom 0 5000 10000 MiB 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 Time (s) RocksDB master (5fe22535) — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq flush compact readseq readseq readseq readrandom 0 5000 10000 MiB 0 50 100 150 200 250 300 350 400 450 500 Time (s) RocksDB master (5fe22535) — fillseq suite RAM rss shared anony pagecache anony+pc

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.

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secRocksDB master (5fe22535) ops/seczipkeyvalue time / zipkeyonlyv8.10 time / zipkeyonlymaster (5fe22535) time / zipkeyonlyv8.10 time / zipkeyvaluemaster (5fe22535) time / zipkeyvalue
compact1/28.5s1/75.5s1/54.2s1/59.6s2.65x1.90x2.09x0.72x0.79x
fillrandom97451310206546161004918470.95x1.58x1.98x1.66x2.08x
readrandom339339115868102978723052702.14x11.39x11.12x5.33x5.20x
readseq2421679217149231975130483843201.41x1.57x1.83x1.11x1.29x

Comparison: db_bench fillseq suite (perf)

Same as fillrandom. Watch compact / readseq / readrandom cost for minDictZip=10 vs space savings above.

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secRocksDB master (5fe22535) ops/seczipkeyvalue time / zipkeyonlyv8.10 time / zipkeyonlymaster (5fe22535) time / zipkeyonlyv8.10 time / zipkeyvaluemaster (5fe22535) time / zipkeyvalue
compact1/38.8s1/122.9s1/36.0s1/35.4s3.17x0.93x0.91x0.29x0.29x
fillseq23428312331734404618340726891.00x0.58x0.58x0.58x0.57x
readrandom651965511938632962392828115.46x22.01x23.05x4.03x4.22x
readseq3045324719541704986433784017371.56x3.09x3.62x1.98x2.33x

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

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey3818669738833202
readseq367648143714162597513042.38x2.41x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey5183936452264844
readseq503556365036098798643375.10x5.10x

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.

benchmarkmetricCSPP (ToplingDB)skiplist (ToplingDB)skiplist (RocksDB v8.10)CSPP / v8.10
fillrandomElapsed time40355896 us384833342 us381334768 us0.11x
fillrandomWrite throughput40.1737 MiB/s4.21285 MiB/s4.2515 MiB/s9.45x
fillrandomwrite us/op0.4035593.848333.813350.11x
readrandomElapsed time58719810 us467036277 us462341900 us0.13x
readrandomRead throughput27.6099 MiB/s3.47135 MiB/s3.5066 MiB/s7.87x
readrandomread us/op0.5871984.670364.623420.13x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.026152974513102.61510000000053.9 MB/s
compact28542562.000000028.5431
readseq0.041813239156184.1811000000001322.8 MB/s
readseq0.041935238462244.1941000000001319.0 MB/s
readseq0.041293242167924.1291000000001339.5 MB/s
readrandom0.294690339339129.469100000000118.7 MB/s (63219918 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.426833234283142.683100000000129.6 MB/s
compact38821872.000000038.8221
readseq0.032583306898243.2581000000001697.5 MB/s
readseq0.033215301062993.3221000000001665.3 MB/s
readseq0.032837304532473.2841000000001684.5 MB/s
readrandom0.153382651965515.338100000000360.6 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.026503377305812.650100000000287.9 MB/s
nextwithkey0.027961357637412.796100000000272.9 MB/s
nextwithkey0.026186381866972.619100000000291.3 MB/s
readseq0.027942357880982.794100000000273.0 MB/s
readseq0.027374365305072.737100000000278.7 MB/s
readseq0.027199367648142.720100000000280.5 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019188521145201.919100000000397.6 MB/s
nextwithkey0.019162521841411.916100000000398.1 MB/s
nextwithkey0.019290518393641.929100000000395.5 MB/s
readseq0.019857503580201.986100000000384.2 MB/s
readseq0.019954501129791.995100000000382.3 MB/s
readseq0.019858503556361.986100000000384.2 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time384833342 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.21285 MiB/s
fillrandomwrite us/op3.84833
readrandomNumber of threads1
readrandomElapsed time467036277 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput3.47135 MiB/s
readrandomread us/op4.67036

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time40355896 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput40.1737 MiB/s
fillrandomwrite us/op0.403559
readrandomNumber of threads1
readrandomElapsed time58719810 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput27.6099 MiB/s
readrandomread us/op0.587198

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom0.979759102065497.97610000000056.5 MB/s
compact75525290.000000075.5251
readseq0.058826169990725.883100000000940.3 MB/s
readseq0.058058172239685.806100000000952.7 MB/s
readseq0.058311171492315.831100000000948.6 MB/s
readrandom0.630194158681063.01910000000055.5 MB/s (63214099 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.428865233173442.887100000000129.0 MB/s
compact122874051.0000000122.8741
readseq0.049509201981884.9511000000001117.2 MB/s
readseq0.048212207414404.8211000000001147.3 MB/s
readseq0.051172195417045.1171000000001080.9 MB/s
readrandom0.837616119386383.76210000000066.0 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.026025384235132.603100000000293.1 MB/s
nextwithkey0.025718388823652.572100000000296.6 MB/s
nextwithkey0.025751388332022.575100000000296.3 MB/s
readseq0.026576376266602.658100000000287.1 MB/s
readseq0.027014370169512.701100000000282.4 MB/s
readseq0.026923371416252.692100000000283.4 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019298518185721.930100000000395.3 MB/s
nextwithkey0.019139522462491.914100000000398.6 MB/s
nextwithkey0.019133522648441.913100000000398.7 MB/s
readseq0.019857503578931.986100000000384.2 MB/s
readseq0.019859503535571.986100000000384.2 MB/s
readseq0.019856503609871.986100000000384.2 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.623616100162.31110000000034.1 MB/s
compact54179357.000054.1791
readseq0.14967273649.39663212999372.1 MB/s
readseq0.10397289326.49763212999538.1 MB/s
readseq0.10397513046.48363212999539.4 MB/s
readrandom3.357297872335.71410000000010.4 MB/s (63211909 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.247404618324.715100000000223.8 MB/s
compact35961502.000035.9621
readseq0.172581085417.209100000000321.4 MB/s
readseq0.100995459610.046100000000550.6 MB/s
readseq0.101986433710.138100000000545.6 MB/s
readrandom3.376296239337.56410000000016.4 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time381334768 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.2515 MiB/s
fillrandomwrite us/op3.81335
readrandomNumber of threads1
readrandomElapsed time462341900 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput3.5066 MiB/s
readrandomread us/op4.62342

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom2.033491847203.31510000000027.2 MB/s
compact59645982.000059.6461
readseq0.177566046611.16763212822313.1 MB/s
readseq0.12083138317.60363212822459.9 MB/s
readseq0.11983843207.53963212822463.8 MB/s
readrandom3.276305270327.57810000000010.7 MB/s (63221458 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.246407268924.554100000000225.3 MB/s
compact35440306.000035.4401
readseq0.198504623819.817100000000279.1 MB/s
readseq0.119841629911.882100000000465.5 MB/s
readseq0.119840173711.902100000000464.7 MB/s
readrandom3.536282811353.59210000000015.6 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time381118149 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.25392 MiB/s
fillrandomwrite us/op3.81118
readrandomNumber of threads1
readrandomElapsed time427624145 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput3.79129 MiB/s
readrandomread us/op4.27624