Workload
transaction-contention
Runs serializable snapshot transactions against a 10,000-record hot set. Each transaction shuffles five reads and five updates before committing.
Application operations
| API | total | avg/s | p0.1/s | p1/s | p50/s | p99/s | p99.9/s | min/s | max/s |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
Loading chart… | |||||||||
| 134.35M | 147.24K | 0 | 0 | 159.63K | 172.41K | 174.6K | 0 | 177.27K | |
Loading chart… | |||||||||
| 134.35M | 147.24K | 0 | 0 | 159.64K | 172.42K | 174.6K | 0 | 177.28K | |
Loading chart… | |||||||||
| 21.09M | 23.12K | 0 | 0 | 25.08K | 27.2K | 27.61K | 0 | 27.71K | |
Loading chart… | |||||||||
| 5.78M | 6.33K | 0 | 0 | 6.88K | 7.53K | 7.62K | 0 | 7.74K | |
Loading chart… | |||||||||
Application throughput
| API | total GiB | avg MiB/s | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|---|
| 52.55 | 58.98 | 0 | 0 | 63.94 | 69.06 | 69.93 | 0 | 71 | |
Loading chart… | |||||||||
| 52.55 | 58.98 | 0 | 0 | 63.94 | 69.06 | 69.93 | 0 | 71.01 | |
Loading chart… | |||||||||
Application latency
| API | avg ms | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 9,588.74 | 9,592.83 | 9,592.83 | 9,592.83 | 9,592.83 | 9,592.83 | 9,584.64 | 9,592.83 | |
Loading chart… | ||||||||
| 0.07 | 0.03 | 0.03 | 0.07 | 0.19 | 0.24 | 0.02 | 19.76 | |
Loading chart… | ||||||||
| 0 | 0 | 0 | 0 | 0.01 | 0.03 | 0 | 13.78 | |
Loading chart… | ||||||||
| 1.75 | 0.05 | 0.85 | 1.59 | 2.49 | 5.87 | 0.02 | 25,018.37 | |
Loading chart… | ||||||||
| 1.72 | 0.03 | 1.03 | 1.58 | 2.46 | 5.82 | 0.01 | 26,361.86 | |
Loading chart… | ||||||||
Time from when a write returns until SlateDB first reports its sequence durable. | 6,745.69 | 858.62 | 1,252.35 | 4,210.69 | 39,616.51 | 43,122.69 | 279.3 | 43,941.89 |
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 37.77K | 41.4 | 0 | 2 | 7 | 479.04 | 587.05 | 0 | 676.22 | $0.0151 | $42.92 | |
Loading chart… | |||||||||||
| 7 | 0.01 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | $0.000035 | $0.0994 | |
Loading chart… | |||||||||||
| 6.92K | 7.58 | 0 | 0 | 8 | 20.98 | 28 | 0 | 29.01 | $0.0346 | $98.25 | |
Loading chart… | |||||||||||
| 90 | 0.1 | 0 | 0 | 0 | 2 | 2 | 0 | 2 | $0.000036 | $0.1023 | |
Loading chart… | |||||||||||
| 943 | 1.03 | 0 | 0 | 0 | 0 | 122.93 | 0 | 200.16 | $0.00 | $0.00 | |
Loading chart… | |||||||||||
| 1.36K | 1.49 | 0 | 0 | 2 | 3 | 5 | 0 | 5 | $0.006810 | $19.35 | |
Loading chart… | |||||||||||
Object-store throughput
| Method | total GiB | avg MiB/s | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|---|
| 44.32 | 49.74 | 0 | 0 | 0 | 726.72 | 813.14 | 0 | 942.2 | |
Loading chart… | |||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0.18 | 0 | 0.38 | |
Loading chart… | |||||||||
| 84.51 | 94.84 | 0 | 0 | 61.62 | 389.94 | 692.86 | 0 | 790.85 | |
Loading chart… | |||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0.05 | 0 | 0.09 | |
Loading chart… | |||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
Loading chart… | |||||||||
Process statistics
| Metric | avg | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 12.89 | 0.01 | 0.01 | 12.94 | 29.13 | 30.67 | 0 | 30.83 | |
Loading chart… | ||||||||
| 26.42 | 18.89 | 19.33 | 28.16 | 33.3 | 33.31 | 18.89 | 33.31 | |
Loading chart… | ||||||||
Machine statistics
| Metric | avg | p0.1 | p1 | p50 | p99 | p99.9 | min | max |
|---|---|---|---|---|---|---|---|---|
| 39.81 | 0.09 | 0.13 | 39.86 | 90.55 | 95.45 | 0.09 | 96.05 | |
Loading chart… | ||||||||
| 28.26 | 20.74 | 21.15 | 30.04 | 35.07 | 35.11 | 20.73 | 35.12 | |
Loading chart… | ||||||||
| 51.8 | 0 | 0.01 | 0.1 | 757 | 851.33 | 0 | 980.39 | |
Loading chart… | ||||||||
| 99.72 | 0 | 0.15 | 97.25 | 215.93 | 252.6 | 0 | 325.89 | |
Loading chart… | ||||||||
| 0.01 | 0 | 0 | 0 | 0.07 | 0.45 | 0 | 7.39 | |
Loading chart… | ||||||||
| 0.02 | 0 | 0 | 0 | 0.16 | 2.05 | 0 | 2.1 | |
Loading chart… | ||||||||
| 0.25 | 0 | 0 | 0 | 1 | 89.95 | 0 | 116.01 | |
Loading chart… | ||||||||
| 0.49 | 0 | 0 | 0 | 10 | 27 | 0 | 35.99 | |
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 | transaction-contention |
| task / clients | 64 |
| task / warmup ms | 300,000 ms |
| task / measurement ms | 900,000 ms |
| task / initial state | golden |
| task / key selection | uniform-hot-set |
| task / operation mix / transaction | 1 |
| task / scan limit | — |
| task / transaction hot keys | 10,000 |
| task / transaction reads | 5 |
| task / transaction updates | 5 |
| build profile | release |
| enabled features | aws, foyer, wal_disable, zstd |
SlateDB configuration
| Key | Value |
|---|---|
| flush interval | 100ms |
| WAL enabled | Yes |
| 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 | 600s |
| garbage collector options / manifest options / min age | 300s |
| garbage collector options / manifest options / dry run | No |
| garbage collector options / WAL options / interval | 600s |
| garbage collector options / WAL options / min age | 300s |
| garbage collector options / WAL options / dry run | No |
| garbage collector options / WAL fence options / interval | 600s |
| garbage collector options / WAL fence options / min age | 300s |
| garbage collector options / WAL fence options / dry run | Yes |
| garbage collector options / compacted options / interval | 600s |
| garbage collector options / compacted options / min age | 300s |
| garbage collector options / compacted options / dry run | No |
| garbage collector options / compactions options / interval | 600s |
| garbage collector options / compactions options / min age | 300s |
| garbage collector options / compactions options / dry run | No |
| garbage collector options / detach options / interval | 600s |
| garbage collector options / metric level | — |
| garbage collector options / boundary files enabled | Yes |
| garbage collector options / object store max retries | — |
| metric level | Info |
| default ttl millis | — |
| object store max retries | — |