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
| OS | Ubuntu 24.04.4 LTS |
| Kernel | 6.17.0-1022-azure |
| CPU | AMD EPYC 9V74 80-Core Processor |
| Logical CPUs | 4 |
| Memory | 15.6GiB |
| /dev/shm | 7.8GiB |
| RocksDB block cache | 7.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.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (5fe22535) | zipkeyonly / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom | 3.1GiB | 755.5MiB | 3.7GiB | 3.7GiB | 0.84x | 0.20x |
| fillseq | 4.8GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.48x | 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; <1 = less RSS, >1 = more RSS. RocksDB omit columns are derived-from-main (no separate omit pass).
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 (derived-from-main) | RocksDB master (5fe22535) | zipkeyonly / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom | 2.4GiB | 2.1GiB | 4.1GiB | 4.2GiB | 0.59x | 0.51x |
| fillrandom-omit | 142.6MiB | 179.5MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.4GiB | 6.5GiB | 0.29x | 0.29x |
| fillseq-omit | 128.7MiB | 189.9MiB | 6.4GiB | n/a | 0.02x | 0.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.
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.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/28.3s | 1/78.6s | 1/42.8s | 1/48.3s | 2.78x | 1.51x | 1.71x | 0.54x | 0.61x |
| fillrandom | 990015 | 994519 | 634435 | 658866 | 1.00x | 1.56x | 1.50x | 1.57x | 1.51x |
| readrandom | 3379668 | 1556629 | 310682 | 328411 | 2.17x | 10.88x | 10.29x | 5.01x | 4.74x |
| readseq | 23480081 | 17281839 | 9967678 | 8408548 | 1.36x | 1.49x | 1.76x | 1.10x | 1.30x |
Comparison: db_bench fillseq suite (perf)
Same as fillrandom. Watch compact / readseq / readrandom cost for minDictZip=10 vs space savings above.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/38.7s | 1/125.4s | 1/35.8s | 1/35.4s | 3.24x | 0.92x | 0.91x | 0.29x | 0.28x |
| fillseq | 2337050 | 2353582 | 3992618 | 4099756 | 0.99x | 0.59x | 0.57x | 0.59x | 0.57x |
| readrandom | 6554511 | 1158283 | 292739 | 311502 | 5.66x | 22.39x | 21.04x | 3.96x | 3.72x |
| readseq | 30253744 | 20720505 | 9957709 | 8424016 | 1.46x | 3.04x | 3.59x | 2.08x | 2.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
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 38956465 | 38645535 | — | — | — |
| readseq | 36966991 | 36914072 | 9967678 | 2.34x | 2.34x |
fillseq-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 52267494 | 52207134 | — | — | — |
| readseq | 50320668 | 50337462 | 9957709 | 5.05x | 5.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.
| benchmark | metric | CSPP (ToplingDB) | skiplist (ToplingDB) | skiplist (RocksDB v8.10) | CSPP / v8.10 |
| fillrandom | Elapsed time | 38226203 us | 352986097 us | 339148794 us | 0.11x |
| fillrandom | Write throughput | 42.4119 MiB/s | 4.59295 MiB/s | 4.78034 MiB/s | 8.87x |
| fillrandom | write us/op | 0.382262 | 3.52986 | 3.39149 | 0.11x |
| readrandom | Elapsed time | 55348647 us | 399158336 us | 384179353 us | 0.14x |
| readrandom | Read throughput | 29.2915 MiB/s | 4.06166 MiB/s | 4.22002 MiB/s | 6.94x |
| readrandom | read us/op | 0.553486 | 3.99158 | 3.84179 | 0.14x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.010080 | 990015 | 101.009 | 100000000 | 54.8 MB/s |
| compact | 28288803.000000 | 0 | 28.289 | 1 | |
| readseq | 0.042303 | 23638476 | 4.230 | 100000000 | 1307.5 MB/s |
| readseq | 0.042406 | 23581435 | 4.241 | 100000000 | 1304.4 MB/s |
| readseq | 0.042589 | 23480081 | 4.259 | 100000000 | 1298.8 MB/s |
| readrandom | 0.295886 | 3379668 | 29.589 | 100000000 | 118.2 MB/s (63216868 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.427889 | 2337050 | 42.789 | 100000000 | 129.3 MB/s |
| compact | 38727584.000000 | 0 | 38.728 | 1 | |
| readseq | 0.032967 | 30333280 | 3.297 | 100000000 | 1677.8 MB/s |
| readseq | 0.032482 | 30785997 | 3.248 | 100000000 | 1702.9 MB/s |
| readseq | 0.033054 | 30253744 | 3.305 | 100000000 | 1673.4 MB/s |
| readrandom | 0.152566 | 6554511 | 15.257 | 100000000 | 362.6 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025959 | 38521973 | 2.596 | 100000000 | 293.9 MB/s |
| nextwithkey | 0.025707 | 38899214 | 2.571 | 100000000 | 296.8 MB/s |
| nextwithkey | 0.025669 | 38956465 | 2.567 | 100000000 | 297.2 MB/s |
| readseq | 0.026591 | 37605308 | 2.659 | 100000000 | 286.9 MB/s |
| readseq | 0.027046 | 36972581 | 2.705 | 100000000 | 282.1 MB/s |
| readseq | 0.027050 | 36966991 | 2.705 | 100000000 | 282.0 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019194 | 52097578 | 1.919 | 100000000 | 397.5 MB/s |
| nextwithkey | 0.019146 | 52229030 | 1.915 | 100000000 | 398.5 MB/s |
| nextwithkey | 0.019132 | 52267494 | 1.913 | 100000000 | 398.8 MB/s |
| readseq | 0.019847 | 50384357 | 1.985 | 100000000 | 384.4 MB/s |
| readseq | 0.019870 | 50326113 | 1.987 | 100000000 | 384.0 MB/s |
| readseq | 0.019872 | 50320668 | 1.987 | 100000000 | 383.9 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 352986097 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.59295 MiB/s |
| fillrandom | write us/op | 3.52986 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 399158336 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.06166 MiB/s |
| readrandom | read us/op | 3.99158 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 38226203 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 42.4119 MiB/s |
| fillrandom | write us/op | 0.382262 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 55348647 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 29.2915 MiB/s |
| readrandom | read us/op | 0.553486 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.005510 | 994519 | 100.551 | 100000000 | 55.0 MB/s |
| compact | 78626955.000000 | 0 | 78.627 | 1 | |
| readseq | 0.058174 | 17189759 | 5.817 | 100000000 | 950.8 MB/s |
| readseq | 0.057826 | 17293109 | 5.783 | 100000000 | 956.5 MB/s |
| readseq | 0.057864 | 17281839 | 5.786 | 100000000 | 955.9 MB/s |
| readrandom | 0.642413 | 1556629 | 64.241 | 100000000 | 54.4 MB/s (63211854 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.424884 | 2353582 | 42.488 | 100000000 | 130.2 MB/s |
| compact | 125406571.000000 | 0 | 125.407 | 1 | |
| readseq | 0.052090 | 19197347 | 5.209 | 100000000 | 1061.9 MB/s |
| readseq | 0.048168 | 20760438 | 4.817 | 100000000 | 1148.3 MB/s |
| readseq | 0.048261 | 20720505 | 4.826 | 100000000 | 1146.1 MB/s |
| readrandom | 0.863346 | 1158283 | 86.335 | 100000000 | 64.1 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025683 | 38935685 | 2.568 | 100000000 | 297.1 MB/s |
| nextwithkey | 0.025602 | 39057953 | 2.560 | 100000000 | 298.0 MB/s |
| nextwithkey | 0.025876 | 38645535 | 2.588 | 100000000 | 294.8 MB/s |
| readseq | 0.027072 | 36938152 | 2.707 | 100000000 | 281.8 MB/s |
| readseq | 0.027079 | 36928399 | 2.708 | 100000000 | 281.7 MB/s |
| readseq | 0.027089 | 36914072 | 2.709 | 100000000 | 281.6 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019190 | 52110175 | 1.919 | 100000000 | 397.6 MB/s |
| nextwithkey | 0.019135 | 52259218 | 1.914 | 100000000 | 398.7 MB/s |
| nextwithkey | 0.019154 | 52207134 | 1.915 | 100000000 | 398.3 MB/s |
| readseq | 0.019862 | 50346357 | 1.986 | 100000000 | 384.1 MB/s |
| readseq | 0.020029 | 49925112 | 2.003 | 100000000 | 380.9 MB/s |
| readseq | 0.019865 | 50337462 | 1.987 | 100000000 | 384.0 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.576 | 634435 | 157.620 | 100000000 | 35.1 MB/s |
| compact | 42758252.000 | 0 | 42.758 | 1 | |
| readseq | 0.147 | 6801819 | 9.293 | 63211611 | 376.2 MB/s |
| readseq | 0.102 | 9827012 | 6.432 | 63211611 | 543.6 MB/s |
| readseq | 0.100 | 9967678 | 6.342 | 63211611 | 551.3 MB/s |
| readrandom | 3.219 | 310682 | 321.872 | 100000000 | 10.9 MB/s (63215468 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.250 | 3992618 | 25.046 | 100000000 | 220.8 MB/s |
| compact | 35762280.000 | 0 | 35.762 | 1 | |
| readseq | 0.172 | 5816998 | 17.191 | 100000000 | 321.8 MB/s |
| readseq | 0.100 | 9953761 | 10.046 | 100000000 | 550.6 MB/s |
| readseq | 0.100 | 9957709 | 10.042 | 100000000 | 550.8 MB/s |
| readrandom | 3.416 | 292739 | 341.601 | 100000000 | 16.2 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 339148794 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.78034 MiB/s |
| fillrandom | write us/op | 3.39149 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 384179353 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.22002 MiB/s |
| readrandom | read us/op | 3.84179 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.518 | 658866 | 151.776 | 100000000 | 36.4 MB/s |
| compact | 48282146.000 | 0 | 48.282 | 1 | |
| readseq | 0.172 | 5814421 | 10.871 | 63207032 | 321.6 MB/s |
| readseq | 0.118 | 8465669 | 7.466 | 63207032 | 468.3 MB/s |
| readseq | 0.119 | 8408548 | 7.517 | 63207032 | 465.1 MB/s |
| readrandom | 3.045 | 328411 | 304.496 | 100000000 | 11.5 MB/s (63207464 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.244 | 4099756 | 24.392 | 100000000 | 226.8 MB/s |
| compact | 35421719.000 | 0 | 35.422 | 1 | |
| readseq | 0.195 | 5123793 | 19.517 | 100000000 | 283.4 MB/s |
| readseq | 0.118 | 8479386 | 11.793 | 100000000 | 469.0 MB/s |
| readseq | 0.119 | 8424016 | 11.871 | 100000000 | 466.0 MB/s |
| readrandom | 3.210 | 311502 | 321.025 | 100000000 | 17.2 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 324764800 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.99206 MiB/s |
| fillrandom | write us/op | 3.24765 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 387979010 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.1787 MiB/s |
| readrandom | read us/op | 3.87979 |