Re: [RFC 0/2] block: Introduce a BPF-based I/O scheduler
From: Bart Van Assche
Date: Fri Mar 27 2026 - 11:54:11 EST
On 3/27/26 4:47 AM, Chengkaitao wrote:
I have been working on adding a new BPF-based I/O scheduler. It has both
kernel and user-space parts. In kernel space, using per-ctx,
Does "ctx" perhaps refer to struct blk_mq_hw_ctx? If so, please use the abbreviation "hctx" to prevent confusion with struct blk_mq_ctx (block
layer software queue).
For what type of block devices is this new type of I/O scheduler intended? This new type of I/O scheduler is not appropriate for hard
disks. To schedule I/O effectively for harddisks, an I/O scheduler must
be aware of all pending I/O requests. This is why the mq-deadline I/O
scheduler maintains a single list of requests across all hardware
queues.
Additionally, this new I/O scheduler is not appropriate for the fastest
block devices. For very fast block devices, any I/O scheduler incurs a
measurable overhead.
I implemented
a simple elevator that exposes a set of BPF hooks. The goal is to move the
policy side of I/O scheduling out of the kernel and into user space,
What does "into user space" mean in this context? As you know BPF code
runs in kernel context.
Thanks,
Bart.