From: Bart Van Assche <bvanassche@acm.org>
To: Hannes Reinecke <hare@suse.de>, Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Jaegeuk Kim <jaegeuk@kernel.org>,
Damien Le Moal <damien.lemoal@wdc.com>,
Ming Lei <ming.lei@redhat.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
Himanshu Madhani <himanshu.madhani@oracle.com>
Subject: Re: [PATCH 04/14] block: Introduce the ioprio rq-qos policy
Date: Thu, 10 Jun 2021 10:14:20 -0700 [thread overview]
Message-ID: <1ffd5799-ac6d-5ed8-c0aa-e2481e05de32@acm.org> (raw)
In-Reply-To: <d68c5b3d-362f-08e0-180e-bfc59b4a9d07@suse.de>
On 6/9/21 11:20 PM, Hannes Reinecke wrote:
> On 6/9/21 1:06 AM, Bart Van Assche wrote:
>> +static void blkcg_ioprio_track(struct rq_qos *rqos, struct request *rq,
>> + struct bio *bio)
>> +{
>> + struct ioprio_blkcg *blkcg = ioprio_blkcg_from_bio(bio);
>> +
>> + /*
>> + * Except for IOPRIO_CLASS_NONE, higher I/O priority numbers
>> + * correspond to a lower priority. Hence, the max_t() below selects
>> + * the lower priority of bi_ioprio and the cgroup I/O priority class.
>> + * If the cgroup priority has been set to IOPRIO_CLASS_NONE == 0, the
>> + * bio I/O priority is not modified. If the bio I/O priority equals
>> + * IOPRIO_CLASS_NONE, the cgroup I/O priority is assigned to the bio.
>> + */
>> + bio->bi_ioprio = max_t(u16, bio->bi_ioprio,
>> + IOPRIO_PRIO_VALUE(blkcg->prio_class, 0));
>> +}
>
> Sheesh. Now that is cheeky.
> First defining a (conceptually) complex policy setting (where people
> wonder where these policies came from), which then devolve into a simple
> max() setting of the priority value.
> This _really_ could do with a better explanation in the documentation,
> as then it's far easier to understand _why_ certain policies override
> others.
> IE this comment belongs in the documentation, as explanation of the
> underlying mechanics of the ioprio policies.
Hi Hannes,
blkcg_ioprio_track() is called from the hot path so I want this function
to be fast. Since the desired behavior can be implemented with a max() I
chose max() instead of e.g. using a lookup table.
I will address your comments about the documentation and the code.
Bart.
next prev parent reply other threads:[~2021-06-10 17:14 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-08 23:06 [PATCH 00/14] Improve I/O priority support Bart Van Assche
2021-06-08 23:06 ` [PATCH 01/14] block/Kconfig: Make the BLK_WBT and BLK_WBT_MQ entries consecutive Bart Van Assche
2021-06-09 4:14 ` Damien Le Moal
2021-06-09 7:03 ` Johannes Thumshirn
2021-06-10 6:02 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 02/14] block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init() calls Bart Van Assche
2021-06-09 4:19 ` Damien Le Moal
2021-06-09 7:05 ` Johannes Thumshirn
2021-06-10 6:02 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 03/14] block/blk-rq-qos: Move a function from a header file into a C file Bart Van Assche
2021-06-09 4:22 ` Damien Le Moal
2021-06-10 6:03 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 04/14] block: Introduce the ioprio rq-qos policy Bart Van Assche
2021-06-09 4:40 ` Damien Le Moal
2021-06-09 16:48 ` Bart Van Assche
2021-06-10 0:29 ` Damien Le Moal
2021-06-10 6:20 ` Hannes Reinecke
2021-06-10 17:14 ` Bart Van Assche [this message]
2021-06-08 23:06 ` [PATCH 05/14] block/mq-deadline: Add several comments Bart Van Assche
2021-06-10 6:21 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 06/14] block/mq-deadline: Add two lockdep_assert_held() statements Bart Van Assche
2021-06-10 6:21 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 07/14] block/mq-deadline: Remove two local variables Bart Van Assche
2021-06-10 6:22 ` Hannes Reinecke
2021-06-08 23:06 ` [PATCH 08/14] block/mq-deadline: Rename dd_init_queue() and dd_exit_queue() Bart Van Assche
2021-06-08 23:06 ` [PATCH 09/14] block/mq-deadline: Improve compile-time argument checking Bart Van Assche
2021-06-08 23:06 ` [PATCH 10/14] block/mq-deadline: Improve the sysfs show and store macros Bart Van Assche
2021-06-09 4:46 ` Damien Le Moal
2021-06-09 16:54 ` Bart Van Assche
2021-06-10 0:31 ` Damien Le Moal
2021-06-09 7:11 ` Johannes Thumshirn
2021-06-09 16:59 ` Bart Van Assche
2021-06-10 6:23 ` Hannes Reinecke
2021-06-08 23:07 ` [PATCH 11/14] block/mq-deadline: Reserve 25% of scheduler tags for synchronous requests Bart Van Assche
2021-06-10 6:26 ` Hannes Reinecke
2021-06-08 23:07 ` [PATCH 12/14] block/mq-deadline: Add I/O priority support Bart Van Assche
2021-06-09 5:03 ` Damien Le Moal
2021-06-09 17:25 ` Bart Van Assche
2021-06-10 0:39 ` Damien Le Moal
2021-06-10 6:35 ` Hannes Reinecke
2021-06-08 23:07 ` [PATCH 13/14] block/mq-deadline: Add cgroup support Bart Van Assche
2021-06-10 6:37 ` Hannes Reinecke
2021-06-08 23:07 ` [PATCH 14/14] block/mq-deadline: Prioritize high-priority requests Bart Van Assche
2021-06-09 5:10 ` Damien Le Moal
2021-06-10 6:43 ` Hannes Reinecke
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=1ffd5799-ac6d-5ed8-c0aa-e2481e05de32@acm.org \
--to=bvanassche@acm.org \
--cc=axboe@kernel.dk \
--cc=damien.lemoal@wdc.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=himanshu.madhani@oracle.com \
--cc=jaegeuk@kernel.org \
--cc=johannes.thumshirn@wdc.com \
--cc=linux-block@vger.kernel.org \
--cc=ming.lei@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).