From: Damien Le Moal <dlemoal@kernel.org>
To: Zhaoyang Huang <huangzhaoyang@gmail.com>, Jens Axboe <axboe@kernel.dk>
Cc: "zhaoyang.huang" <zhaoyang.huang@unisoc.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Yu Zhao <yuzhao@google.com>,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
steve.kang@unisoc.com
Subject: Re: [PATCH 3/3] block: introducing a bias over deadline's fifo_time
Date: Fri, 9 Feb 2024 10:58:40 +0900 [thread overview]
Message-ID: <e4078b85-5675-4fdb-a01f-7112342ec501@kernel.org> (raw)
In-Reply-To: <CAGWkznGnyPXM_DyyUxxZFoW=3K0B3Nh8sRZ8Lnsvm7WfES_fmA@mail.gmail.com>
On 2/9/24 09:28, Zhaoyang Huang wrote:
> On Fri, Feb 9, 2024 at 8:11 AM Jens Axboe <axboe@kernel.dk> wrote:
>>
>> On 2/8/24 5:02 PM, Zhaoyang Huang wrote:
>>> On Fri, Feb 9, 2024 at 1:49?AM Jens Axboe <axboe@kernel.dk> wrote:
>>>>
>>>> On 2/8/24 2:31 AM, zhaoyang.huang wrote:
>>>>> diff --git a/block/mq-deadline.c b/block/mq-deadline.c
>>>>> index f958e79277b8..43c08c3d6f18 100644
>>>>> --- a/block/mq-deadline.c
>>>>> +++ b/block/mq-deadline.c
>>>>> @@ -15,6 +15,7 @@
>>>>> #include <linux/compiler.h>
>>>>> #include <linux/rbtree.h>
>>>>> #include <linux/sbitmap.h>
>>>>> +#include "../kernel/sched/sched.h"
>>>>>
>>>>> #include <trace/events/block.h>
>>>>>
>>>>> @@ -802,6 +803,7 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
>>>>> u8 ioprio_class = IOPRIO_PRIO_CLASS(ioprio);
>>>>> struct dd_per_prio *per_prio;
>>>>> enum dd_prio prio;
>>>>> + int fifo_expire;
>>>>>
>>>>> lockdep_assert_held(&dd->lock);
>>>>>
>>>>> @@ -840,7 +842,9 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
>>>>> /*
>>>>> * set expire time and add to fifo list
>>>>> */
>>>>> - rq->fifo_time = jiffies + dd->fifo_expire[data_dir];
>>>>> + fifo_expire = task_is_realtime(current) ? dd->fifo_expire[data_dir] :
>>>>> + CFS_PROPORTION(current, dd->fifo_expire[data_dir]);
>>>>> + rq->fifo_time = jiffies + fifo_expire;
>>>>> insert_before = &per_prio->fifo_list[data_dir];
>>>>> #ifdef CONFIG_BLK_DEV_ZONED
>>>>> /*
>>>>
>>>> Hard pass on this blatant layering violation. Just like the priority
>>>> changes, this utterly fails to understand how things are properly
>>>> designed.
>>> IMHO, I don't think this is a layering violation. bio_set_ioprio is
>>> the one which introduces the scheduler thing into the block layer,
>>> this commit just wants to do a little improvement based on that. This
>>> commit helps CFS task save some IO time when preempted by RT heavily.
>>
>> Listen, both this and the previous content ioprio thing show a glaring
>> misunderstanding of how to design these kinds of things. You have no
>> grasp of what the different layers do, or how they interact. I'm not
>> sure how to put this kindly, but it's really an awful idea to hardcore
>> some CFS helper into the IO scheduler. The fact that you had to fiddle
>> around with headers to make it work was the first warning sign, and the
>> fact that you didn't stop at that point to consider how it could be
>> properly done makes it even worse.
>>
>> You need to stop sending kernel patches until you understand basic
>> software design. Neither of these patches are going anywhere until this
>> happens. There's been plenty of feedback to telling you that, but you
>> seem to just ignore it and plow on ahead. Stop.
> Ok, thanks for pointing this out, I will follow your advice. But I
> have to say that '[PATCHv9 1/1] block: introduce content activity
> based ioprio' really solved layering violation things. I would like to
> humbly ask for your kindly patient to have a look, as it is really
> helpful.
If properly designed, that patch would *not* be a block layer API/function and
so does not need review by block layer folks/Jens as it would simply set an IO
prio for a BIO issued by an FS. So that patch needs to be accepted by FS
people, for the FS you are interested in.
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2024-02-09 1:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-08 9:31 [PATCH 1/3] sched: fix compiling error on kernel/sched/sched.h zhaoyang.huang
2024-02-08 9:31 ` [PATCH 2/3] sched: introduce a macro for getting approximat CFS part of a timing value zhaoyang.huang
2024-02-08 9:31 ` [PATCH 3/3] block: introducing a bias over deadline's fifo_time zhaoyang.huang
2024-02-08 17:46 ` Bart Van Assche
2024-02-08 23:52 ` Zhaoyang Huang
2024-02-08 17:49 ` Jens Axboe
2024-02-09 0:02 ` Zhaoyang Huang
2024-02-09 0:10 ` Jens Axboe
2024-02-09 0:28 ` Zhaoyang Huang
2024-02-09 1:58 ` Damien Le Moal [this message]
2024-02-09 3:08 ` Zhaoyang Huang
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=e4078b85-5675-4fdb-a01f-7112342ec501@kernel.org \
--to=dlemoal@kernel.org \
--cc=axboe@kernel.dk \
--cc=huangzhaoyang@gmail.com \
--cc=juri.lelli@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=steve.kang@unisoc.com \
--cc=vincent.guittot@linaro.org \
--cc=yuzhao@google.com \
--cc=zhaoyang.huang@unisoc.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.