Bench run: plain / 31787125871

← plain home | dcompact →

generated (UTC): 2026-08-14T10:14:47.940100+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 7763 64-Core Processor
Logical CPUs4
Memory15.6GiB
/dev/shm7.8GiB
RocksDB block cache7.8GiB

num=50000000 | key_size=8 | value_size=50

On-disk DB size (1.9GiB) ≤ 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)
fillrandom1.6GiB491.8MiB1.9GiB1.9GiB0.88x0.26x
fillseq2.4GiB664.6MiB1.6GiB1.6GiB1.50x0.40x

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)
fillrandom1.6GiB2.0GiB2.1GiB2.1GiB0.79x0.96x
fillrandom-omit130.5MiB148.3MiB2.1GiBn/a0.06x0.07x
fillseq1.9GiB1.9GiB3.3GiB3.3GiB0.58x0.58x
fillseq-omit122.6MiB154.2MiB3.3GiBn/a0.04x0.05x

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 47 flush 0.0 compact 28 readseq×3 6.8 readrandom 13 0 500 1000 1500 2000 2500 3000 3500 4000 MiB 0 50 100 Time (s) ToplingDB zipkeyonly — fillrandom suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillseq 22 flush 0.0 compact 21 readseq×3 5.7 readrandom 7.1 0 500 1000 1500 2000 2500 3000 MiB 0 5 10 15 20 25 30 35 40 45 50 55 60 Time (s) ToplingDB zipkeyonly — fillseq suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillrandom 45 flush 0.0 compact 39 readseq×3 9.1 readrandom 31 0 500 1000 1500 2000 2500 3000 3500 4000 MiB 0 50 100 150 200 Time (s) ToplingDB zipkeyvalue — fillrandom suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillseq 22 flush 0.0 compact 65 readseq×3 7.4 readrandom 40 0 500 1000 1500 2000 2500 3000 MiB 0 50 100 150 200 Time (s) ToplingDB zipkeyvalue — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom 75 flush 0.3 compact 30 readseq×3 10 readrandom 161 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 MiB 0 50 100 150 200 250 300 Time (s) RocksDB v8.10 — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq 13 compact 19 readseq×3 17 readrandom 166 flush 0.2 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 MiB 0 50 100 150 200 250 300 Time (s) RocksDB v8.10 — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom 84 flush 0.3 compact 23 readseq×3 13 readrandom 156 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 MiB 0 50 100 150 200 250 300 Time (s) RocksDB master (5fe22535) — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq 14 compact 21 readseq×3 22 readrandom 161 flush 0.2 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 250 300 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.1s1/39.1s1/30.4s1/22.7s1.39x1.08x0.81x0.78x0.58x
fillrandom106488911114376632595983200.96x1.61x1.78x1.68x1.86x
readrandom395072616048943101463199272.46x12.74x12.35x5.17x5.02x
readseq22052700165322151061014381047151.33x1.31x1.72x0.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/21.0s1/65.4s1/19.5s1/20.6s3.11x0.93x0.98x0.30x0.31x
fillseq22643632255365378278736809101.00x0.60x0.62x0.60x0.61x
readrandom699433812370713006093099205.65x23.27x22.57x4.12x3.99x
readseq26502408200598741070600080539521.32x2.47x3.29x1.87x2.49x

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
nextwithkey3900773639471025
readseq3840576138556833106101432.29x2.30x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / zipkeyonlyv8.10 time / zipkeyvalue
nextwithkey5149696552527188
readseq5090208651006563107060004.76x4.77x

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 time36494401 us329468833 us316009870 us0.12x
fillrandomWrite throughput44.4245 MiB/s4.92079 MiB/s5.13037 MiB/s8.66x
fillrandomwrite us/op0.3649443.294693.16010.12x
readrandomElapsed time47113204 us381297329 us354368119 us0.13x
readrandomRead throughput34.4117 MiB/s4.25192 MiB/s4.57503 MiB/s7.52x
readrandomread us/op0.4711323.812973.543680.13x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom0.939063106488946.9535000000058.9 MB/s
compact28060071.000000028.0601
readseq0.045566219456962.278500000001213.9 MB/s
readseq0.045760218525832.288500000001208.7 MB/s
readseq0.045345220527002.267500000001219.8 MB/s
readrandom0.253117395072612.65650000000138.1 MB/s (31602297 of 50000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.441624226436322.08150000000125.2 MB/s
compact21012517.000000021.0131
readseq0.037539266382381.877500000001473.4 MB/s
readseq0.037935263601571.897500000001458.1 MB/s
readseq0.037731265024081.887500000001465.9 MB/s
readrandom0.14297269943387.14950000000386.9 MB/s (50000000 of 50000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025582390883041.27950000000298.2 MB/s
nextwithkey0.025615390370951.28150000000297.8 MB/s
nextwithkey0.025635390077361.28250000000297.6 MB/s
readseq0.026010384445041.30150000000293.3 MB/s
readseq0.026118382856891.30650000000292.1 MB/s
readseq0.026036384057611.30250000000293.0 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019648508945220.98250000000388.3 MB/s
nextwithkey0.019424514818000.97150000000392.8 MB/s
nextwithkey0.019417514969650.97150000000392.9 MB/s
readseq0.019642509069580.98250000000388.4 MB/s
readseq0.019650508876320.98350000000388.2 MB/s
readseq0.019644509020860.98250000000388.4 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time329468833 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.92079 MiB/s
fillrandomwrite us/op3.29469
readrandomNumber of threads1
readrandomElapsed time381297329 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.25192 MiB/s
readrandomread us/op3.81297

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time36494401 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput44.4245 MiB/s
fillrandomwrite us/op0.364944
readrandomNumber of threads1
readrandomElapsed time47113204 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput34.4117 MiB/s
readrandomread us/op0.471132

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom0.899729111143744.9875000000061.5 MB/s
compact39120267.000000039.1201
readseq0.061131163581463.05750000000904.8 MB/s
readseq0.061098163668153.05550000000905.3 MB/s
readseq0.060487165322153.02450000000914.4 MB/s
readrandom0.623093160489431.1555000000056.1 MB/s (31606044 of 50000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.443386225536522.16950000000124.8 MB/s
compact65405711.000000065.4061
readseq0.049269202964662.463500000001122.7 MB/s
readseq0.049177203342132.459500000001124.7 MB/s
readseq0.049850200598742.493500000001109.6 MB/s
readrandom0.808360123707140.4185000000068.4 MB/s (50000000 of 50000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025717388829091.28650000000296.7 MB/s
nextwithkey0.025527391723041.27650000000298.9 MB/s
nextwithkey0.025333394710251.26750000000301.1 MB/s
readseq0.025996384642301.30050000000293.5 MB/s
readseq0.026002384562721.30050000000293.4 MB/s
readseq0.025934385568331.29750000000294.2 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019145522301760.95750000000398.5 MB/s
nextwithkey0.019228520017010.96250000000396.7 MB/s
nextwithkey0.019036525271880.95250000000400.8 MB/s
readseq0.019624509539600.98150000000388.7 MB/s
readseq0.019934501604130.99750000000382.7 MB/s
readseq0.019604510065630.98050000000389.1 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.50866325975.3855000000036.7 MB/s
compact30391067.000030.3911
readseq0.13574234294.25831606112410.6 MB/s
readseq0.095105182853.00531606112581.8 MB/s
readseq0.094106101432.97931606112586.9 MB/s
readrandom3.224310146161.2145000000010.8 MB/s (31604217 of 50000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.264378278713.21850000000209.2 MB/s
compact19457381.000019.4571
readseq0.15464964937.69650000000359.3 MB/s
readseq0.094106307314.70350000000588.0 MB/s
readseq0.093107060004.67050000000592.2 MB/s
readrandom3.327300609166.3295000000016.6 MB/s (50000000 of 50000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time316009870 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput5.13037 MiB/s
fillrandomwrite us/op3.1601
readrandomNumber of threads1
readrandomElapsed time354368119 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.57503 MiB/s
readrandomread us/op3.54368

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.67159832083.5675000000033.1 MB/s
compact22675605.000022.6761
readseq0.17557042575.54131606403315.5 MB/s
readseq0.12480605383.92131606403445.9 MB/s
readseq0.12381047153.90031606403448.3 MB/s
readrandom3.126319927156.2865000000011.2 MB/s (31602618 of 50000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.272368091013.58450000000203.6 MB/s
compact20560036.000020.5601
readseq0.19551207179.76450000000283.2 MB/s
readseq0.12778941806.33450000000436.7 MB/s
readseq0.12480539526.20850000000445.5 MB/s
readrandom3.227309920161.3325000000017.1 MB/s (50000000 of 50000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time325850414 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput4.97543 MiB/s
fillrandomwrite us/op3.2585
readrandomNumber of threads1
readrandomElapsed time369537661 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.38723 MiB/s
readrandomread us/op3.69538