New i10 I/O Scheduler Proposed For Linux To Optimize Batching
The "i10" scheduler is the proposal for this new Linux I/O solution to amortize the remote access latency while increasing I/O throughput.
The i10 I/O scheduler proposal sent out by Rachit Agarwal explains that it "performs batching per hctx in terms of #requests, #bytes, and timeouts (at microseconds granularity). i10 starts dispatching only when #requests or #bytes is larger than a default threshold or when a timer expires. After that, batching dispatch would happen, allowing batching at device drivers along with "bd->last" and ".commit_rqs"...We have tested the i10 I/O scheduler with nvme-tcp optimizaitons and batching dispatch, varying number of cores, varying read/write ratios, and varying request sizes, and with NVMe SSD and RAM block device. For NVMe SSDs, the i10 I/O scheduler achieves ~60% improvements in terms of IOPS per core over "noop" I/O scheduler...While other schedulers may also batch I/O (e.g., mq-deadline), the optimization target in the i10 I/O scheduler is throughput maximization. Hence there is no latency target nor a need for a global tracking context, so a new scheduler is needed rather than to build this functionality to an existing scheduler."
The i10 scheduler was born out of research from Cornell University.
More details on the proposed i10 Linux I/O scheduler via the kernel mailing list.