# Storage Benchmarks Generated on 2026-03-10T20:02:00+09:00 with: ```bash nix run ./nix/test-cluster#cluster -- fresh-bench-storage ``` ## CoronaFS Cluster network baseline, measured with `iperf3` from `node04` to `node01` before the storage tests: | Metric | Result | |---|---:| | TCP throughput | 22.83 MiB/s | | TCP retransmits | 78 | Measured from `node04`. Local worker disk is the baseline. CoronaFS is the shared block volume path used for mutable VM disks, exported from `node01` over NBD. | Metric | Local Disk | CoronaFS | |---|---:|---:| | Sequential write | 26.36 MiB/s | 5.24 MiB/s | | Sequential read | 348.77 MiB/s | 10.08 MiB/s | | 4k random read | 1243 IOPS | 145 IOPS | Queue-depth profile (`libaio`, `iodepth=32`) from the same worker: | Metric | Local Disk | CoronaFS | |---|---:|---:| | Depth-32 write | 27.12 MiB/s | 11.42 MiB/s | | Depth-32 read | 4797.47 MiB/s | 10.06 MiB/s | Cross-worker shared-volume visibility, measured by writing on `node04` and reading from `node05` over the same CoronaFS NBD export: | Metric | Result | |---|---:| | Cross-worker sequential read | 17.72 MiB/s | ## LightningStor Measured from `node03` against the S3-compatible endpoint on `node01`. The object path exercised the distributed backend with replication across the worker storage nodes. Cluster network baseline for this client, measured with `iperf3` from `node03` to `node01` before the storage tests: | Metric | Result | |---|---:| | TCP throughput | 18.35 MiB/s | | TCP retransmits | 78 | ### Large-object path | Metric | Result | |---|---:| | Object size | 256 MiB | | Upload throughput | 8.11 MiB/s | | Download throughput | 7.54 MiB/s | ### Small-object batch Measured as 32 objects of 4 MiB each (128 MiB total). | Metric | Result | |---|---:| | Batch upload throughput | 0.81 MiB/s | | Batch download throughput | 0.83 MiB/s | | PUT rate | 0.20 objects/s | | GET rate | 0.21 objects/s | ### Parallel small-object batch Measured as the same 32 objects of 4 MiB each, but with 8 concurrent client jobs from `node03`. | Metric | Result | |---|---:| | Parallel batch upload throughput | 3.03 MiB/s | | Parallel batch download throughput | 2.89 MiB/s | | Parallel PUT rate | 0.76 objects/s | | Parallel GET rate | 0.72 objects/s | ## VM Image Path Measured against the real `PlasmaVMC -> LightningStor artifact -> CoronaFS-backed managed volume` path on `node01`. | Metric | Result | |---|---:| | Guest image artifact size | 2017 MiB | | Guest image virtual size | 4096 MiB | | `CreateImage` latency | 176.03 s | | First image-backed `CreateVolume` latency | 76.51 s | | Second image-backed `CreateVolume` latency | 170.49 s | ## Assessment - CoronaFS shared-volume reads are currently 2.9% of the measured local-disk baseline on this nested-QEMU lab cluster. - CoronaFS 4k random reads are currently 11.7% of the measured local-disk baseline. - CoronaFS cross-worker reads are currently 5.1% of the measured local-disk sequential-read baseline, which is the more relevant signal for VM restart and migration paths. - CoronaFS sequential reads are currently 44.2% of the measured node04->node01 TCP baseline, which helps separate NBD/export overhead from raw cluster-network limits. - CoronaFS depth-32 reads are currently 0.2% of the local depth-32 baseline, which is a better proxy for queued guest I/O than the single-depth path. - The shared-volume path is functionally correct for mutable VM disks and migration tests, but its read-side throughput is still too low to call production-ready for heavier VM workloads. - LightningStor's replicated S3 path is working correctly, but 8.11 MiB/s upload and 7.54 MiB/s download are still lab-grade numbers rather than strong object-store throughput. - LightningStor large-object downloads are currently 41.1% of the same node04->node01 TCP baseline, which indicates how much of the headroom is being lost above the raw network path. - LightningStor's small-object batch path is also functional, but 0.20 PUT/s and 0.21 GET/s still indicate a lab cluster rather than a tuned object-storage deployment. - The parallel small-object profile is the more relevant control-plane/object-ingest signal; it currently reaches 0.76 PUT/s and 0.72 GET/s. - The VM image path is now measured directly rather than inferred. The cold `CreateVolume` path includes artifact fetch plus CoronaFS population; the warm `CreateVolume` path isolates repeated CoronaFS population from an already cached image. - The local sequential-write baseline is noisy in this environment, so the read and random-read deltas are the more reliable signal.