Bench run: plain / 31800922314

← plain home | dcompact →

generated (UTC): 2026-08-14T14:00:45.743291+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-1022-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.1GiB755.5MiB3.7GiB3.7GiB0.84x0.20x
fillseq4.8GiB1.2GiB3.2GiB3.2GiB1.48x0.36x

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.1GiB4.1GiB4.2GiB0.59x0.51x
fillrandom-omit142.6MiB179.5MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.4GiB6.5GiB0.29x0.29x
fillseq-omit128.7MiB189.9MiB6.4GiBn/a0.02x0.03x

RAM usage over time

Sampled once per second from /proc/statm plus open-file page cache. The bar below each plot shows stage name + duration (consecutive repeats merge, e.g. readseq×3); colored bands mark the same intervals. Stage names may overflow into a neighbor cell; a label under the bar is used only when names would overlap.

startup 2.0 fillrandom 101 flush 0.0 compact 28 readseq×3 13 readrandom 30 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 2.0 fillseq 43 flush 0.0 compact 39 readseq×3 9.9 readrandom 15 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 2.0 fillrandom 101 flush 0.0 compact 79 readseq×3 17 readrandom 64 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 2.0 fillseq 42 flush 0.0 compact 125 readseq×3 15 readrandom 86 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 158 flush 0.3 compact 43 readseq×3 22 readrandom 322 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 25 compact 36 readseq×3 37 readrandom 342 flush 0.2 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 152 flush 0.3 compact 48 readseq×3 26 readrandom 304 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 24 compact 35 readseq×3 43 readrandom 321 flush 0.2 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.3s1/78.6s1/42.8s1/48.3s2.78x1.51x1.71x0.54x0.61x
fillrandom9900159945196344356588661.00x1.56x1.50x1.57x1.51x
readrandom337966815566293106823284112.17x10.88x10.29x5.01x4.74x
readseq2348008117281839996767884085481.36x1.49x1.76x1.10x1.30x

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.7s1/125.4s1/35.8s1/35.4s3.24x0.92x0.91x0.29x0.28x
fillseq23370502353582399261840997560.99x0.59x0.57x0.59x0.57x
readrandom655451111582832927393115025.66x22.39x21.04x3.96x3.72x
readseq3025374420720505995770984240161.46x3.04x3.59x2.08x2.46x

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
nextwithkey3895646538645535
readseq369669913691407299676782.34x2.34x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey5226749452207134
readseq503206685033746299577095.05x5.05x

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 time38226203 us352986097 us339148794 us0.11x
fillrandomWrite throughput42.4119 MiB/s4.59295 MiB/s4.78034 MiB/s8.87x
fillrandomwrite us/op0.3822623.529863.391490.11x
readrandomElapsed time55348647 us399158336 us384179353 us0.14x
readrandomRead throughput29.2915 MiB/s4.06166 MiB/s4.22002 MiB/s6.94x
readrandomread us/op0.5534863.991583.841790.14x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.010080990015101.00910000000054.8 MB/s
compact28288803.000000028.2891
readseq0.042303236384764.2301000000001307.5 MB/s
readseq0.042406235814354.2411000000001304.4 MB/s
readseq0.042589234800814.2591000000001298.8 MB/s
readrandom0.295886337966829.589100000000118.2 MB/s (63216868 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.427889233705042.789100000000129.3 MB/s
compact38727584.000000038.7281
readseq0.032967303332803.2971000000001677.8 MB/s
readseq0.032482307859973.2481000000001702.9 MB/s
readseq0.033054302537443.3051000000001673.4 MB/s
readrandom0.152566655451115.257100000000362.6 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025959385219732.596100000000293.9 MB/s
nextwithkey0.025707388992142.571100000000296.8 MB/s
nextwithkey0.025669389564652.567100000000297.2 MB/s
readseq0.026591376053082.659100000000286.9 MB/s
readseq0.027046369725812.705100000000282.1 MB/s
readseq0.027050369669912.705100000000282.0 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019194520975781.919100000000397.5 MB/s
nextwithkey0.019146522290301.915100000000398.5 MB/s
nextwithkey0.019132522674941.913100000000398.8 MB/s
readseq0.019847503843571.985100000000384.4 MB/s
readseq0.019870503261131.987100000000384.0 MB/s
readseq0.019872503206681.987100000000383.9 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time352986097 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.59295 MiB/s
fillrandomwrite us/op3.52986
readrandomNumber of threads1
readrandomElapsed time399158336 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.06166 MiB/s
readrandomread us/op3.99158

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time38226203 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput42.4119 MiB/s
fillrandomwrite us/op0.382262
readrandomNumber of threads1
readrandomElapsed time55348647 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput29.2915 MiB/s
readrandomread us/op0.553486

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.005510994519100.55110000000055.0 MB/s
compact78626955.000000078.6271
readseq0.058174171897595.817100000000950.8 MB/s
readseq0.057826172931095.783100000000956.5 MB/s
readseq0.057864172818395.786100000000955.9 MB/s
readrandom0.642413155662964.24110000000054.4 MB/s (63211854 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.424884235358242.488100000000130.2 MB/s
compact125406571.0000000125.4071
readseq0.052090191973475.2091000000001061.9 MB/s
readseq0.048168207604384.8171000000001148.3 MB/s
readseq0.048261207205054.8261000000001146.1 MB/s
readrandom0.863346115828386.33510000000064.1 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025683389356852.568100000000297.1 MB/s
nextwithkey0.025602390579532.560100000000298.0 MB/s
nextwithkey0.025876386455352.588100000000294.8 MB/s
readseq0.027072369381522.707100000000281.8 MB/s
readseq0.027079369283992.708100000000281.7 MB/s
readseq0.027089369140722.709100000000281.6 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019190521101751.919100000000397.6 MB/s
nextwithkey0.019135522592181.914100000000398.7 MB/s
nextwithkey0.019154522071341.915100000000398.3 MB/s
readseq0.019862503463571.986100000000384.1 MB/s
readseq0.020029499251122.003100000000380.9 MB/s
readseq0.019865503374621.987100000000384.0 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.576634435157.62010000000035.1 MB/s
compact42758252.000042.7581
readseq0.14768018199.29363211611376.2 MB/s
readseq0.10298270126.43263211611543.6 MB/s
readseq0.10099676786.34263211611551.3 MB/s
readrandom3.219310682321.87210000000010.9 MB/s (63215468 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.250399261825.046100000000220.8 MB/s
compact35762280.000035.7621
readseq0.172581699817.191100000000321.8 MB/s
readseq0.100995376110.046100000000550.6 MB/s
readseq0.100995770910.042100000000550.8 MB/s
readrandom3.416292739341.60110000000016.2 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time339148794 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.78034 MiB/s
fillrandomwrite us/op3.39149
readrandomNumber of threads1
readrandomElapsed time384179353 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.22002 MiB/s
readrandomread us/op3.84179

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.518658866151.77610000000036.4 MB/s
compact48282146.000048.2821
readseq0.172581442110.87163207032321.6 MB/s
readseq0.11884656697.46663207032468.3 MB/s
readseq0.11984085487.51763207032465.1 MB/s
readrandom3.045328411304.49610000000011.5 MB/s (63207464 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.244409975624.392100000000226.8 MB/s
compact35421719.000035.4221
readseq0.195512379319.517100000000283.4 MB/s
readseq0.118847938611.793100000000469.0 MB/s
readseq0.119842401611.871100000000466.0 MB/s
readrandom3.210311502321.02510000000017.2 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time324764800 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.99206 MiB/s
fillrandomwrite us/op3.24765
readrandomNumber of threads1
readrandomElapsed time387979010 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.1787 MiB/s
readrandomread us/op3.87979