Bench run: plain / 31252003395

← plain home | dcompact →

generated (UTC): 2026-08-08T13:03:29.053193+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 (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.2GiB587.0MiB3.7GiB3.7GiB0.86x0.15x
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.3GiB2.2GiB4.1GiB4.2GiB0.55x0.53x
fillrandom-omit146.0MiB174.9MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.5GiB6.5GiB0.29x0.29x
fillseq-omit128.6MiB187.3MiB6.5GiBn/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 5500 6000 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 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 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/33.5s1/78.4s1/53.2s1/49.8s2.34x1.59x1.49x0.68x0.64x
fillrandom9949759873226856536121191.01x1.45x1.63x1.44x1.61x
readrandom368659218259993657333622942.02x10.08x10.18x4.99x5.04x
readseq22452308168894611053076580286551.33x1.35x1.77x1.01x1.33x

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.5s1/122.4s1/37.7s1/40.3s3.10x0.95x1.02x0.31x0.33x
fillseq22131002227125371333237115140.99x0.60x0.60x0.60x0.60x
readrandom676681415375623492323702724.40x19.38x18.28x4.40x4.15x
readseq26268423204036361067936581528381.29x2.46x3.22x1.91x2.50x

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
nextwithkey3915143139264821
readseq3831331038746293105307652.30x2.33x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey5264263352575848
readseq5097341350993714106793654.77x4.78x

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 time33472877 us262088172 us234575809 us0.14x
fillrandomWrite throughput48.4346 MiB/s6.18588 MiB/s6.9114 MiB/s7.01x
fillrandomwrite us/op0.3347292.620882.345760.14x
readrandomElapsed time44265716 us328243786 us291973050 us0.15x
readrandomRead throughput36.6253 MiB/s4.93915 MiB/s5.55273 MiB/s6.60x
readrandomread us/op0.4426573.282442.919730.15x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.005050994975100.50510000000055.0 MB/s
compact33515783.000000033.5161
readseq0.044564224394964.4561000000001241.2 MB/s
readseq0.044534224543154.4531000000001242.0 MB/s
readseq0.044538224523084.4541000000001241.9 MB/s
readrandom0.271253368659227.125100000000128.9 MB/s (63197572 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.451855221310045.185100000000122.4 MB/s
compact39485838.000000039.4861
readseq0.037964263408203.7961000000001457.0 MB/s
readseq0.037898263860803.7901000000001459.5 MB/s
readseq0.038068262684233.8071000000001453.0 MB/s
readrandom0.147779676681414.778100000000374.3 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025639390016812.564100000000297.6 MB/s
nextwithkey0.025602390583952.560100000000298.0 MB/s
nextwithkey0.025541391514312.554100000000298.7 MB/s
readseq0.026201381659432.620100000000291.2 MB/s
readseq0.026071383562792.607100000000292.6 MB/s
readseq0.026100383133102.610100000000292.3 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019390515705281.939100000000393.5 MB/s
nextwithkey0.019094523701691.909100000000399.6 MB/s
nextwithkey0.018995526426331.900100000000401.6 MB/s
readseq0.019588510483281.959100000000389.5 MB/s
readseq0.019588510506731.959100000000389.5 MB/s
readseq0.019617509734131.962100000000388.9 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time262088172 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.18588 MiB/s
fillrandomwrite us/op2.62088
readrandomNumber of threads1
readrandomElapsed time328243786 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.93915 MiB/s
readrandomread us/op3.28244

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time33472877 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput48.4346 MiB/s
fillrandomwrite us/op0.334729
readrandomNumber of threads1
readrandomElapsed time44265716 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput36.6253 MiB/s
readrandomread us/op0.442657

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.012838987322101.28410000000054.6 MB/s
compact78406346.000000078.4061
readseq0.059707167483935.971100000000926.4 MB/s
readseq0.059736167402965.974100000000926.0 MB/s
readseq0.059208168894615.921100000000934.2 MB/s
readrandom0.547645182599954.76510000000063.8 MB/s (63204473 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.449009222712544.901100000000123.2 MB/s
compact122362663.0000000122.3631
readseq0.048898204505544.8901000000001131.2 MB/s
readseq0.049030203957344.9031000000001128.2 MB/s
readseq0.049011204036364.9011000000001128.6 MB/s
readrandom0.650380153756265.03810000000085.0 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025461392756472.546100000000299.6 MB/s
nextwithkey0.025406393599902.541100000000300.3 MB/s
nextwithkey0.025468392648212.547100000000299.6 MB/s
readseq0.025841386978032.584100000000295.2 MB/s
readseq0.025983384851322.598100000000293.6 MB/s
readseq0.025809387462932.581100000000295.6 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019115523132931.912100000000399.1 MB/s
nextwithkey0.019078524143901.908100000000399.9 MB/s
nextwithkey0.019020525758481.902100000000401.1 MB/s
readseq0.019606510036751.961100000000389.1 MB/s
readseq0.019596510287131.960100000000389.3 MB/s
readseq0.019610509937141.961100000000389.1 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.458685653145.84610000000037.9 MB/s
compact53211289.000053.2111
readseq0.13275699338.35063210181418.7 MB/s
readseq0.095105153386.01163210181581.6 MB/s
readseq0.095105307656.00263210181582.5 MB/s
readrandom2.734365733273.42310000000012.8 MB/s (63216469 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.269371333226.930100000000205.4 MB/s
compact37682455.000037.6821
readseq0.157636172915.719100000000351.9 MB/s
readseq0.094106352699.403100000000588.3 MB/s
readseq0.094106793659.364100000000590.7 MB/s
readrandom2.863349232286.34210000000019.3 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time234575809 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.9114 MiB/s
fillrandomwrite us/op2.34576
readrandomNumber of threads1
readrandomElapsed time291973050 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput5.55273 MiB/s
readrandomread us/op2.91973

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.634612119163.36710000000033.9 MB/s
compact49823309.000049.8231
readseq0.172581710510.86663207479321.8 MB/s
readseq0.12480471787.85563207479445.1 MB/s
readseq0.12580286557.87363207479444.1 MB/s
readrandom2.760362294276.01810000000012.7 MB/s (63202030 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.269371151426.943100000000205.3 MB/s
compact40326720.000040.3271
readseq0.193519371019.254100000000287.3 MB/s
readseq0.123811397112.324100000000448.8 MB/s
readseq0.123815283812.266100000000451.0 MB/s
readrandom2.701370272270.07110000000020.5 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time263458168 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.15371 MiB/s
fillrandomwrite us/op2.63458
readrandomNumber of threads1
readrandomElapsed time297576744 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput5.44816 MiB/s
readrandomread us/op2.97577