From: Tao Cui <cui.tao@linux.dev>
To: Tejun Heo <tj@kernel.org>
Cc: cui.tao@linux.dev, josef@toxicopanda.com, axboe@kernel.dk,
cgroups@vger.kernel.org, linux-block@vger.kernel.org,
linux-kernel@vger.kernel.org, bpf@vger.kernel.org,
andrii@kernel.org, ast@kernel.org, daniel@iogearbox.net,
linux-kselftest@vger.kernel.org, Tao Cui <cuitao@kylinos.cn>
Subject: Re: [RFC PATCH 0/8] blk-iocost: BPF struct_ops cost model
Date: Wed, 9 Sep 2026 21:12:54 +0800 [thread overview]
Message-ID: <7ff19114-de0c-4118-a000-b236d8d30127@linux.dev> (raw)
In-Reply-To: <178889947167.2.14514677804554939704@kernel.org>
Hello, Tejun
在 2026/9/9 04:31, Tejun Heo 写道:
> Hello, Tao.
>
> On Tue, 08 Sep 2026 18:01:35 +0800, Tao Cui wrote:
>
>> 4. One model system-wide vs named models selectable per device (as
>> tcp-cc names are per-socket)?
>
> The struct_ops instance should be per-device. Loading a model for a device
> should switch it to BPF automatically. Switching back to the builtin model
> should detach the struct_ops.
>
>> 2. Per-cgroup state lifetime: iocg_id is the css id and is recycled
>> once the cgroup is removed, so models must treat it as a
>> transient key. Does the interface need a release(iocg_id)
>> callback so models can clean up per-cgroup state instead of
>> detecting reuse, or is per-cgroup bpf local storage, which
>> carries its own lifetime, the better home for model state?
>
> I'd pass blkcg as a kptr and add online/offline callbacks so the model can
> manage its per-cgroup state.
>
>> return value of 0 delegates the IO back to the builtin formula, so a
>> model which only handles some IO types cannot make the rest free.
>
> I don't think mixing BPF and builtin pricing makes sense, either per IO or
> between charging and request sizing. It seems convoluted and error-prone.
> Implementing the linear model in BPF is straightforward.
>
> Please combine the interface, registration, dispatch and configuration
> changes into one patch. These patches are small and implement one feature.
>
Thanks for the detailed review across the series.
All the comments make sense. I'm reworking the interface for v2
along those lines: the attachment model will be reworked, the
mixed builtin/BPF pricing path will go away so a model fully owns
pricing on a device it's attached to (including flushes), the
per-cgroup state handling is being reworked, operation flags will
be preserved, and sleepable models will be rejected during
verification.
The Kconfig dependency, the example model issues, the selftest
problems, and the patch organization will all be addressed as well.
I'll post v2 once it's ready.
Thanks,
Tao
> Thanks.
>
prev parent reply other threads:[~2026-09-09 13:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 10:01 Tao Cui
2026-09-08 10:01 ` [RFC PATCH 1/8] blk-iocost: add iocost_ioc_tick tracepoint for per-period device summary Tao Cui
2026-09-08 10:01 ` [RFC PATCH 2/8] blk-iocost: define iocost_model_ops cost model interface Tao Cui
2026-09-08 20:31 ` Tejun Heo
2026-09-08 10:01 ` [RFC PATCH 3/8] blk-iocost: implement BPF struct_ops registration Tao Cui
2026-09-08 20:31 ` Tejun Heo
2026-09-08 10:01 ` [RFC PATCH 4/8] blk-iocost: dispatch cost calculation to registered BPF model Tao Cui
2026-09-08 20:31 ` Tejun Heo
2026-09-08 10:01 ` [RFC PATCH 5/8] blk-iocost: add ctrl=bpf per-device opt-in Tao Cui
2026-09-08 10:01 ` [RFC PATCH 6/8] selftests/bpf: add iocost cost model test Tao Cui
2026-09-08 20:31 ` Tejun Heo
2026-09-08 10:01 ` [RFC PATCH 7/8] selftests/bpf: add multi-stream sequentiality example model Tao Cui
2026-09-08 20:31 ` Tejun Heo
2026-09-08 10:01 ` [RFC PATCH 8/8] docs: cgroup-v2: document io.cost ctrl=bpf option Tao Cui
2026-09-08 20:31 ` [RFC PATCH 0/8] blk-iocost: BPF struct_ops cost model Tejun Heo
2026-09-09 13:12 ` Tao Cui [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7ff19114-de0c-4118-a000-b236d8d30127@linux.dev \
--to=cui.tao@linux.dev \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=axboe@kernel.dk \
--cc=bpf@vger.kernel.org \
--cc=cgroups@vger.kernel.org \
--cc=cuitao@kylinos.cn \
--cc=daniel@iogearbox.net \
--cc=josef@toxicopanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®