Bench run: plain / 31234948599
← plain home |
dcompact →
generated (UTC): 2026-08-08T03:43:31.692384+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-1020-azure |
| CPU | AMD EPYC 7763 64-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 (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.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (5fe22535) | Topling / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom | 3.0GiB | 582.8MiB | 3.7GiB | 3.7GiB | 0.82x | 0.15x |
| fillseq | 4.8GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.48x | 0.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).
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 (derived-from-main) | RocksDB master (5fe22535) | Topling / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom | 2.1GiB | 2.1GiB | 4.1GiB | 4.2GiB | 0.51x | 0.52x |
| fillrandom-omit | 142.3MiB | 180.6MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.4GiB | 6.5GiB | 0.29x | 0.30x |
| fillseq-omit | 129.2MiB | 193.1MiB | 6.4GiB | n/a | 0.02x | 0.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).
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.
| 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/27.2s | 1/83.7s | 1/66.9s | 1/50.8s | 3.08x | 2.46x | 1.87x | 0.80x | 0.61x |
| fillrandom | 1020458 | 984707 | 676549 | 632686 | 1.04x | 1.51x | 1.61x | 1.46x | 1.56x |
| readrandom | 4899836 | 1784437 | 338481 | 348085 | 2.75x | 14.48x | 14.08x | 5.27x | 5.13x |
| readseq | 22093022 | 16733181 | 10631529 | 8195692 | 1.32x | 1.31x | 1.70x | 0.99x | 1.29x |
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/39.2s | 1/123.0s | 1/37.5s | 1/40.7s | 3.14x | 0.96x | 1.04x | 0.30x | 0.33x |
| fillseq | 2232398 | 2215326 | 3772755 | 3694348 | 1.01x | 0.59x | 0.60x | 0.59x | 0.60x |
| readrandom | 6802599 | 1349312 | 334013 | 343667 | 5.04x | 20.37x | 19.79x | 4.04x | 3.93x |
| readseq | 26391136 | 20384180 | 10847031 | 8180861 | 1.29x | 2.43x | 3.23x | 1.88x | 2.49x |
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
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / Topling | v8.10 time / zipkeyvalue |
| nextwithkey | 39237967 | 39489838 | — | — | — |
| readseq | 38194281 | 38753936 | 10631529 | 2.27x | 2.30x |
fillseq-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / Topling | v8.10 time / zipkeyvalue |
| nextwithkey | 51565077 | 51716844 | — | — | — |
| readseq | 50440929 | 50348892 | 10847031 | 4.65x | 4.64x |
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 | 32710072 us | 254472131 us | 269265613 us | 0.12x |
| fillrandom | Write throughput | 49.5641 MiB/s | 6.37102 MiB/s | 6.02099 MiB/s | 8.23x |
| fillrandom | write us/op | 0.327101 | 2.54472 | 2.69266 | 0.12x |
| readrandom | Elapsed time | 43023290 us | 326108791 us | 324103709 us | 0.13x |
| readrandom | Read throughput | 37.683 MiB/s | 4.97149 MiB/s | 5.00225 MiB/s | 7.53x |
| readrandom | read us/op | 0.430233 | 3.26109 | 3.24104 | 0.13x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.979951 | 1020458 | 97.995 | 100000000 | 56.4 MB/s |
| compact | 27180394.000000 | 0 | 27.180 | 1 | |
| readseq | 0.044679 | 22381634 | 4.468 | 100000000 | 1238.0 MB/s |
| readseq | 0.045629 | 21915939 | 4.563 | 100000000 | 1212.2 MB/s |
| readseq | 0.045263 | 22093022 | 4.526 | 100000000 | 1222.0 MB/s |
| readrandom | 0.204088 | 4899836 | 20.409 | 100000000 | 171.3 MB/s (63208569 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.447948 | 2232398 | 44.795 | 100000000 | 123.5 MB/s |
| compact | 39193047.000000 | 0 | 39.193 | 1 | |
| readseq | 0.037866 | 26408713 | 3.787 | 100000000 | 1460.7 MB/s |
| readseq | 0.037967 | 26338426 | 3.797 | 100000000 | 1456.9 MB/s |
| readseq | 0.037891 | 26391136 | 3.789 | 100000000 | 1459.8 MB/s |
| readrandom | 0.147002 | 6802599 | 14.700 | 100000000 | 376.3 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025685 | 38932123 | 2.569 | 100000000 | 297.0 MB/s |
| nextwithkey | 0.025559 | 39124824 | 2.556 | 100000000 | 298.5 MB/s |
| nextwithkey | 0.025485 | 39237967 | 2.549 | 100000000 | 299.4 MB/s |
| readseq | 0.026152 | 38236852 | 2.615 | 100000000 | 291.7 MB/s |
| readseq | 0.026048 | 38389779 | 2.605 | 100000000 | 292.9 MB/s |
| readseq | 0.026182 | 38194281 | 2.618 | 100000000 | 291.4 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019535 | 51188861 | 1.954 | 100000000 | 390.5 MB/s |
| nextwithkey | 0.019386 | 51582579 | 1.939 | 100000000 | 393.5 MB/s |
| nextwithkey | 0.019392 | 51565077 | 1.939 | 100000000 | 393.4 MB/s |
| readseq | 0.019826 | 50436833 | 1.983 | 100000000 | 384.8 MB/s |
| readseq | 0.019836 | 50411864 | 1.984 | 100000000 | 384.6 MB/s |
| readseq | 0.019825 | 50440929 | 1.983 | 100000000 | 384.8 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 254472131 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.37102 MiB/s |
| fillrandom | write us/op | 2.54472 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 326108791 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.97149 MiB/s |
| readrandom | read us/op | 3.26109 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 32710072 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 49.5641 MiB/s |
| fillrandom | write us/op | 0.327101 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 43023290 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 37.683 MiB/s |
| readrandom | read us/op | 0.430233 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.015530 | 984707 | 101.553 | 100000000 | 54.5 MB/s |
| compact | 83714533.000000 | 0 | 83.715 | 1 | |
| readseq | 0.059945 | 16681969 | 5.994 | 100000000 | 922.7 MB/s |
| readseq | 0.059449 | 16820826 | 5.945 | 100000000 | 930.4 MB/s |
| readseq | 0.059761 | 16733181 | 5.976 | 100000000 | 925.6 MB/s |
| readrandom | 0.560400 | 1784437 | 56.040 | 100000000 | 62.4 MB/s (63209218 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.451400 | 2215326 | 45.140 | 100000000 | 122.5 MB/s |
| compact | 122975854.000000 | 0 | 122.976 | 1 | |
| readseq | 0.049051 | 20386960 | 4.905 | 100000000 | 1127.7 MB/s |
| readseq | 0.048275 | 20714591 | 4.828 | 100000000 | 1145.8 MB/s |
| readseq | 0.049057 | 20384180 | 4.906 | 100000000 | 1127.5 MB/s |
| readrandom | 0.741118 | 1349312 | 74.112 | 100000000 | 74.6 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025483 | 39240584 | 2.548 | 100000000 | 299.4 MB/s |
| nextwithkey | 0.025238 | 39621692 | 2.524 | 100000000 | 302.3 MB/s |
| nextwithkey | 0.025322 | 39489838 | 2.532 | 100000000 | 301.3 MB/s |
| readseq | 0.025945 | 38543042 | 2.595 | 100000000 | 294.1 MB/s |
| readseq | 0.025773 | 38800023 | 2.577 | 100000000 | 296.0 MB/s |
| readseq | 0.025803 | 38753936 | 2.580 | 100000000 | 295.7 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019366 | 51634809 | 1.937 | 100000000 | 393.9 MB/s |
| nextwithkey | 0.019374 | 51613436 | 1.937 | 100000000 | 393.8 MB/s |
| nextwithkey | 0.019335 | 51716844 | 1.934 | 100000000 | 394.6 MB/s |
| readseq | 0.019962 | 50095431 | 1.996 | 100000000 | 382.2 MB/s |
| readseq | 0.019855 | 50363244 | 1.986 | 100000000 | 384.2 MB/s |
| readseq | 0.019861 | 50348892 | 1.986 | 100000000 | 384.1 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.478 | 676549 | 147.809 | 100000000 | 37.4 MB/s |
| compact | 66926606.000 | 0 | 66.927 | 1 | |
| readseq | 0.133 | 7516410 | 8.410 | 63213545 | 415.8 MB/s |
| readseq | 0.094 | 10629545 | 5.947 | 63213545 | 588.0 MB/s |
| readseq | 0.094 | 10631529 | 5.946 | 63213545 | 588.1 MB/s |
| readrandom | 2.954 | 338481 | 295.437 | 100000000 | 11.8 MB/s (63213971 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.265 | 3772755 | 26.506 | 100000000 | 208.7 MB/s |
| compact | 37490075.000 | 0 | 37.490 | 1 | |
| readseq | 0.158 | 6329229 | 15.800 | 100000000 | 350.1 MB/s |
| readseq | 0.093 | 10803415 | 9.256 | 100000000 | 597.6 MB/s |
| readseq | 0.092 | 10847031 | 9.219 | 100000000 | 600.0 MB/s |
| readrandom | 2.994 | 334013 | 299.389 | 100000000 | 18.5 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 269265613 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.02099 MiB/s |
| fillrandom | write us/op | 2.69266 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 324103709 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 5.00225 MiB/s |
| readrandom | read us/op | 3.24104 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.581 | 632686 | 158.056 | 100000000 | 35.0 MB/s |
| compact | 50771898.000 | 0 | 50.772 | 1 | |
| readseq | 0.169 | 5928874 | 10.661 | 63209873 | 327.9 MB/s |
| readseq | 0.122 | 8169284 | 7.738 | 63209873 | 451.9 MB/s |
| readseq | 0.122 | 8195692 | 7.713 | 63209873 | 453.3 MB/s |
| readrandom | 2.873 | 348085 | 287.286 | 100000000 | 12.2 MB/s (63212867 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.271 | 3694348 | 27.068 | 100000000 | 204.3 MB/s |
| compact | 40662594.000 | 0 | 40.663 | 1 | |
| readseq | 0.193 | 5194666 | 19.251 | 100000000 | 287.3 MB/s |
| readseq | 0.122 | 8195044 | 12.202 | 100000000 | 453.3 MB/s |
| readseq | 0.122 | 8180861 | 12.224 | 100000000 | 452.5 MB/s |
| readrandom | 2.910 | 343667 | 290.979 | 100000000 | 19.0 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 263881271 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.14385 MiB/s |
| fillrandom | write us/op | 2.63881 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 319378405 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 5.07626 MiB/s |
| readrandom | read us/op | 3.19378 |