Releases: azrtydxb/novastor
Releases · azrtydxb/novastor
v0.5.0 — Performance: 60K IOPS, 740 MB/s, sub-100μs latency
Performance Highlights
| Metric | v0.4 | v0.5.0 | Improvement |
|---|---|---|---|
| 4K Random Write (qd=1) | 46 IOPS | 10,743 IOPS | 233× |
| 4K Random Write (qd=32) | — | 60,652 IOPS | — |
| 4K Random Read (qd=32) | — | 66,338 IOPS | — |
| Sequential Write | 4 MB/s | 740 MB/s | 185× |
| Sequential Read | — | 846 MB/s | — |
| Write Latency (qd=1) | 22ms | 0.091ms | 242× |
| Volume Creation (10Gi) | 30s+ | ~4s | 7× |
| NVMe Efficiency | <1% | 53% | — |
| Data Integrity | — | PASS | — |
Key Changes
Dataplane Performance
- Reactor-native I/O path — zero thread crossings for aligned single-sub-block I/O (Mayastor pattern)
- Lock-free atomic dirty bitmaps — AtomicU64 fetch_or instead of global RwLock write per I/O
- Flat-array bitmaps in BdevCtx — direct index, no DashMap hash/lookup
- Write context pool — pre-allocated 64 ReactorWriteCtx, eliminates Box::new per I/O
- A76 core pinning — reactor on Cortex-A76 (2.4GHz out-of-order) instead of A55 (1.8GHz in-order), 2× IPC
- DashMap for sub-block locks — replaces 2-level Mutex
- RwLock for volume offsets — non-blocking concurrent reads
- CRUSH hash optimization — ring::digest::Context instead of format!() allocation
- Arc — O(1) topology clone instead of deep copy
- Instant WRITE_ZEROES and UNMAP — thin provisioning, mkfs.ext4 near-instant
- RESET, COPY I/O types — NVMe error recovery and offload copy
Security
- mTLS on dataplane gRPC — tonic tls-ring (TLS 1.3 AES-128-GCM-SHA256)
- Agent connects to dataplane with mTLS client credentials
- TLS cert paths wired through CLI args, Helm DaemonSet
- Stable /etc/nvme/hostnqn and hostid for NVMe identity
NVMe-oF Transport
- SPDK initiator — CSI uses SPDK NVMe-oF initiator instead of kernel nvme-cli
- Stale subsystem cleanup — auto-disconnect zombie NVMe-oF entries before connecting
- NVMe-oF TCP tuning — 4 I/O queues, 128KB io_unit_size, 8 max_qpairs
- Round-robin iopolicy — set via CSI node init container
Operational
- Stable hostnqn/hostid written at CSI startup for NVMe multipath readiness
- Stale NVMe-oF subsystem auto-cleanup in ConnectMultipath
Known Issues
- #167 — SEEK_DATA/SEEK_HOLE disabled (causes seq read regression)
- #168 — Chunk ID string→binary migration (cross-language refactor)
- #169 — NVMe multipath path grouping needs investigation
- Dataplane gRPC TLS: agent still falls back to insecure if TLS not configured
- Single-reactor SPDK: multi-core reactor needs deadlock fix for self-connect