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_worker —
dcompact_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
| OS | Ubuntu 24.04.4 LTS |
| Kernel | 6.17.0-1022-azure |
| CPU | AMD EPYC 7763 64-Core Processor |
| Logical CPUs | 4 |
| Memory | 15.6GiB |
| /dev/shm | 7.8GiB |
| RocksDB block cache | 7.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.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (323d915d) | zipkeyonly / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom suite | 3.1GiB | 490.7MiB | 3.7GiB | 3.7GiB | 0.82x | 0.13x |
| fillseq suite | 4.7GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.45x | 0.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.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (323d915d) | zipkeyonly / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom suite peak | 917.2MiB | 841.0MiB | 4.1GiB | 4.2GiB | 0.22x | 0.20x |
| fillrandom suite readrandompeak RSS during the readrandom stage of the fillrandom suite | 124.0MiBNot include (value's) shared RSS — mmap slice as source → direct → user slice as target ^^^^^^^^^^ ^^^^^^ not zipped not touched not bring to shared RSS | 585.5MiBInclude (value's) shared RSS — mmap slice as source → decompress → user slice as target ^^^^^^^^^^ ^^^^^^^^^^ zipped read source bring mmap to shared RSS | 4.1GiBmainly block cache;
file page cache is not counted in shared/RSS, so actual RAM is larger, as the chart below shows | 4.2GiBmainly block cache;
file page cache is not counted in shared/RSS, so actual RAM is larger, as the chart below shows | 0.03x | 0.14x |
| fillseq suite peak | 506.0MiB | 1.2GiB | 6.5GiB | 6.5GiB | 0.08x | 0.19x |
| fillseq suite readrandompeak RSS during the readrandom stage of the fillseq suite | 139.5MiBNot include (value's) shared RSS — mmap slice as source → direct → user slice as target ^^^^^^^^^^ ^^^^^^ not zipped not touched not bring to shared RSS | 1.2GiBInclude (value's) shared RSS — mmap slice as source → decompress → user slice as target ^^^^^^^^^^ ^^^^^^^^^^ zipped read source bring mmap to shared RSS | 6.5GiBmainly block cache;
file page cache is not counted in shared/RSS, so actual RAM is larger, as the chart below shows | 6.5GiBmainly block cache;
file page cache is not counted in shared/RSS, so actual RAM is larger, as the chart below shows | 0.02x | 0.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.
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.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (323d915d) ops/sec | zipkeyonly / zipkeyvalue | zipkeyonly / v8.10 | zipkeyonly / master (323d915d) | zipkeyvalue / v8.10 | zipkeyvalue / master (323d915d) |
| fillrandom | 243471 | 240620 | 237708 | 235875 | 1.01x | 1.02x | 1.03x | 1.01x | 1.02x |
| compact | 1/53.0s | 1/83.9s | 1/55.5s | 1/49.6s | 1.58x | 1.05x | 0.94x | 0.66x | 0.59x |
| readseq | 11198657 | 8305965 | 4801322 | 3339092 | 1.35x | 2.33x | 3.35x | 1.73x | 2.49x |
| readrandom | 2132776 | 869648 | 160846 | 162004 | 2.45x | 13.26x | 13.16x | 5.41x | 5.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.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (323d915d) ops/sec | zipkeyonly / zipkeyvalue | zipkeyonly / v8.10 | zipkeyonly / master (323d915d) | zipkeyvalue / v8.10 | zipkeyvalue / master (323d915d) |
| fillseq | 571317 | 567653 | 884553 | 863100 | 1.01x | 0.65x | 0.66x | 0.64x | 0.66x |
| compact | 1/93.2s | 1/137.2s | 1/39.7s | 1/41.5s | 1.47x | 0.43x | 0.44x | 0.29x | 0.30x |
| readseq | 13505439 | 10165482 | 4835020 | 3424581 | 1.33x | 2.79x | 3.94x | 2.10x | 2.97x |
| readrandom | 2865646 | 684082 | 155132 | 162258 | 4.19x | 18.47x | 17.66x | 4.41x | 4.22x |
History
- 2026-08-15 13:08:09+00:00 — run_id=31880805602 — result table
- 2026-08-15 10:07:47+00:00 — run_id=31873910431 — result table
- 2026-08-14 15:45:19+00:00 — run_id=31800981467 — result table
- 2026-08-14 12:01:06+00:00 — run_id=31787128815 — result table
- 2026-08-09 17:28:01+00:00 — run_id=31324418704 — result table
- 2026-08-09 10:21:07+00:00 — run_id=31303589765 — result table
- 2026-08-09 09:29:35+00:00 — run_id=31298143542 — result table
- 2026-08-08 11:48:09+00:00 — run_id=31251963803 — result table