All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8 v3] block: Fix IO priority mess
@ 2022-06-20 16:11 Jan Kara
  2022-06-20 16:11 ` [PATCH 1/8] block: fix default IO priority handling again Jan Kara
                   ` (7 more replies)
  0 siblings, 8 replies; 25+ messages in thread
From: Jan Kara @ 2022-06-20 16:11 UTC (permalink / raw)
  To: Jens Axboe
  Cc: linux-block, Damien Le Moal, Bart Van Assche, Niklas Cassel, Jan Kara

Hello,

This is the third revision of my patches fixing IO priority handling in the
block layer.

Changes since v2:
* added some comments to better explain things
* changed handling of ioprio_get(2)
* a few small tweaks based on Damien's feedback

Original cover letter:
Recently, I've been looking into 10% regression reported by our performance
measurement infrastructure in reaim benchmark that was bisected down to
5a9d041ba2f6 ("block: move io_context creation into where it's needed"). This
didn't really make much sense and it took me a while to understand this but the
culprit is actually in even older commit e70344c05995 ("block: fix default IO
priority handling") and 5a9d041ba2f6 just made the breakage visible.
Essentially the problem was that after these commits some IO was queued with IO
priority class IOPRIO_CLASS_BE while other IO was queued with IOPRIO_CLASS_NONE
and as a result they could not be merged together resulting in performance
regression. I think what commit e70344c05995 ("block: fix default IO priority
handling") did is actually broken not only because of this performance
regression but because of other reasons as well (see changelog of patch 3/8 for
details). Besides this problem, there are multiple other inconsistencies in the
IO priority handling throughout the block stack we have identified when
discussing this with Damien Le Moal. So this patch set aims at fixing all these
various issues.

Note that there are a few choices I've made I'm not 100% sold on. In particular
the conversion of blk-ioprio from rqos is somewhat disputable since it now
incurs a cost similar to blk-throttle in the bio submission fast path (need to
load bio->bi_blkg->pd[ioprio_policy.plid]).  If people think the removed
boilerplate code is not worth the cost, I can certainly go via the "additional
rqos hook" path.

								Honza
Previous versions:
Link: http://lore.kernel.org/r/20220601132347.13543-1-jack@suse.cz # v1
Link: http://lore.kernel.org/r/20220615160437.5478-1-jack@suse.cz # v2

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2022-06-21  8:31 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-20 16:11 [PATCH 0/8 v3] block: Fix IO priority mess Jan Kara
2022-06-20 16:11 ` [PATCH 1/8] block: fix default IO priority handling again Jan Kara
2022-06-20 23:44   ` Damien Le Moal
2022-06-20 16:11 ` [PATCH 2/8] block: Return effective IO priority from get_current_ioprio() Jan Kara
2022-06-20 23:45   ` Damien Le Moal
2022-06-20 16:11 ` [PATCH 3/8] block: Make ioprio_best() static Jan Kara
2022-06-20 23:47   ` Damien Le Moal
2022-06-21  8:01     ` Jan Kara
2022-06-20 16:11 ` [PATCH 4/8] block: Fix handling of tasks without ioprio in ioprio_get(2) Jan Kara
2022-06-20 20:28   ` kernel test robot
2022-06-20 20:28   ` kernel test robot
2022-06-20 21:49   ` kernel test robot
2022-06-20 23:57   ` Damien Le Moal
2022-06-21  8:15     ` Jan Kara
2022-06-21  8:31       ` Damien Le Moal
2022-06-21  0:11   ` kernel test robot
2022-06-20 16:11 ` [PATCH 5/8] blk-ioprio: Remove unneeded field Jan Kara
2022-06-20 23:58   ` Damien Le Moal
2022-06-20 16:11 ` [PATCH 6/8] blk-ioprio: Convert from rqos policy to direct call Jan Kara
2022-06-21  0:00   ` Damien Le Moal
2022-06-21  8:21     ` Jan Kara
2022-06-20 16:11 ` [PATCH 7/8] block: Initialize bio priority earlier Jan Kara
2022-06-21  0:01   ` Damien Le Moal
2022-06-20 16:11 ` [PATCH 8/8] block: Always initialize bio IO priority on submit Jan Kara
2022-06-21  0:02   ` Damien Le Moal

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.