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

OSUbuntu 24.04.4 LTS
Kernel6.17.0-1020-azure
CPUAMD EPYC 7763 64-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 (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.

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10RocksDB master (5fe22535)zipkeyonly / v8.10 (space)zipkeyvalue / v8.10 (space)
fillrandom3.0GiB583.2MiB3.7GiB3.7GiB0.82x0.15x
fillseq4.8GiB1.2GiB3.2GiB3.2GiB1.48x0.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).

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10 (derived-from-main)RocksDB master (5fe22535)zipkeyonly / v8.10 (RSS)zipkeyvalue / v8.10 (RSS)
fillrandom2.3GiB2.2GiB4.1GiB4.2GiB0.56x0.54x
fillrandom-omit140.1MiB178.1MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.4GiB6.5GiB0.29x0.29x
fillseq-omit129.0MiB193.5MiB6.4GiBn/a0.02x0.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).

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 5500 6000 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 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 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 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/37.8s1/82.8s1/47.6s1/48.9s2.19x1.26x1.29x0.57x0.59x
fillrandom9941429760406779056378781.02x1.47x1.56x1.44x1.53x
readrandom423139617010453614673767612.49x11.71x11.23x4.71x4.51x
readseq22498397166519011066114781537761.35x1.33x1.74x0.99x1.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/39.3s1/123.0s1/38.0s1/40.3s3.13x0.97x1.02x0.31x0.33x
fillseq22402202217200377695737096641.01x0.59x0.60x0.59x0.60x
readrandom678470915868493274873509134.28x20.72x19.33x4.85x4.52x
readseq26163743205577391080880681875171.27x2.42x3.20x1.90x2.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

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey3906933739334569
readseq3810879738755468106611472.26x2.30x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey5210515252191603
readseq5096632151075835108088064.72x4.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.

benchmarkmetricCSPP (ToplingDB)skiplist (ToplingDB)skiplist (RocksDB v8.10)CSPP / v8.10
fillrandomElapsed time32953419 us272032683 us266131867 us0.12x
fillrandomWrite throughput49.1981 MiB/s5.95975 MiB/s6.09189 MiB/s8.08x
fillrandomwrite us/op0.3295342.720332.661320.12x
readrandomElapsed time44202982 us338714137 us324704890 us0.14x
readrandomRead throughput36.6773 MiB/s4.78647 MiB/s4.99298 MiB/s7.35x
readrandomread us/op0.442033.387143.247050.14x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.005890994142100.58910000000055.0 MB/s
compact37808337.000000037.8081
readseq0.044716223631794.4721000000001237.0 MB/s
readseq0.045021222113634.5021000000001228.6 MB/s
readseq0.044447224983974.4451000000001244.5 MB/s
readrandom0.236328423139623.633100000000147.9 MB/s (63203666 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.446384224022044.638100000000123.9 MB/s
compact39324132.000000039.3241
readseq0.037731265031313.7731000000001466.0 MB/s
readseq0.037375267557883.7381000000001479.9 MB/s
readseq0.038220261637433.8221000000001447.2 MB/s
readrandom0.147390678470914.739100000000375.3 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025726388702292.573100000000296.6 MB/s
nextwithkey0.025642389979092.564100000000297.5 MB/s
nextwithkey0.025595390693372.560100000000298.1 MB/s
readseq0.026132382663502.613100000000291.9 MB/s
readseq0.026127382733222.613100000000292.0 MB/s
readseq0.026240381087972.624100000000290.7 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019052524864401.905100000000400.4 MB/s
nextwithkey0.019050524911511.905100000000400.5 MB/s
nextwithkey0.019191521051521.919100000000397.5 MB/s
readseq0.019590510457741.959100000000389.4 MB/s
readseq0.019638509195561.964100000000388.5 MB/s
readseq0.019620509663211.962100000000388.8 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time272032683 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput5.95975 MiB/s
fillrandomwrite us/op2.72033
readrandomNumber of threads1
readrandomElapsed time338714137 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.78647 MiB/s
readrandomread us/op3.38714

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time32953419 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput49.1981 MiB/s
fillrandomwrite us/op0.329534
readrandomNumber of threads1
readrandomElapsed time44202982 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput36.6773 MiB/s
readrandomread us/op0.44203

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.024547976040102.45510000000054.0 MB/s
compact82819957.000000082.8201
readseq0.060288165868256.029100000000917.5 MB/s
readseq0.059632167692555.963100000000927.6 MB/s
readseq0.060053166519016.005100000000921.1 MB/s
readrandom0.587874170104558.78710000000059.5 MB/s (63206660 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.451019221720045.102100000000122.6 MB/s
compact122982722.0000000122.9831
readseq0.049099203667024.9101000000001126.5 MB/s
readseq0.048306207009464.8311000000001145.0 MB/s
readseq0.048643205577394.8641000000001137.1 MB/s
readrandom0.630179158684963.01810000000087.8 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025428393263862.543100000000300.0 MB/s
nextwithkey0.025418393411612.542100000000300.1 MB/s
nextwithkey0.025422393345692.542100000000300.1 MB/s
readseq0.025831387126192.583100000000295.4 MB/s
readseq0.025797387638512.580100000000295.7 MB/s
readseq0.025802387554682.580100000000295.7 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019119523037171.912100000000399.0 MB/s
nextwithkey0.019051524894701.905100000000400.5 MB/s
nextwithkey0.019160521916031.916100000000398.2 MB/s
readseq0.019563511143691.956100000000390.0 MB/s
readseq0.019570510976541.957100000000389.8 MB/s
readseq0.019578510758351.958100000000389.7 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.475677905147.51310000000037.5 MB/s
compact47604797.000047.6051
readseq0.13474841598.44663210945414.0 MB/s
readseq0.093107960085.85563210945597.2 MB/s
readseq0.094106611475.92963210945589.7 MB/s
readrandom2.766361467276.65010000000012.6 MB/s (63217571 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.265377695726.476100000000208.9 MB/s
compact37953453.000037.9531
readseq0.156640301015.618100000000354.2 MB/s
readseq0.093108060709.254100000000597.7 MB/s
readseq0.093108088069.252100000000597.9 MB/s
readrandom3.054327487305.35510000000018.1 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time266131867 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.09189 MiB/s
fillrandomwrite us/op2.66132
readrandomNumber of threads1
readrandomElapsed time324704890 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.99298 MiB/s
readrandomread us/op3.24705

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.568637878156.77010000000035.3 MB/s
compact48897749.000048.8981
readseq0.170586831510.77263213248324.6 MB/s
readseq0.12381263177.77963213248449.5 MB/s
readseq0.12381537767.75363213248451.0 MB/s
readrandom2.654376761265.42010000000013.2 MB/s (63214762 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.270370966426.957100000000205.2 MB/s
compact40280830.000040.2811
readseq0.193517614019.319100000000286.3 MB/s
readseq0.122818785812.213100000000452.9 MB/s
readseq0.122818751712.214100000000452.9 MB/s
readrandom2.850350913284.97110000000019.4 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time263862137 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.14429 MiB/s
fillrandomwrite us/op2.63862
readrandomNumber of threads1
readrandomElapsed time306723451 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput5.28569 MiB/s
readrandomread us/op3.06723