Bench run: plain / 31220758079

← plain home | dcompact →

generated (UTC): 2026-08-07T23:42:24.338820+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.2GiB654.7MiB3.7GiB3.7GiB0.86x0.17x
fillseq4.7GiB1.2GiB3.2GiB3.2GiB1.46x0.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.5GiB2.9GiB4.1GiB4.2GiB0.61x0.71x
fillrandom-omit141.8MiB180.6MiB4.1GiBn/a0.03x0.04x
fillseq1.9GiB1.9GiB6.4GiB6.5GiB0.29x0.30x
fillseq-omit130.6MiB190.4MiB6.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).

ToplingDB zipkeyonly — fillrandom suite RSS 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) rss shared anony pagecache anony+pc
ToplingDB zipkeyonly — fillseq suite RSS 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) rss shared anony pagecache anony+pc
ToplingDB zipkeyvalue — fillrandom suite RSS 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) rss shared anony pagecache anony+pc
ToplingDB zipkeyvalue — fillseq suite RSS 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) rss shared anony pagecache anony+pc
RocksDB v8.10 — fillrandom suite RSS 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) rss shared anony pagecache anony+pc
RocksDB v8.10 — fillseq suite RSS fillseq flush compact readseq readseq readseq readrandom 0 5000 10000 MiB 0 50 100 150 200 250 300 350 400 450 500 Time (s) rss shared anony pagecache anony+pc
RocksDB master (5fe22535) — fillrandom suite RSS 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) rss shared anony pagecache anony+pc
RocksDB master (5fe22535) — fillseq suite RSS fillseq flush compact readseq readseq readseq readrandom 0 5000 10000 MiB 0 50 100 150 200 250 300 350 400 450 500 Time (s) 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/31.3s1/76.6s1/51.8s1/64.0s2.44x1.65x2.04x0.68x0.84x
fillrandom9904959576676657376514621.03x1.49x1.52x1.44x1.47x
readrandom403173216387703362133441502.46x11.99x11.72x4.87x4.76x
readseq22481311165702221058817880351751.36x1.34x1.77x0.99x1.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/39.3s1/123.5s1/37.7s1/40.4s3.14x0.96x1.03x0.31x0.33x
fillseq21967932213142372693737552400.99x0.59x0.58x0.59x0.59x
readrandom677319813580813183303279394.99x21.28x20.65x4.27x4.14x
readseq26307647204475511053949280775321.29x2.50x3.26x1.94x2.53x

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
nextwithkey3927391939658854
readseq3841405238646626105881782.29x2.31x

fillseq-omit / scan

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secv8.10 time / Toplingv8.10 time / zipkeyvalue
nextwithkey5222229352589977
readseq5094251251083898105394924.83x4.85x

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 time34306635 us278349369 us276906710 us0.12x
fillrandomWrite throughput47.2575 MiB/s5.8245 MiB/s5.85485 MiB/s8.07x
fillrandomwrite us/op0.3430662.783492.769070.12x
readrandomElapsed time47773532 us362375449 us337011948 us0.14x
readrandomRead throughput33.9361 MiB/s4.47394 MiB/s4.81065 MiB/s7.05x
readrandomread us/op0.4777353.623753.370120.14x

Per-engine details

ToplingDB zipkeyonly

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.009596990495100.96010000000054.8 MB/s
compact31317957.000000031.3181
readseq0.044777223328194.4781000000001235.3 MB/s
readseq0.044796223229084.4801000000001234.7 MB/s
readseq0.044481224813114.4481000000001243.5 MB/s
readrandom0.248032403173224.803100000000141.0 MB/s (63213768 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.455209219679345.521100000000121.5 MB/s
compact39338461.000000039.3391
readseq0.037721265101643.7721000000001466.4 MB/s
readseq0.038232261557573.8231000000001446.8 MB/s
readseq0.038011263076473.8011000000001455.2 MB/s
readrandom0.147641677319814.764100000000374.6 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025758388222562.576100000000296.2 MB/s
nextwithkey0.025473392554652.547100000000299.5 MB/s
nextwithkey0.025462392739192.546100000000299.6 MB/s
readseq0.026024384246502.602100000000293.2 MB/s
readseq0.026034384111602.603100000000293.1 MB/s
readseq0.026031384140522.603100000000293.1 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019124522882651.912100000000398.9 MB/s
nextwithkey0.019171521608131.917100000000398.0 MB/s
nextwithkey0.019148522222931.915100000000398.4 MB/s
readseq0.019636509243011.964100000000388.5 MB/s
readseq0.019619509680611.962100000000388.9 MB/s
readseq0.019629509425121.963100000000388.7 MB/s

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time278349369 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput5.8245 MiB/s
fillrandomwrite us/op2.78349
readrandomNumber of threads1
readrandomElapsed time362375449 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.47394 MiB/s
readrandomread us/op3.62375

memtablerep_bench (cspp, ToplingDB only)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time34306635 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput47.2575 MiB/s
fillrandomwrite us/op0.343066
readrandomNumber of threads1
readrandomElapsed time47773532 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput33.9361 MiB/s
readrandomread us/op0.477735

ToplingDB zipkeyvalue

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.044202957667104.42010000000053.0 MB/s
compact76558159.000000076.5581
readseq0.060787164507186.079100000000909.9 MB/s
readseq0.059968166753765.997100000000922.4 MB/s
readseq0.060349165702226.035100000000916.6 MB/s
readrandom0.610213163877061.02110000000057.3 MB/s (63224087 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.451846221314245.185100000000122.4 MB/s
compact123547755.0000000123.5481
readseq0.048953204275364.8951000000001129.9 MB/s
readseq0.048927204384914.8931000000001130.5 MB/s
readseq0.048905204475514.8911000000001131.0 MB/s
readrandom0.736332135808173.63310000000075.1 MB/s (100000000 of 100000000 found)

db_bench omit lazy-load (fillrandom DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.025292395369122.529100000000301.6 MB/s
nextwithkey0.025303395203962.530100000000301.5 MB/s
nextwithkey0.025214396588542.522100000000302.6 MB/s
readseq0.025773387998732.577100000000296.0 MB/s
readseq0.025933385596872.593100000000294.2 MB/s
readseq0.025875386466262.588100000000294.9 MB/s

db_bench omit lazy-load (fillseq DB)

benchmarkmicros/opops/secsecondsoperationsextra
nextwithkey0.019041525169811.904100000000400.7 MB/s
nextwithkey0.019014525931021.901100000000401.3 MB/s
nextwithkey0.019014525899771.902100000000401.2 MB/s
readseq0.019565511107381.957100000000389.9 MB/s
readseq0.019588510499441.959100000000389.5 MB/s
readseq0.019575510838981.958100000000389.7 MB/s

RocksDB v8.10

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.502665737150.20910000000036.8 MB/s
compact51757514.000051.7581
readseq0.13375193038.40763216053415.9 MB/s
readseq0.095105817855.97463216053585.3 MB/s
readseq0.094105881785.97063216053585.7 MB/s
readrandom2.974336213297.43010000000011.8 MB/s (63213395 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.268372693726.832100000000206.1 MB/s
compact37736553.000037.7371
readseq0.158634791515.753100000000351.1 MB/s
readseq0.096104314499.586100000000577.0 MB/s
readseq0.095105394929.488100000000583.0 MB/s
readrandom3.141318330314.13910000000017.6 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time276906710 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput5.85485 MiB/s
fillrandomwrite us/op2.76907
readrandomNumber of threads1
readrandomElapsed time337011948 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.81065 MiB/s
readrandomread us/op3.37012

RocksDB master (5fe22535)

db_bench (fillrandom+compact+readseq/readrandom)

benchmarkmicros/opops/secsecondsoperationsextra
fillrandom1.535651462153.50110000000036.0 MB/s
compact63994535.000063.9951
readseq0.170587371810.76163207078324.9 MB/s
readseq0.12480752747.82763207078446.7 MB/s
readseq0.12480351757.86663207078444.5 MB/s
readrandom2.906344150290.57110000000012.0 MB/s (63211985 of 100000000 found)

db_bench (fillseq suite)

benchmarkmicros/opops/secsecondsoperationsextra
fillseq0.266375524026.629100000000207.7 MB/s
compact40436697.000040.4371
readseq0.195511644619.545100000000283.0 MB/s
readseq0.124808967412.361100000000447.5 MB/s
readseq0.124807753212.380100000000446.8 MB/s
readrandom3.049327939304.93510000000018.1 MB/s (100000000 of 100000000 found)

memtablerep_bench (skiplist)

benchmarkmetricvalue
fillrandomNumber of threads1
fillrandomElapsed time277221374 us
fillrandomTotal bytes written1621.25 MiB
fillrandomWrite throughput5.8482 MiB/s
fillrandomwrite us/op2.77221
readrandomNumber of threads1
readrandomElapsed time339992443 us
readrandomTotal bytes read1621.25 MiB
readrandomRead throughput4.76848 MiB/s
readrandomread us/op3.39992