Skip to content

test: qualify Linux NVMe read depth without hiding amplification - #61

Merged
leiysky merged 1 commit into
mainfrom
dev/linux-nvme-qualify-depth
Sep 20, 2026
Merged

leiysky merged 1 commit into
mainfrom
dev/linux-nvme-qualify-depth

Conversation

@leiysky

@leiysky leiysky commented Sep 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Match POSIX Direct worker-sweep clients to worker count so L2 admission is not capped at the default 8 concurrent gets.
  • Add an experimental io_uring Direct in-flight sweep (one ring at 16/32/64) and build qualification with --features io-uring.
  • Report in_flight_peak, configured depth, slot wait, payload bytes, and read_amp on result phase=read_io, and document that Linux NVMe read depth belongs to caller concurrency rather than extra rings.

Design Notes

IOPOLL remains an optional follow-up (CACHE_BENCH_IO_URING_READ_IOPOLL=true) rather than a default qualification cell. On the measured ext4 NVMe host it ran, but it did not raise Direct 16 KiB payload throughput once in-flight depth already saturated the device after size-class alignment amplification.

Test plan

  • cargo x check
  • cargo x test
  • cargo x lint
  • n=1 Direct 16 KiB / 40 GiB on Linux NVMe: POSIX 16 workers at matching clients; io_uring 1 ring at 16/32/64 in-flight; IOPOLL at 64 in-flight
  • Full qualify-linux-nvme.sh 5-sample / 30-minute soak on a dedicated NVMe host

POSIX worker sweeps were capped by the default client count, so extra workers never reached device depth. Report in-flight peak and Direct read amplification so payload throughput is not mistaken for device bytes.
@leiysky
leiysky enabled auto-merge (squash) September 20, 2026 19:21
@leiysky
leiysky merged commit da279f2 into main Sep 20, 2026
8 checks passed
@leiysky
leiysky deleted the dev/linux-nvme-qualify-depth branch September 20, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant