Bench run: plain / 31218150702
← plain home |
dcompact →
generated (UTC): 2026-08-07T22:21:52.334573+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 (3.7GiB) ≤ 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 | 3.0GiB | 591.0MiB | 3.7GiB | 3.7GiB | 0.82x | 0.16x |
| fillseq | 4.7GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.46x | 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 | 3.0GiB | 2.2GiB | 4.1GiB | 4.2GiB | 0.74x | 0.55x |
| fillrandom-omit | 139.6MiB | 177.9MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.5GiB | 6.5GiB | 0.29x | 0.29x |
| fillseq-omit | 128.9MiB | 188.6MiB | 6.5GiB | 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/47.3s | 1/72.9s | 1/60.1s | 1/55.2s | 1.54x | 1.27x | 1.17x | 0.82x | 0.76x |
| fillrandom | 1012183 | 1052872 | 700956 | 689823 | 0.96x | 1.44x | 1.47x | 1.50x | 1.53x |
| readrandom | 4280549 | 1651335 | 330287 | 340990 | 2.59x | 12.96x | 12.55x | 5.00x | 4.84x |
| readseq | 24387026 | 16843608 | 9643887 | 8337119 | 1.45x | 1.60x | 1.85x | 1.10x | 1.28x |
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.3s | 1/121.7s | 1/36.0s | 1/35.3s | 3.17x | 0.94x | 0.92x | 0.30x | 0.29x |
| fillseq | 2345769 | 2353219 | 4059037 | 3964332 | 1.00x | 0.58x | 0.59x | 0.58x | 0.59x |
| readrandom | 6366976 | 1337072 | 320716 | 319399 | 4.76x | 19.85x | 19.93x | 4.17x | 4.19x |
| readseq | 30273912 | 20828473 | 9820259 | 8402096 | 1.45x | 3.08x | 3.60x | 2.12x | 2.48x |
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 | 38714732 | 39086470 | — | — | — |
| readseq | 36610149 | 37049167 | 9643887 | 2.40x | 2.43x |
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 | 52187627 | 52040183 | — | — | — |
| readseq | 50376209 | 50340528 | 9820259 | 5.13x | 5.13x |
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 | 37842262 us | 321717234 us | 324614498 us | 0.12x |
| fillrandom | Write throughput | 42.8422 MiB/s | 5.03935 MiB/s | 4.99437 MiB/s | 8.58x |
| fillrandom | write us/op | 0.378423 | 3.21717 | 3.24614 | 0.12x |
| readrandom | Elapsed time | 54448854 us | 379628462 us | 375333532 us | 0.15x |
| readrandom | Read throughput | 29.7756 MiB/s | 4.27061 MiB/s | 4.31948 MiB/s | 6.89x |
| readrandom | read us/op | 0.544489 | 3.79628 | 3.75334 | 0.15x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.987961 | 1012183 | 98.796 | 100000000 | 56.0 MB/s |
| compact | 47321386.000000 | 0 | 47.321 | 1 | |
| readseq | 0.041453 | 24123822 | 4.145 | 100000000 | 1334.4 MB/s |
| readseq | 0.040838 | 24486691 | 4.084 | 100000000 | 1354.4 MB/s |
| readseq | 0.041005 | 24387026 | 4.101 | 100000000 | 1348.9 MB/s |
| readrandom | 0.233614 | 4280549 | 23.361 | 100000000 | 149.7 MB/s (63216402 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.426299 | 2345769 | 42.630 | 100000000 | 129.8 MB/s |
| compact | 38331654.000000 | 0 | 38.332 | 1 | |
| readseq | 0.032778 | 30507709 | 3.278 | 100000000 | 1687.5 MB/s |
| readseq | 0.032609 | 30665703 | 3.261 | 100000000 | 1696.2 MB/s |
| readseq | 0.033031 | 30273912 | 3.303 | 100000000 | 1674.5 MB/s |
| readrandom | 0.157060 | 6366976 | 15.706 | 100000000 | 352.2 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026993 | 37046422 | 2.699 | 100000000 | 282.6 MB/s |
| nextwithkey | 0.025973 | 38500809 | 2.597 | 100000000 | 293.7 MB/s |
| nextwithkey | 0.025829 | 38714732 | 2.583 | 100000000 | 295.4 MB/s |
| readseq | 0.026733 | 37405606 | 2.673 | 100000000 | 285.4 MB/s |
| readseq | 0.027145 | 36838097 | 2.715 | 100000000 | 281.1 MB/s |
| readseq | 0.027314 | 36610149 | 2.731 | 100000000 | 279.3 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019189 | 52111180 | 1.919 | 100000000 | 397.6 MB/s |
| nextwithkey | 0.019148 | 52222484 | 1.915 | 100000000 | 398.4 MB/s |
| nextwithkey | 0.019161 | 52187627 | 1.916 | 100000000 | 398.2 MB/s |
| readseq | 0.019870 | 50327278 | 1.987 | 100000000 | 384.0 MB/s |
| readseq | 0.019855 | 50363904 | 1.986 | 100000000 | 384.2 MB/s |
| readseq | 0.019850 | 50376209 | 1.985 | 100000000 | 384.3 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 321717234 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 5.03935 MiB/s |
| fillrandom | write us/op | 3.21717 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 379628462 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.27061 MiB/s |
| readrandom | read us/op | 3.79628 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 37842262 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 42.8422 MiB/s |
| fillrandom | write us/op | 0.378423 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 54448854 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 29.7756 MiB/s |
| readrandom | read us/op | 0.544489 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.949782 | 1052872 | 94.978 | 100000000 | 58.2 MB/s |
| compact | 72909507.000000 | 0 | 72.910 | 1 | |
| readseq | 0.058379 | 17129174 | 5.838 | 100000000 | 947.5 MB/s |
| readseq | 0.057899 | 17271315 | 5.790 | 100000000 | 955.3 MB/s |
| readseq | 0.059369 | 16843608 | 5.937 | 100000000 | 931.7 MB/s |
| readrandom | 0.605570 | 1651335 | 60.557 | 100000000 | 57.7 MB/s (63215368 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.424949 | 2353219 | 42.495 | 100000000 | 130.2 MB/s |
| compact | 121702796.000000 | 0 | 121.703 | 1 | |
| readseq | 0.048984 | 20414416 | 4.898 | 100000000 | 1129.2 MB/s |
| readseq | 0.048110 | 20785677 | 4.811 | 100000000 | 1149.7 MB/s |
| readseq | 0.048011 | 20828473 | 4.801 | 100000000 | 1152.1 MB/s |
| readrandom | 0.747902 | 1337072 | 74.790 | 100000000 | 74.0 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025824 | 38723802 | 2.582 | 100000000 | 295.4 MB/s |
| nextwithkey | 0.025825 | 38721163 | 2.583 | 100000000 | 295.4 MB/s |
| nextwithkey | 0.025584 | 39086470 | 2.558 | 100000000 | 298.2 MB/s |
| readseq | 0.026598 | 37596048 | 2.660 | 100000000 | 286.8 MB/s |
| readseq | 0.026902 | 37170327 | 2.690 | 100000000 | 283.6 MB/s |
| readseq | 0.026990 | 37049167 | 2.699 | 100000000 | 282.7 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019183 | 52129571 | 1.918 | 100000000 | 397.7 MB/s |
| nextwithkey | 0.019158 | 52194763 | 1.916 | 100000000 | 398.2 MB/s |
| nextwithkey | 0.019216 | 52040183 | 1.922 | 100000000 | 397.0 MB/s |
| readseq | 0.019862 | 50345495 | 1.986 | 100000000 | 384.1 MB/s |
| readseq | 0.019867 | 50333332 | 1.987 | 100000000 | 384.0 MB/s |
| readseq | 0.019864 | 50340528 | 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.427 | 700956 | 142.662 | 100000000 | 38.8 MB/s |
| compact | 60119970.000 | 0 | 60.120 | 1 | |
| readseq | 0.147 | 6800753 | 9.295 | 63213544 | 376.2 MB/s |
| readseq | 0.104 | 9660733 | 6.543 | 63213544 | 534.4 MB/s |
| readseq | 0.104 | 9643887 | 6.555 | 63213544 | 533.4 MB/s |
| readrandom | 3.028 | 330287 | 302.766 | 100000000 | 11.5 MB/s (63215534 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.246 | 4059037 | 24.636 | 100000000 | 224.5 MB/s |
| compact | 36003765.000 | 0 | 36.004 | 1 | |
| readseq | 0.176 | 5691186 | 17.571 | 100000000 | 314.8 MB/s |
| readseq | 0.102 | 9785430 | 10.219 | 100000000 | 541.3 MB/s |
| readseq | 0.102 | 9820259 | 10.183 | 100000000 | 543.2 MB/s |
| readrandom | 3.118 | 320716 | 311.802 | 100000000 | 17.7 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 324614498 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.99437 MiB/s |
| fillrandom | write us/op | 3.24614 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 375333532 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.31948 MiB/s |
| readrandom | read us/op | 3.75334 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.450 | 689823 | 144.965 | 100000000 | 38.2 MB/s |
| compact | 55175537.000 | 0 | 55.176 | 1 | |
| readseq | 0.173 | 5776928 | 10.943 | 63216400 | 319.5 MB/s |
| readseq | 0.119 | 8415947 | 7.512 | 63216400 | 465.5 MB/s |
| readseq | 0.120 | 8337119 | 7.583 | 63216400 | 461.2 MB/s |
| readrandom | 2.933 | 340990 | 293.264 | 100000000 | 11.9 MB/s (63227418 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.252 | 3964332 | 25.225 | 100000000 | 219.3 MB/s |
| compact | 35309177.000 | 0 | 35.309 | 1 | |
| readseq | 0.196 | 5089482 | 19.648 | 100000000 | 281.5 MB/s |
| readseq | 0.118 | 8457278 | 11.824 | 100000000 | 467.8 MB/s |
| readseq | 0.119 | 8402096 | 11.902 | 100000000 | 464.7 MB/s |
| readrandom | 3.131 | 319399 | 313.088 | 100000000 | 17.7 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 326645058 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.96333 MiB/s |
| fillrandom | write us/op | 3.26645 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 370096230 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.38061 MiB/s |
| readrandom | read us/op | 3.70096 |