Bench run: plain / 31234948599

← plain home | dcompact →

generated (UTC): 2026-08-08T03:43:31.692384+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)Topling / v8.10 (space)zipkeyvalue / v8.10 (space)
fillrandom3.0GiB582.8MiB3.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)Topling / v8.10 (RSS)zipkeyvalue / v8.10 (RSS)
fillrandom2.1GiB2.1GiB4.1GiB4.2GiB0.51x0.52x
fillrandom-omit142.3MiB180.6MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.4GiB6.5GiB0.29x0.30x
fillseq-omit129.2MiB193.1MiB6.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 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 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 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 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 / Topling*: >1 = that Topling variant 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/27.2s1/83.7s1/66.9s1/50.8s3.08x2.46x1.87x0.80x0.61x
fillrandom10204589847076765496326861.04x1.51x1.61x1.46x1.56x
readrandom489983617844373384813480852.75x14.48x14.08x5.27x5.13x
readseq22093022167331811063152981956921.32x1.31x1.70x0.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.2s1/123.0s1/37.5s1/40.7s3.14x0.96x1.04x0.30x0.33x
fillseq22323982215326377275536943481.01x0.59x0.60x0.59x0.60x
readrandom680259913493123340133436675.04x20.37x19.79x4.04x3.93x
readseq26391136203841801084703181808611.29x2.43x3.23x1.88x2.49x

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

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / Toplingv8.10 time / zipkeyvalue
nextwithkey3923796739489838
readseq3819428138753936106315292.27x2.30x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / Toplingv8.10 time / zipkeyvalue
nextwithkey5156507751716844
readseq5044092950348892108470314.65x4.64x

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 time32710072 us254472131 us269265613 us0.12x
fillrandomWrite throughput49.5641 MiB/s6.37102 MiB/s6.02099 MiB/s8.23x
fillrandomwrite us/op0.3271012.544722.692660.12x
readrandomElapsed time43023290 us326108791 us324103709 us0.13x
readrandomRead throughput37.683 MiB/s4.97149 MiB/s5.00225 MiB/s7.53x
readrandomread us/op0.4302333.261093.241040.13x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom0.979951102045897.99510000000056.4 MB/s
compact27180394.000000027.1801
readseq0.044679223816344.4681000000001238.0 MB/s
readseq0.045629219159394.5631000000001212.2 MB/s
readseq0.045263220930224.5261000000001222.0 MB/s
readrandom0.204088489983620.409100000000171.3 MB/s (63208569 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.447948223239844.795100000000123.5 MB/s
compact39193047.000000039.1931
readseq0.037866264087133.7871000000001460.7 MB/s
readseq0.037967263384263.7971000000001456.9 MB/s
readseq0.037891263911363.7891000000001459.8 MB/s
readrandom0.147002680259914.700100000000376.3 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025685389321232.569100000000297.0 MB/s
nextwithkey0.025559391248242.556100000000298.5 MB/s
nextwithkey0.025485392379672.549100000000299.4 MB/s
readseq0.026152382368522.615100000000291.7 MB/s
readseq0.026048383897792.605100000000292.9 MB/s
readseq0.026182381942812.618100000000291.4 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019535511888611.954100000000390.5 MB/s
nextwithkey0.019386515825791.939100000000393.5 MB/s
nextwithkey0.019392515650771.939100000000393.4 MB/s
readseq0.019826504368331.983100000000384.8 MB/s
readseq0.019836504118641.984100000000384.6 MB/s
readseq0.019825504409291.983100000000384.8 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time254472131 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.37102 MiB/s
fillrandomwrite us/op2.54472
readrandomNumber of threads1
readrandomElapsed time326108791 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.97149 MiB/s
readrandomread us/op3.26109

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time32710072 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput49.5641 MiB/s
fillrandomwrite us/op0.327101
readrandomNumber of threads1
readrandomElapsed time43023290 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput37.683 MiB/s
readrandomread us/op0.430233

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.015530984707101.55310000000054.5 MB/s
compact83714533.000000083.7151
readseq0.059945166819695.994100000000922.7 MB/s
readseq0.059449168208265.945100000000930.4 MB/s
readseq0.059761167331815.976100000000925.6 MB/s
readrandom0.560400178443756.04010000000062.4 MB/s (63209218 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.451400221532645.140100000000122.5 MB/s
compact122975854.0000000122.9761
readseq0.049051203869604.9051000000001127.7 MB/s
readseq0.048275207145914.8281000000001145.8 MB/s
readseq0.049057203841804.9061000000001127.5 MB/s
readrandom0.741118134931274.11210000000074.6 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025483392405842.548100000000299.4 MB/s
nextwithkey0.025238396216922.524100000000302.3 MB/s
nextwithkey0.025322394898382.532100000000301.3 MB/s
readseq0.025945385430422.595100000000294.1 MB/s
readseq0.025773388000232.577100000000296.0 MB/s
readseq0.025803387539362.580100000000295.7 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019366516348091.937100000000393.9 MB/s
nextwithkey0.019374516134361.937100000000393.8 MB/s
nextwithkey0.019335517168441.934100000000394.6 MB/s
readseq0.019962500954311.996100000000382.2 MB/s
readseq0.019855503632441.986100000000384.2 MB/s
readseq0.019861503488921.986100000000384.1 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.478676549147.80910000000037.4 MB/s
compact66926606.000066.9271
readseq0.13375164108.41063213545415.8 MB/s
readseq0.094106295455.94763213545588.0 MB/s
readseq0.094106315295.94663213545588.1 MB/s
readrandom2.954338481295.43710000000011.8 MB/s (63213971 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.265377275526.506100000000208.7 MB/s
compact37490075.000037.4901
readseq0.158632922915.800100000000350.1 MB/s
readseq0.093108034159.256100000000597.6 MB/s
readseq0.092108470319.219100000000600.0 MB/s
readrandom2.994334013299.38910000000018.5 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time269265613 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.02099 MiB/s
fillrandomwrite us/op2.69266
readrandomNumber of threads1
readrandomElapsed time324103709 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput5.00225 MiB/s
readrandomread us/op3.24104

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.581632686158.05610000000035.0 MB/s
compact50771898.000050.7721
readseq0.169592887410.66163209873327.9 MB/s
readseq0.12281692847.73863209873451.9 MB/s
readseq0.12281956927.71363209873453.3 MB/s
readrandom2.873348085287.28610000000012.2 MB/s (63212867 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.271369434827.068100000000204.3 MB/s
compact40662594.000040.6631
readseq0.193519466619.251100000000287.3 MB/s
readseq0.122819504412.202100000000453.3 MB/s
readseq0.122818086112.224100000000452.5 MB/s
readrandom2.910343667290.97910000000019.0 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time263881271 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput6.14385 MiB/s
fillrandomwrite us/op2.63881
readrandomNumber of threads1
readrandomElapsed time319378405 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput5.07626 MiB/s
readrandomread us/op3.19378