io-completion-polling · shipping · also Completion polling, Poll-mode completion processing

I/O completion polling

I/O completion polling checks for finished I/O requests in software instead of relying on an interrupt to initiate each completion check.

Related Observatory article: I/O completion polling on hesela.com

Polling need not mean waiting continuously for one request. SPDK's spdk_nvme_qpair_process_completions() handles ready completions and returns without waiting for outstanding commands to finish; a successful call can report zero completions. Applications can schedule further checks between other work [1].

That API requires one thread at a time to use a queue pair. Its max_completions argument limits the number of completions processed per call; zero means no such limit, not a request to wait until every outstanding command completes [1].

Polling and interrupt-assisted operation are not universally exclusive. SPDK also documents interrupt-capable PCIe and RDMA queue pairs, restricted to its primary process; after wakeup, software must still process completions. Check the transport and configuration rather than assuming every SPDK deployment disables interrupts [2].

A lower interrupt count is not a complete performance result. Tai et al. compare completion policies using latency, throughput and CPU cost; their calibrated-interrupt prototype emulates device notification on dedicated cores while executing real SSD I/O. Its results do not establish a universal winner for production workloads [3].

Relations

related
NVMe, NVMe completion queue, Interrupt coalescing

Citations

  1. SPDK: spdk_nvme_qpair_process_completions API contract (accessed 2026-10-20)
  2. SPDK: NVMe Interrupt Mode, supported transports and operational notes (accessed 2026-10-20)
  3. Tai et al., Optimizing Storage Performance with Calibrated Interrupts, OSDI 2021, sections 2, 4.2.1 and 5.1 (accessed 2026-10-23)
Sources & caveats
  • Definition concerns completion detection, not readiness polling, command submission or device health polling.
  • SPDK documentation checked on 2026-10-20; support depends on the implementation, transport and configuration.
  • No device benchmark, CPU-usage comparison or universal performance advantage is claimed.

JSON: /data/terms/io-completion-polling.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. I/O completion polling. Hesela. 2026-10-23. https://hesela.dev/terms/io-completion-polling/