Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1538851

[PATCHSET/RFC v2] blk-mq scheduling framework

From Jens Axboe <axboe@fb.com>
Newsgroups linux.kernel
Subject [PATCHSET/RFC v2] blk-mq scheduling framework
Date 2016-12-08 21:20 +0100
Message-ID <sMdkB-29H-3@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


As a followup to this posting from yesterday:

https://marc.info/?l=linux-block&m=148115232806065&w=2

this is version 2. I wanted to post a new one fairly quickly, as there
ended up being a number of potential crashes in v1. This one should be
solid, I've run mq-deadline on both NVMe and regular rotating storage,
and we handle the various merging cases correctly.

You can download it from git as well:

git://git.kernel.dk/linux-block blk-mq-sched.2

Note that this is based on for-4.10/block, which is in turn based on
v4.9-rc1. I suggest pulling it into my for-next branch, which would
then merge nicely with 'master' as well.

Changes since v1:

- Add Kconfig entries to allow the user to choose what the default
  scheduler should be for blk-mq, and whether that depends on the
  number of hardware queues.

- Properly abstract the whole get/put of a request, so we can manage
  the life time properly.

- Enable full merging on mq-deadline (front/back, bio-to-rq, rq-to-rq).
  Has full feature parity with deadline now.

- Export necessary symbols for compiling mq-deadline as a module.

- Various API adjustments for the mq schedulers.

- Various cleanups and improvements.

- Fix a lot of bugs. A lot. Upgrade!

 block/Kconfig.iosched    |   37 ++
 block/Makefile           |    3 
 block/blk-core.c         |    9 
 block/blk-exec.c         |    3 
 block/blk-flush.c        |    7 
 block/blk-merge.c        |    3 
 block/blk-mq-sched.c     |  265 +++++++++++++++++++
 block/blk-mq-sched.h     |  188 +++++++++++++
 block/blk-mq-tag.c       |    1 
 block/blk-mq.c           |  254 ++++++++++--------
 block/blk-mq.h           |   35 +-
 block/elevator.c         |  194 ++++++++++----
 block/mq-deadline.c      |  647 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/nvme/host/pci.c  |    1 
 include/linux/blk-mq.h   |    4 
 include/linux/elevator.h |   34 ++
 16 files changed, 1495 insertions(+), 190 deletions(-)

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCHSET/RFC v2] blk-mq scheduling framework Jens Axboe <axboe@fb.com> - 2016-12-08 21:20 +0100
  [PATCH 4/7] blk-flush: run the queue when inserting blk-mq flush Jens Axboe <axboe@fb.com> - 2016-12-08 21:20 +0100
    Re: [PATCH 4/7] blk-flush: run the queue when inserting blk-mq flush Hannes Reinecke <hare@suse.de> - 2016-12-09 07:50 +0100
  [PATCH 3/7] elevator: make the rqhash helpers exported Jens Axboe <axboe@fb.com> - 2016-12-08 21:20 +0100
    Re: [PATCH 3/7] elevator: make the rqhash helpers exported Hannes Reinecke <hare@suse.de> - 2016-12-09 07:50 +0100
  [PATCH 6/7] mq-deadline: add blk-mq adaptation of the deadline IO scheduler Jens Axboe <axboe@fb.com> - 2016-12-08 21:20 +0100
  [PATCH 7/7] blk-mq-sched: allow setting of default IO scheduler Jens Axboe <axboe@fb.com> - 2016-12-08 21:20 +0100

csiph-web