From: Bart Van Assche <bvanassche@acm.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Jaegeuk Kim <jaegeuk@kernel.org>,
Adam Manzanares <a.manzanares@samsung.com>,
Bart Van Assche <bvanassche@acm.org>
Subject: [PATCH v3 00/16] Improve I/O priority support
Date: Thu, 17 Jun 2021 17:44:40 -0700 [thread overview]
Message-ID: <20210618004456.7280-1-bvanassche@acm.org> (raw)
Hi Jens,
A feature that is missing from the Linux kernel for storage devices that
support I/O priorities is to set the I/O priority in requests involving page
cache writeback. Since the identity of the process that triggers page cache
writeback is not known in the writeback code, the priority set by ioprio_set()
is ignored. However, an I/O cgroup is associated with writeback requests
by certain filesystems. Hence this patch series that implements the following
changes:
* Add an rq-qos policy that makes the I/O priority configurable per I/O cgroup
and also that changes the I/O priority of requests to the lower of (request
I/O priority, cgroup I/O priority).
* Introduce one queue per I/O priority in the mq-deadline scheduler.
* Dispatch the highest priority requests first.
Please consider this patch series for kernel v5.14.
Thanks,
Bart.
Changes compared to v2:
- For the blk-ioprio rq-qos policy, switched from numeric to textual policy
names.
- Moved rq_qos_id_to_name() into debugfs code.
- Moved the mq-deadline I/O statistics into io.stat.
- Introduced the dd_per_prio data structure.
- Switched from a single sort list to one sort list per I/O priority.
- Removed the WARN_ON_ONCE(blkcg == NULL) statements.
Changes compared to v1:
- Moved the code for assigning an I/O priority into a new rq-qos policy.
- Dropped patch "block/mq-deadline: Reduce the read expiry time for
non-rotational media".
- Made sure that dd->async_depth >= 1.
- Implemented an aging mechanism such that lower priority requests are not
postponed forever.
Bart Van Assche (16):
block/Kconfig: Make the BLK_WBT and BLK_WBT_MQ entries consecutive
block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init()
calls
block/blk-rq-qos: Move a function from a header file into a C file
block: Introduce the ioprio rq-qos policy
block/mq-deadline: Add several comments
block/mq-deadline: Add two lockdep_assert_held() statements
block/mq-deadline: Remove two local variables
block/mq-deadline: Rename dd_init_queue() and dd_exit_queue()
block/mq-deadline: Improve compile-time argument checking
block/mq-deadline: Improve the sysfs show and store macros
block/mq-deadline: Reserve 25% of scheduler tags for synchronous
requests
block/mq-deadline: Micro-optimize the batching algorithm
block/mq-deadline: Add I/O priority support
block/mq-deadline: Track I/O statistics
block/mq-deadline: Add cgroup support
block/mq-deadline: Prioritize high-priority requests
Documentation/admin-guide/cgroup-v2.rst | 55 ++
block/Kconfig | 19 +-
block/Kconfig.iosched | 6 +
block/Makefile | 3 +
block/blk-cgroup.c | 14 +-
block/blk-ioprio.c | 262 +++++
block/blk-ioprio.h | 19 +
block/blk-mq-debugfs.c | 15 +
block/blk-rq-qos.h | 14 +-
block/mq-deadline-cgroup.c | 126 +++
block/mq-deadline-cgroup.h | 114 +++
block/mq-deadline-main.c | 1173 +++++++++++++++++++++++
block/mq-deadline.c | 815 ----------------
13 files changed, 1797 insertions(+), 838 deletions(-)
create mode 100644 block/blk-ioprio.c
create mode 100644 block/blk-ioprio.h
create mode 100644 block/mq-deadline-cgroup.c
create mode 100644 block/mq-deadline-cgroup.h
create mode 100644 block/mq-deadline-main.c
delete mode 100644 block/mq-deadline.c
next reply other threads:[~2021-06-18 0:45 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-18 0:44 Bart Van Assche [this message]
2021-06-18 0:44 ` [PATCH v3 01/16] block/Kconfig: Make the BLK_WBT and BLK_WBT_MQ entries consecutive Bart Van Assche
2021-06-18 17:09 ` Adam Manzanares
2021-06-18 19:49 ` Himanshu Madhani
2021-06-18 0:44 ` [PATCH v3 02/16] block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init() calls Bart Van Assche
2021-06-18 17:15 ` Adam Manzanares
2021-06-18 19:49 ` Himanshu Madhani
2021-06-21 14:24 ` Tejun Heo
2021-06-18 0:44 ` [PATCH v3 03/16] block/blk-rq-qos: Move a function from a header file into a C file Bart Van Assche
2021-06-18 17:22 ` Adam Manzanares
2021-06-18 19:49 ` Himanshu Madhani
2021-06-18 0:44 ` [PATCH v3 04/16] block: Introduce the ioprio rq-qos policy Bart Van Assche
2021-06-18 22:02 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 05/16] block/mq-deadline: Add several comments Bart Van Assche
2021-06-18 22:06 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 06/16] block/mq-deadline: Add two lockdep_assert_held() statements Bart Van Assche
2021-06-18 22:09 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 07/16] block/mq-deadline: Remove two local variables Bart Van Assche
2021-06-18 22:16 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 08/16] block/mq-deadline: Rename dd_init_queue() and dd_exit_queue() Bart Van Assche
2021-06-18 22:18 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 09/16] block/mq-deadline: Improve compile-time argument checking Bart Van Assche
2021-06-18 22:30 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 10/16] block/mq-deadline: Improve the sysfs show and store macros Bart Van Assche
2021-06-18 23:07 ` Adam Manzanares
2021-06-18 0:44 ` [PATCH v3 11/16] block/mq-deadline: Reserve 25% of scheduler tags for synchronous requests Bart Van Assche
2021-06-18 0:44 ` [PATCH v3 12/16] block/mq-deadline: Micro-optimize the batching algorithm Bart Van Assche
2021-06-18 0:44 ` [PATCH v3 13/16] block/mq-deadline: Add I/O priority support Bart Van Assche
2021-06-18 0:44 ` [PATCH v3 14/16] block/mq-deadline: Track I/O statistics Bart Van Assche
2021-06-18 0:44 ` [PATCH v3 15/16] block/mq-deadline: Add cgroup support Bart Van Assche
2021-06-18 0:44 ` [PATCH v3 16/16] block/mq-deadline: Prioritize high-priority requests Bart Van Assche
2021-08-20 0:45 ` Niklas Cassel
2021-08-20 18:04 ` Bart Van Assche
2021-08-20 23:05 ` Niklas Cassel
2021-08-20 23:38 ` Bart Van Assche
2021-08-23 7:36 ` Niklas Cassel
2021-08-23 17:15 ` Bart Van Assche
2021-08-23 23:01 ` Damien Le Moal
2021-08-24 21:33 ` Niklas Cassel
2021-06-21 16:06 ` [PATCH v3 00/16] Improve I/O priority support Jens Axboe
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=20210618004456.7280-1-bvanassche@acm.org \
--to=bvanassche@acm.org \
--cc=a.manzanares@samsung.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=jaegeuk@kernel.org \
--cc=linux-block@vger.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;
as well as URLs for NNTP newsgroup(s).