Bench run: plain / 31191036555
← plain home |
dcompact →
generated (UTC): 2026-08-07T16:10:39.257434+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.6GiB | 316.5MiB | 1.9GiB | 1.9GiB | 0.83x | 0.17x |
| fillseq | 2.4GiB | 467.8MiB | 1.6GiB | 1.6GiB | 1.51x | 0.28x |
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.4GiB | 1.6GiB | 2.1GiB | 2.1GiB | 0.67x | 0.75x |
| fillrandom-omit | 132.0MiB | 146.0MiB | 2.1GiB | n/a | 0.06x | 0.07x |
| fillseq | 940.0MiB | 820.3MiB | 3.2GiB | 3.3GiB | 0.28x | 0.25x |
| fillseq-omit | 124.0MiB | 151.0MiB | 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/23.0s | 1/44.4s | 1/24.8s | 1/22.6s | 1.93x | 1.08x | 0.98x | 0.56x | 0.51x |
| fillrandom | 1188858 | 1159282 | 706861 | 660160 | 1.03x | 1.68x | 1.80x | 1.64x | 1.76x |
| readrandom | 4425517 | 1716680 | 351474 | 348523 | 2.58x | 12.59x | 12.70x | 4.88x | 4.93x |
| readseq | 24008162 | 17195491 | 9992911 | 8445618 | 1.40x | 1.52x | 1.80x | 1.09x | 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/37.8s | 1/51.6s | 1/17.9s | 1/17.7s | 1.36x | 0.47x | 0.47x | 0.35x | 0.34x |
| fillseq | 2847252 | 2836759 | 4045780 | 3770157 | 1.00x | 0.70x | 0.76x | 0.70x | 0.75x |
| readrandom | 6968681 | 1454297 | 338887 | 315220 | 4.79x | 20.56x | 22.11x | 4.29x | 4.61x |
| readseq | 30310709 | 20701045 | 9961072 | 8445301 | 1.46x | 3.04x | 3.59x | 2.08x | 2.45x |
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 | 38752149 | 38937595 | — | — | — |
| readseq | 36871932 | 37117843 | 9992911 | 2.33x | 2.35x |
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 | 51849631 | 51867166 | — | — | — |
| readseq | 50166150 | 50225159 | 9961072 | 5.04x | 5.04x |
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 | 38336471 us | 363217985 us | 343100186 us | 0.11x |
| fillrandom | Write throughput | 42.2899 MiB/s | 4.46356 MiB/s | 4.72529 MiB/s | 8.95x |
| fillrandom | write us/op | 0.383365 | 3.63218 | 3.431 | 0.11x |
| readrandom | Elapsed time | 53108435 us | 392214148 us | 399765994 us | 0.13x |
| readrandom | Read throughput | 30.5271 MiB/s | 4.13357 MiB/s | 4.05549 MiB/s | 7.53x |
| readrandom | read us/op | 0.531084 | 3.92214 | 3.99766 | 0.13x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.841143 | 1188858 | 42.057 | 50000000 | 65.8 MB/s |
| compact | 22978758.000000 | 0 | 22.979 | 1 | |
| readseq | 0.042135 | 23732776 | 2.107 | 50000000 | 1312.7 MB/s |
| readseq | 0.041484 | 24104958 | 2.074 | 50000000 | 1333.3 MB/s |
| readseq | 0.041652 | 24008162 | 2.083 | 50000000 | 1328.0 MB/s |
| readrandom | 0.225961 | 4425517 | 11.298 | 50000000 | 154.7 MB/s (31603732 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.351215 | 2847252 | 17.561 | 50000000 | 157.5 MB/s |
| compact | 37847513.000000 | 0 | 37.848 | 1 | |
| readseq | 0.032429 | 30835189 | 1.622 | 50000000 | 1705.6 MB/s |
| readseq | 0.032830 | 30458943 | 1.642 | 50000000 | 1684.8 MB/s |
| readseq | 0.032990 | 30310709 | 1.650 | 50000000 | 1676.6 MB/s |
| readrandom | 0.143499 | 6968681 | 7.175 | 50000000 | 385.5 MB/s (50000000 of 50000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026035 | 38408151 | 1.302 | 50000000 | 293.0 MB/s |
| nextwithkey | 0.025808 | 38745393 | 1.290 | 50000000 | 295.6 MB/s |
| nextwithkey | 0.025803 | 38752149 | 1.290 | 50000000 | 295.7 MB/s |
| readseq | 0.026614 | 37572514 | 1.331 | 50000000 | 286.7 MB/s |
| readseq | 0.026712 | 37434704 | 1.336 | 50000000 | 285.6 MB/s |
| readseq | 0.027120 | 36871932 | 1.356 | 50000000 | 281.3 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019250 | 51944166 | 0.963 | 50000000 | 396.3 MB/s |
| nextwithkey | 0.019193 | 52099288 | 0.960 | 50000000 | 397.5 MB/s |
| nextwithkey | 0.019286 | 51849631 | 0.964 | 50000000 | 395.6 MB/s |
| readseq | 0.019917 | 50203726 | 0.996 | 50000000 | 383.0 MB/s |
| readseq | 0.019929 | 50174657 | 0.997 | 50000000 | 382.8 MB/s |
| readseq | 0.019932 | 50166150 | 0.997 | 50000000 | 382.7 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 363217985 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.46356 MiB/s |
| fillrandom | write us/op | 3.63218 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 392214148 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.13357 MiB/s |
| readrandom | read us/op | 3.92214 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 38336471 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 42.2899 MiB/s |
| fillrandom | write us/op | 0.383365 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 53108435 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 30.5271 MiB/s |
| readrandom | read us/op | 0.531084 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.862600 | 1159282 | 43.130 | 50000000 | 64.1 MB/s |
| compact | 44355074.000000 | 0 | 44.355 | 1 | |
| readseq | 0.058314 | 17148275 | 2.916 | 50000000 | 948.5 MB/s |
| readseq | 0.058000 | 17241391 | 2.900 | 50000000 | 953.7 MB/s |
| readseq | 0.058154 | 17195491 | 2.908 | 50000000 | 951.1 MB/s |
| readrandom | 0.582519 | 1716680 | 29.126 | 50000000 | 60.0 MB/s (31600506 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.352514 | 2836759 | 17.626 | 50000000 | 156.9 MB/s |
| compact | 51602254.000000 | 0 | 51.602 | 1 | |
| readseq | 0.048745 | 20514562 | 2.437 | 50000000 | 1134.7 MB/s |
| readseq | 0.048198 | 20747120 | 2.410 | 50000000 | 1147.6 MB/s |
| readseq | 0.048306 | 20701045 | 2.415 | 50000000 | 1145.0 MB/s |
| readrandom | 0.687616 | 1454297 | 34.381 | 50000000 | 80.4 MB/s (50000000 of 50000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026031 | 38415292 | 1.302 | 50000000 | 293.1 MB/s |
| nextwithkey | 0.025769 | 38804631 | 1.289 | 50000000 | 296.1 MB/s |
| nextwithkey | 0.025682 | 38937595 | 1.284 | 50000000 | 297.1 MB/s |
| readseq | 0.026629 | 37551859 | 1.331 | 50000000 | 286.5 MB/s |
| readseq | 0.026915 | 37153009 | 1.346 | 50000000 | 283.5 MB/s |
| readseq | 0.026940 | 37117843 | 1.347 | 50000000 | 283.2 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019255 | 51929869 | 0.963 | 50000000 | 396.2 MB/s |
| nextwithkey | 0.019213 | 52043812 | 0.961 | 50000000 | 397.1 MB/s |
| nextwithkey | 0.019278 | 51867166 | 0.964 | 50000000 | 395.7 MB/s |
| readseq | 0.019902 | 50242167 | 0.995 | 50000000 | 383.3 MB/s |
| readseq | 0.019915 | 50210028 | 0.996 | 50000000 | 383.1 MB/s |
| readseq | 0.019909 | 50225159 | 0.996 | 50000000 | 383.2 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.415 | 706861 | 70.735 | 50000000 | 39.1 MB/s |
| compact | 24783923.000 | 0 | 24.784 | 1 | |
| readseq | 0.146 | 6835327 | 4.624 | 31604112 | 378.1 MB/s |
| readseq | 0.100 | 9993556 | 3.162 | 31604112 | 552.8 MB/s |
| readseq | 0.100 | 9992911 | 3.163 | 31604112 | 552.7 MB/s |
| readrandom | 2.845 | 351474 | 142.258 | 50000000 | 12.3 MB/s (31598725 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.247 | 4045780 | 12.359 | 50000000 | 223.8 MB/s |
| compact | 17879957.000 | 0 | 17.880 | 1 | |
| readseq | 0.167 | 5986126 | 8.353 | 50000000 | 331.1 MB/s |
| readseq | 0.101 | 9930662 | 5.035 | 50000000 | 549.3 MB/s |
| readseq | 0.100 | 9961072 | 5.020 | 50000000 | 551.0 MB/s |
| readrandom | 2.951 | 338887 | 147.542 | 50000000 | 18.7 MB/s (50000000 of 50000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 343100186 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.72529 MiB/s |
| fillrandom | write us/op | 3.431 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 399765994 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.05549 MiB/s |
| readrandom | read us/op | 3.99766 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.515 | 660160 | 75.739 | 50000000 | 36.5 MB/s |
| compact | 22628122.000 | 0 | 22.628 | 1 | |
| readseq | 0.177 | 5650934 | 5.593 | 31606806 | 312.6 MB/s |
| readseq | 0.119 | 8429378 | 3.750 | 31606806 | 466.3 MB/s |
| readseq | 0.118 | 8445618 | 3.742 | 31606806 | 467.2 MB/s |
| readrandom | 2.869 | 348523 | 143.462 | 50000000 | 12.2 MB/s (31605159 of 50000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.265 | 3770157 | 13.262 | 50000000 | 208.5 MB/s |
| compact | 17720037.000 | 0 | 17.720 | 1 | |
| readseq | 0.193 | 5194099 | 9.626 | 50000000 | 287.3 MB/s |
| readseq | 0.118 | 8446650 | 5.920 | 50000000 | 467.2 MB/s |
| readseq | 0.118 | 8445301 | 5.920 | 50000000 | 467.1 MB/s |
| readrandom | 3.172 | 315220 | 158.619 | 50000000 | 17.4 MB/s (50000000 of 50000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 364737544 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.44497 MiB/s |
| fillrandom | write us/op | 3.64738 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 394402970 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.11063 MiB/s |
| readrandom | read us/op | 3.94403 |