Bench run: plain / 31199586368
← plain home |
dcompact →
generated (UTC): 2026-08-07T17:54:24.673791+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 9V74 80-Core Processor |
| Logical CPUs | 4 |
| Memory | 15.6GiB |
| /dev/shm | 7.8GiB |
| RocksDB block cache | 7.8GiB |
On-disk DB size (1.9GiB) ≤ block cache (7.8GiB) — cache can hold the entire dataset.
/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 | 1.7GiB | 320.7MiB | 1.9GiB | 1.9GiB | 0.92x | 0.17x |
| fillseq | 2.4GiB | 670.3MiB | 1.6GiB | 1.6GiB | 1.51x | 0.41x |
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 | 1.9GiB | 1.9GiB | 2.1GiB | 2.1GiB | 0.91x | 0.89x |
| fillrandom-omit | 130.6MiB | 148.6MiB | 2.1GiB | n/a | 0.06x | 0.07x |
| fillseq | 1.9GiB | 1.9GiB | 3.2GiB | 3.3GiB | 0.57x | 0.58x |
| fillseq-omit | 124.9MiB | 151.5MiB | 3.2GiB | n/a | 0.04x | 0.05x |
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/29.3s | 1/39.2s | 1/27.1s | 1/22.2s | 1.34x | 0.93x | 0.76x | 0.69x | 0.57x |
| fillrandom | 1137336 | 1127904 | 747396 | 637495 | 1.01x | 1.52x | 1.78x | 1.51x | 1.77x |
| readrandom | 5325752 | 1499588 | 373634 | 355908 | 3.55x | 14.25x | 14.96x | 4.01x | 4.21x |
| readseq | 24018703 | 17025461 | 9977899 | 8475599 | 1.41x | 1.52x | 1.79x | 1.08x | 1.27x |
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/19.4s | 1/62.2s | 1/17.9s | 1/17.7s | 3.20x | 0.92x | 0.91x | 0.29x | 0.29x |
| fillseq | 2441627 | 2447427 | 3991269 | 4107294 | 1.00x | 0.61x | 0.59x | 0.61x | 0.60x |
| readrandom | 6762903 | 1443711 | 345580 | 320475 | 4.68x | 19.57x | 21.10x | 4.18x | 4.50x |
| readseq | 30078281 | 20613498 | 9964444 | 8474468 | 1.46x | 3.02x | 3.55x | 2.07x | 2.43x |
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 | 38948605 | 38304225 | — | — | — |
| readseq | 36652403 | 35984322 | 9977899 | 2.32x | 2.28x |
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 | 52095163 | 40918505 | — | — | — |
| readseq | 50328038 | 50315528 | 9964444 | 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 | 37194999 us | 331849192 us | 349127895 us | 0.11x |
| fillrandom | Write throughput | 43.5878 MiB/s | 4.88549 MiB/s | 4.6437 MiB/s | 9.39x |
| fillrandom | write us/op | 0.37195 | 3.31849 | 3.49128 | 0.11x |
| readrandom | Elapsed time | 52628013 us | 375218931 us | 396955433 us | 0.13x |
| readrandom | Read throughput | 30.8058 MiB/s | 4.3208 MiB/s | 4.0842 MiB/s | 7.54x |
| readrandom | read us/op | 0.52628 | 3.75219 | 3.96955 | 0.13x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.879244 | 1137336 | 43.962 | 50000000 | 62.9 MB/s |
| compact | 29300364.000000 | 0 | 29.300 | 1 | |
| readseq | 0.041118 | 24319846 | 2.056 | 50000000 | 1345.2 MB/s |
| readseq | 0.041594 | 24041709 | 2.080 | 50000000 | 1329.8 MB/s |
| readseq | 0.041633 | 24018703 | 2.082 | 50000000 | 1328.5 MB/s |
| readrandom | 0.187765 | 5325752 | 9.388 | 50000000 | 186.2 MB/s (31599103 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.409562 | 2441627 | 20.478 | 50000000 | 135.1 MB/s |
| compact | 19430184.000000 | 0 | 19.430 | 1 | |
| readseq | 0.032447 | 30818806 | 1.622 | 50000000 | 1704.7 MB/s |
| readseq | 0.032915 | 30380011 | 1.646 | 50000000 | 1680.4 MB/s |
| readseq | 0.033246 | 30078281 | 1.662 | 50000000 | 1663.7 MB/s |
| readrandom | 0.147864 | 6762903 | 7.393 | 50000000 | 374.1 MB/s (50000000 of 50000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026209 | 38152561 | 1.311 | 50000000 | 291.1 MB/s |
| nextwithkey | 0.025656 | 38975444 | 1.283 | 50000000 | 297.4 MB/s |
| nextwithkey | 0.025674 | 38948605 | 1.284 | 50000000 | 297.2 MB/s |
| readseq | 0.026590 | 37606765 | 1.330 | 50000000 | 286.9 MB/s |
| readseq | 0.027120 | 36871307 | 1.356 | 50000000 | 281.3 MB/s |
| readseq | 0.027282 | 36652403 | 1.364 | 50000000 | 279.6 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019241 | 51969541 | 0.962 | 50000000 | 396.5 MB/s |
| nextwithkey | 0.019168 | 52167725 | 0.958 | 50000000 | 398.0 MB/s |
| nextwithkey | 0.019194 | 52095163 | 0.960 | 50000000 | 397.5 MB/s |
| readseq | 0.019877 | 50305809 | 0.994 | 50000000 | 383.8 MB/s |
| readseq | 0.019876 | 50308846 | 0.994 | 50000000 | 383.8 MB/s |
| readseq | 0.019868 | 50328038 | 0.993 | 50000000 | 384.0 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 331849192 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.88549 MiB/s |
| fillrandom | write us/op | 3.31849 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 375218931 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.3208 MiB/s |
| readrandom | read us/op | 3.75219 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 37194999 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 43.5878 MiB/s |
| fillrandom | write us/op | 0.37195 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 52628013 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 30.8058 MiB/s |
| readrandom | read us/op | 0.52628 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.886534 | 1127904 | 44.330 | 50000000 | 62.4 MB/s |
| compact | 39191205.000000 | 0 | 39.191 | 1 | |
| readseq | 0.059392 | 16837035 | 2.970 | 50000000 | 931.3 MB/s |
| readseq | 0.058951 | 16962918 | 2.948 | 50000000 | 938.3 MB/s |
| readseq | 0.058735 | 17025461 | 2.937 | 50000000 | 941.7 MB/s |
| readrandom | 0.666848 | 1499588 | 33.342 | 50000000 | 52.4 MB/s (31603628 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.408592 | 2447427 | 20.430 | 50000000 | 135.4 MB/s |
| compact | 62200321.000000 | 0 | 62.200 | 1 | |
| readseq | 0.049226 | 20314022 | 2.461 | 50000000 | 1123.6 MB/s |
| readseq | 0.048233 | 20732074 | 2.412 | 50000000 | 1146.8 MB/s |
| readseq | 0.048511 | 20613498 | 2.426 | 50000000 | 1140.2 MB/s |
| readrandom | 0.692659 | 1443711 | 34.633 | 50000000 | 79.9 MB/s (50000000 of 50000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026144 | 38247528 | 1.307 | 50000000 | 291.8 MB/s |
| nextwithkey | 0.026388 | 37894089 | 1.319 | 50000000 | 289.1 MB/s |
| nextwithkey | 0.026105 | 38304225 | 1.305 | 50000000 | 292.2 MB/s |
| readseq | 0.027241 | 36708239 | 1.362 | 50000000 | 280.1 MB/s |
| readseq | 0.027795 | 35975726 | 1.390 | 50000000 | 274.5 MB/s |
| readseq | 0.027789 | 35984322 | 1.389 | 50000000 | 274.5 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019231 | 51997212 | 0.962 | 50000000 | 396.7 MB/s |
| nextwithkey | 0.019212 | 52049609 | 0.961 | 50000000 | 397.1 MB/s |
| nextwithkey | 0.024438 | 40918505 | 1.222 | 50000000 | 312.2 MB/s |
| readseq | 0.019895 | 50262268 | 0.995 | 50000000 | 383.5 MB/s |
| readseq | 0.019895 | 50260197 | 0.995 | 50000000 | 383.5 MB/s |
| readseq | 0.019873 | 50315528 | 0.994 | 50000000 | 383.9 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.338 | 747396 | 66.899 | 50000000 | 41.3 MB/s |
| compact | 27136115.000 | 0 | 27.136 | 1 | |
| readseq | 0.147 | 6819403 | 4.635 | 31610314 | 377.2 MB/s |
| readseq | 0.100 | 9967082 | 3.171 | 31610314 | 551.3 MB/s |
| readseq | 0.100 | 9977899 | 3.168 | 31610314 | 551.9 MB/s |
| readrandom | 2.676 | 373634 | 133.821 | 50000000 | 13.1 MB/s (31610475 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.251 | 3991269 | 12.527 | 50000000 | 220.8 MB/s |
| compact | 17945074.000 | 0 | 17.945 | 1 | |
| readseq | 0.166 | 6012720 | 8.316 | 50000000 | 332.6 MB/s |
| readseq | 0.101 | 9947651 | 5.026 | 50000000 | 550.2 MB/s |
| readseq | 0.100 | 9964444 | 5.018 | 50000000 | 551.2 MB/s |
| readrandom | 2.894 | 345580 | 144.684 | 50000000 | 19.1 MB/s (50000000 of 50000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 349127895 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.6437 MiB/s |
| fillrandom | write us/op | 3.49128 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 396955433 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.0842 MiB/s |
| readrandom | read us/op | 3.96955 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.569 | 637495 | 78.432 | 50000000 | 35.3 MB/s |
| compact | 22178417.000 | 0 | 22.178 | 1 | |
| readseq | 0.173 | 5767577 | 5.480 | 31605925 | 319.0 MB/s |
| readseq | 0.119 | 8426994 | 3.751 | 31605925 | 466.1 MB/s |
| readseq | 0.118 | 8475599 | 3.729 | 31605925 | 468.8 MB/s |
| readrandom | 2.810 | 355908 | 140.486 | 50000000 | 12.4 MB/s (31598316 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.243 | 4107294 | 12.173 | 50000000 | 227.2 MB/s |
| compact | 17739276.000 | 0 | 17.739 | 1 | |
| readseq | 0.191 | 5230373 | 9.560 | 50000000 | 289.3 MB/s |
| readseq | 0.118 | 8449966 | 5.917 | 50000000 | 467.4 MB/s |
| readseq | 0.118 | 8474468 | 5.900 | 50000000 | 468.7 MB/s |
| readrandom | 3.120 | 320475 | 156.018 | 50000000 | 17.7 MB/s (50000000 of 50000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 382213275 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.24173 MiB/s |
| fillrandom | write us/op | 3.82213 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 386504632 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.19464 MiB/s |
| readrandom | read us/op | 3.86505 |