Storage Benchmark Kit
-class null is SBK’s idle, pending-operation, and timeout test driver. It
does not access an external storage system.
The default writer does not complete an operation. It returns an incomplete
CompletableFuture with the configured timeout, which lets tests verify:
ElasticWait behavior;The reader sleeps for the configured timeout and then returns null. Normal
timed shutdown can interrupt that sleep.
| Option | Default | Meaning |
|---|---|---|
-n |
0 |
When greater than zero, execute an empty loop with this iteration bound and then complete the write synchronously. At zero, return an incomplete future. |
-timeout |
2147483647 ms |
Timeout applied to the pending writer future and sleep duration used by the reader. |
The empty -n loop is only a control-flow workload. A JIT compiler may
optimize it, so it is not a calibrated CPU-delay mechanism and should not be
used for latency claims.
This run should print periodic zero-record windows and then stop at the configured duration:
./build/install/sbk/bin/sbk -class null -writers 1 -size 1024 -seconds 15
Setting -n above zero makes each write complete synchronously:
./build/install/sbk/bin/sbk \
-class null -writers 1 -size 1024 -records 1000 -n 100
This can smoke-test completed-operation control flow, but it is not the recommended queue-performance workload.
Both drivers are synthetic, but they deliberately exercise opposite states:
| Property | Null |
PerlBench |
|---|---|---|
| Default write | Remains pending | Completes immediately |
| Read | Sleeps, then returns null |
Immediately returns a reusable payload |
| Expected default result | Idle windows with zero completed records | High-rate completed records and latency samples |
| Primary purpose | Idle reporting, timeout, interruption, and shutdown behavior | End-to-end SBK/PerL throughput, allocation, and timestamp-queue comparison |
Suitable for -mpscqueue A/B performance tests |
No | Yes |
They should not be merged: the distinction between “no completion” and “completion as fast as possible” is the behavior each driver exists to test.
Null-driver results are not storage results and should not be compared with
durable backend operations. Use -class null -help for current defaults.