Workload
sustained-ingest
Inserts records with unique sequential IDs into an empty database using closed-loop clients, then flushes the accepted writes.
Application operations
| API | total | avg/s | p0.1/s | p1/s | p50/s | p99/s | p99.9/s | min/s | max/s |
|---|---|---|---|---|---|---|---|---|---|
| 362.5M | 298.85K | 0 | 49.57K | 309.55K | 353.21K | 361.26K | 0 | 365.57K | |
Loading chart… | |||||||||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
Loading chart… | |||||||||
Application throughput
| API | total GiB | avg MiB/s | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|---|
| 141.8 | 119.7 | 0 | 19.85 | 123.99 | 141.47 | 144.7 | 0 | 146.43 | |
Loading chart… | |||||||||
Application latency
| API | avg ms | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 0.21 | 0.13 | 0.16 | 0.2 | 0.4 | 0.69 | 0 | 4,022.27 | |
Loading chart… | ||||||||
| 12,988.42 | 12,992.51 | 12,992.51 | 12,992.51 | 12,992.51 | 12,992.51 | 12,984.32 | 12,992.51 | |
Loading chart… | ||||||||
Time from when a write returns until SlateDB first reports its sequence durable. | 6,333.36 | 713.22 | 794.11 | 5,603.33 | 19,365.89 | 21,233.66 | 625.66 | 25,149.44 |
Loading chart… | ||||||||
Object-store operations
| Method | total | avg/s | p0.1/s | p1/s | p50/s | p99/s | p99.9/s | min/s | max/s | $ | $/month |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 322.34K | 265.74 | 2 | 3 | 256.01 | 731 | 766.99 | 1 | 872.98 | $0.1289 | $275.52 | |
Loading chart… | |||||||||||
| 142 | 0.12 | 0 | 0 | 0 | 4 | 5 | 0 | 5 | $0.000710 | $1.52 | |
Loading chart… | |||||||||||
| 77.13K | 63.58 | 0 | 0 | 61.03 | 154 | 171 | 0 | 182 | $0.3856 | $824.03 | |
Loading chart… | |||||||||||
| 80 | 0.07 | 0 | 0 | 0 | 1 | 3 | 0 | 3 | $0.000032 | $0.0684 | |
Loading chart… | |||||||||||
| 3.06K | 2.52 | 0 | 0 | 0 | 96 | 151.01 | 0 | 171.89 | $0.00 | $0.00 | |
Loading chart… | |||||||||||
| 10.77K | 8.88 | 0 | 0 | 8 | 26 | 32 | 0 | 33 | $0.0538 | $115.05 | |
Loading chart… | |||||||||||
Object-store throughput
| Method | total GiB | avg MiB/s | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|---|
| 550.18 | 464.45 | 0 | 0 | 447.03 | 1,341.79 | 1,458.89 | 0 | 1,605.46 | |
Loading chart… | |||||||||
| 0.02 | 0.02 | 0 | 0 | 0 | 0.73 | 1.73 | 0 | 1.75 | |
Loading chart… | |||||||||
| 696.4 | 587.89 | 0 | 0 | 569.72 | 1,511.76 | 1,633 | 0 | 1,698.04 | |
Loading chart… | |||||||||
| 0 | 0 | 0 | 0 | 0 | 0.04 | 0.07 | 0 | 0.07 | |
Loading chart… | |||||||||
| 0.01 | 0.01 | 0 | 0 | 0.01 | 0.04 | 0.05 | 0 | 0.05 | |
Loading chart… | |||||||||
Process statistics
| Metric | avg | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 8.56 | 0.7 | 3.19 | 8.37 | 18.38 | 19.75 | 0.03 | 20.31 | |
Loading chart… | ||||||||
| 27.7 | 1.1 | 4.17 | 30.45 | 32.36 | 32.39 | 0.54 | 32.39 | |
Loading chart… | ||||||||
Machine statistics
| Metric | avg | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 26.47 | 2.19 | 9.81 | 25.85 | 56.98 | 61.03 | 0.16 | 63.5 | |
Loading chart… | ||||||||
| 30 | 2.88 | 6 | 32.69 | 34.84 | 34.87 | 2.36 | 34.94 | |
Loading chart… | ||||||||
| 475.71 | 0 | 0 | 458.05 | 1,375.18 | 1,494.2 | 0 | 1,646.49 | |
Loading chart… | ||||||||
| 605.55 | 0.01 | 0.01 | 583.82 | 1,566.08 | 1,691.32 | 0 | 1,764.42 | |
Loading chart… | ||||||||
| 0 | 0 | 0 | 0 | 0.12 | 0.46 | 0 | 1.1 | |
Loading chart… | ||||||||
| 0.13 | 0 | 0 | 0 | 0.64 | 3.46 | 0 | 123.53 | |
Loading chart… | ||||||||
| 0.16 | 0 | 0 | 0 | 1 | 18 | 0 | 117 | |
Loading chart… | ||||||||
| 1.28 | 0 | 0 | 0 | 14 | 173.02 | 0 | 654.02 | |
Loading chart… | ||||||||
Benchmark configuration
| Key | Value |
|---|---|
| scale | 1 |
| dataset / record count | 300,000,000 |
| dataset / key bytes | 20 B |
| dataset / value bytes | 400 B |
| dataset / value compression ratio | 1 |
| caches / block bytes | 8 GiB |
| caches / metadata bytes | 4 GiB |
| task / task | sustained-ingest |
| task / clients | 64 |
| task / warmup ms | 0 ms |
| task / measurement ms | 1,200,000 ms |
| task / initial state | empty |
| task / key selection | unique-sequential |
| task / operation mix / put | 1 |
| task / scan limit | — |
| task / transaction hot keys | — |
| task / transaction reads | — |
| task / transaction updates | — |
| build profile | release |
| enabled features | aws, foyer, wal_disable, zstd |
SlateDB configuration
| Key | Value |
|---|---|
| flush interval | 100ms |
| WAL enabled | No |
| manifest poll interval | 1s |
| manifest update timeout | 300s |
| min filter keys | 1,000 |
| L0 SST size bytes | 64 MiB |
| max WAL flushes before L0 flush | 4,096 |
| L0 max ssts | 32 |
| L0 max ssts per key | 32 |
| L0 flush parallelism | 4 |
| max unflushed bytes | 2 GiB |
| compactor options / poll interval | 5s |
| compactor options / manifest update timeout | 300s |
| compactor options / max concurrent compactions | 4 |
| compactor options / enable trivial move | No |
| compactor options / scheduler options / max compaction sources | 16 |
| compactor options / worker / max concurrent compactions | 4 |
| compactor options / worker / compactions poll interval | 5s |
| compactor options / worker / heartbeat interval | 10s |
| compactor options / worker / max SST size | 268,435,456 |
| compactor options / worker / max fetch tasks | 4 |
| compactor options / worker / bytes to fetch | 2,097,152 |
| compactor options / worker / max subcompactions | 8 |
| compactor options / worker / min filter keys | 1,000 |
| compactor options / worker / compression codec | — |
| compactor options / worker / metric level | — |
| compactor options / metric level | — |
| compactor options / commit compacted interval | 1s |
| compactor options / worker heartbeat timeout | 30s |
| compactor options / object store max retries | — |
| compression codec | — |
| object store cache options / root folder | — |
| object store cache options / max cache size bytes | — |
| object store cache options / part size bytes | 4 MiB |
| object store cache options / cache on flush | No |
| object store cache options / cache on compaction | No |
| object store cache options / preload disk cache on startup | — |
| object store cache options / scan interval | 3600s |
| object store cache options / max open file handles | 1,000 |
| garbage collector options / manifest options / interval | 60s |
| garbage collector options / manifest options / min age | 300s |
| garbage collector options / manifest options / dry run | No |
| garbage collector options / WAL options / interval | 60s |
| garbage collector options / WAL options / min age | 300s |
| garbage collector options / WAL options / dry run | No |
| garbage collector options / WAL fence options / interval | 60s |
| garbage collector options / WAL fence options / min age | 300s |
| garbage collector options / WAL fence options / dry run | Yes |
| garbage collector options / compacted options / interval | 60s |
| garbage collector options / compacted options / min age | 300s |
| garbage collector options / compacted options / dry run | No |
| garbage collector options / compactions options / interval | 60s |
| garbage collector options / compactions options / min age | 300s |
| garbage collector options / compactions options / dry run | No |
| garbage collector options / detach options / interval | 60s |
| garbage collector options / metric level | — |
| garbage collector options / boundary files enabled | Yes |
| garbage collector options / object store max retries | — |
| metric level | Info |
| default ttl | — |
| object store max retries | — |