ToplingDB dcompact bench results

← plain home

Updated (UTC): 2026-08-15 13:08:11+00:00

Latest dcompact run

run_id=31880805602 | result table | 2026-08-15 13:08:09+00:00

raw logs: ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (323d915d)

ToplingDB bench yaml: zipkeyonly db_bench-fillrandom.yaml | zipkeyonly db_bench-fillseq.yaml | zipkeyvalue db_bench-fillrandom.yaml | zipkeyvalue db_bench-fillseq.yaml

Bench configuration (dcompact)

Write-side db_bench CPU quota: 50% (from runner_env.txt cpu_quota_write). Topling compact: dcompact_workerdcompact_worker runs outside the write cgroup and uses remaining CPU cores. RocksDB compact: compaction_service_spool — CompactionService spool + out-of-cgroup broker/worker on remaining cores.

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

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.

/dev/shm usage (disk space; after db_bench)

Allocated disk usage (IEC blocks). zipkeyonly does not compress values (speed-optimized). RocksDB uses per-level compression (L0 none, L1-L5 Snappy, L6 Zstd), corresponding to the ToplingDB zipkeyvalue variant's level_writers (lightweight upper levels, heavyweight L6). Space ratio = engine / v8.10. color sign: ToplingDB is Better/Worse.

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10RocksDB master (323d915d)zipkeyonly / v8.10 (space)zipkeyvalue / v8.10 (space)
fillrandom suite3.1GiB490.7MiB3.7GiB3.7GiB0.82x0.13x
fillseq suite4.7GiB1.2GiB3.2GiB3.2GiB1.45x0.36x

Peak RSS (RAM; during db_bench)

RSS is Resident Set Size. RocksDB block cache = half physical memory (7.8GiB). Ratio = engine / v8.10. color sign: ToplingDB is Better/Worse.

workloadToplingDB zipkeyonlyToplingDB zipkeyvalueRocksDB v8.10RocksDB master (323d915d)zipkeyonly / v8.10 (RSS)zipkeyvalue / v8.10 (RSS)
fillrandom suite peak917.2MiB841.0MiB4.1GiB4.2GiB0.22x0.20x
fillrandom suite readrandom124.0MiB585.5MiB4.1GiB4.2GiB0.03x0.14x
fillseq suite peak506.0MiB1.2GiB6.5GiB6.5GiB0.08x0.19x
fillseq suite readrandom139.5MiB1.2GiB6.5GiB6.5GiB0.02x0.19x

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 411 flush 3.2 compact 53 readseq×3 27 readrandom 47 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 250 300 350 400 450 500 550 600 Time (sec) ToplingDB zipkeyonly — fillrandom suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillseq 175 flush 0.1 compact 93 readseq×3 22 readrandom 35 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 MiB 0 50 100 150 200 250 300 350 400 Time (sec) ToplingDB zipkeyonly — fillseq suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillrandom 416 flush 1.1 compact 84 readseq×3 36 readrandom 115 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 Time (sec) ToplingDB zipkeyvalue — fillrandom suite RAM rss shared anony pagecache anony+pc
startup 2.0 fillseq 176 flush 0.1 compact 137 readseq×3 30 readrandom 146 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 MiB 0 50 100 150 200 250 300 350 400 450 500 Time (sec) ToplingDB zipkeyvalue — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom 421 compact 56 readrandom 622 flush 0.7 readseq×3 45 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 7500 8000 MiB 0 500 1000 1500 2000 Time (sec) RocksDB v8.10 — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq 113 compact 40 readseq×3 76 readrandom 645 flush 0.5 0 5000 10000 MiB 0 500 1000 Time (sec) RocksDB v8.10 — fillseq suite RAM rss shared anony pagecache anony+pc
fillrandom 424 readseq×3 63 readrandom 617 flush 0.7 compact 50 0 5000 10000 MiB 0 500 1000 1500 2000 Time (sec) RocksDB master (323d915d) — fillrandom suite RAM rss shared anony pagecache anony+pc
fillseq 116 compact 41 readseq×3 102 readrandom 616 flush 0.5 0 5000 10000 MiB 0 500 1000 Time (sec) RocksDB master (323d915d) — fillseq suite RAM rss shared anony pagecache anony+pc

Comparison: db_bench fillrandom suite (perf)

Benchmarks: fillrandom, flush, compact, readseq×3, readrandom. RocksDB uses per-level compression (L0 none, L1-L5 Snappy, L6 Zstd), corresponding to the ToplingDB zipkeyvalue variant's level_writers (lightweight upper levels, heavyweight L6). compact row shows operations/time. color sign: ToplingDB is Better/Worse.

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secRocksDB master (323d915d) ops/seczipkeyonly / zipkeyvaluezipkeyonly / v8.10zipkeyonly / master (323d915d)zipkeyvalue / v8.10zipkeyvalue / master (323d915d)
fillrandom2434712406202377082358751.01x1.02x1.03x1.01x1.02x
compact1/53.0s1/83.9s1/55.5s1/49.6s1.58x1.05x0.94x0.66x0.59x
readseq111986578305965480132233390921.35x2.33x3.35x1.73x2.49x
readrandom21327768696481608461620042.45x13.26x13.16x5.41x5.37x

Comparison: db_bench fillseq suite (perf)

Same as fillrandom. RocksDB fillseq benefits from shortcuts: trivial_move on non-overlapping SSTs; refit level skips zstd on L6: faster, larger size. Seqno-zeroing compact still runs.

benchmarkToplingDB zipkeyonly ops/secToplingDB zipkeyvalue ops/secRocksDB v8.10 ops/secRocksDB master (323d915d) ops/seczipkeyonly / zipkeyvaluezipkeyonly / v8.10zipkeyonly / master (323d915d)zipkeyvalue / v8.10zipkeyvalue / master (323d915d)
fillseq5713175676538845538631001.01x0.65x0.66x0.64x0.66x
compact1/93.2s1/137.2s1/39.7s1/41.5s1.47x0.43x0.44x0.29x0.30x
readseq1350543910165482483502034245811.33x2.79x3.94x2.10x2.97x
readrandom28656466840821551321622584.19x18.47x17.66x4.41x4.22x

History