From: Tejun Heo <tj@kernel.org>
To: Paolo Valente <paolo.valente@linaro.org>
Cc: Jens Axboe <axboe@kernel.dk>,
Fabio Checconi <fchecconi@gmail.com>,
Arianna Avanzini <avanzini.arianna@gmail.com>,
linux-block@vger.kernel.org,
Linux-Kernal <linux-kernel@vger.kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>,
Linus Walleij <linus.walleij@linaro.org>,
broonie@kernel.org
Subject: Re: [PATCH V3 02/16] block, bfq: add full hierarchical scheduling and cgroups support
Date: Tue, 18 Apr 2017 16:04:35 +0900 [thread overview]
Message-ID: <20170418070435.GB3899@wtj.duckdns.org> (raw)
In-Reply-To: <1E0945A9-43F8-496D-B631-FB293921F304@linaro.org>
Hello, Paolo.
On Wed, Apr 12, 2017 at 07:22:03AM +0200, Paolo Valente wrote:
> could you elaborate a bit more on this? I mean, cgroups support has
> been in BFQ (and CFQ) for almost ten years, perfectly working as far
> as I know. Of course it is perfectly working in terms of I/O and not
> of CPU bandwidth distribution; and, for the moment, it is effective
> only for devices below 30-50KIOPS. What's the point in throwing
> (momentarily?) away such a fundamental feature? What am I missing?
I've been trying to track down latency issues with the CPU controller
which basically takes the same approach and I'm not sure nesting
scheduler timelines is a good approach. It intuitively feels elegant
but seems to have some fundamental issues. IIUC, bfq isn't quite the
same in that it doesn't need load balancer across multiple queues and
it could be that bfq is close enough to the basic model that the
nested behavior maps to the correct scheduling behavior.
However, for example, in the CPU controller, the nested timelines
break sleeper boost. The boost is implemented by considering the
thread to have woken up upto some duration prior to the current time;
however, it only affects the timeline inside the cgroup and there's no
good way to propagate it upwards. The final result is two threads in
a cgroup with the double weight can behave significantly worse in
terms of latency compared to two threads with the weight of 1 in the
root.
Given that the nested scheduling ends up pretty expensive, I'm not
sure how good a model this nesting approach is. Especially if there
can be multiple queues, the weight distribution across cgroup
instances across multiple queues has to be coordinated globally
anyway, so the weight / cost adjustment part can't happen
automatically anyway as in single queue case. If we're going there,
we might as well implement cgroup support by actively modulating the
combined weights, which will make individual scheduling operations
cheaper and it easier to think about and guarantee latency behaviors.
If you think that bfq will stay single queue and won't need timeline
modifying heuristics (for responsiveness or whatever), the current
approach could be fine, but I'm a bit awry about committing to the
current approach if we're gonna encounter the same problems.
Thanks.
--
tejun
next prev parent reply other threads:[~2017-04-18 7:04 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-11 13:42 [PATCH V3 00/16] Introduce the BFQ I/O scheduler Paolo Valente
2017-04-11 13:43 ` [PATCH V3 01/16] block, bfq: introduce the BFQ-v0 I/O scheduler as an extra scheduler Paolo Valente
2017-04-12 20:19 ` kbuild test robot
2017-04-12 21:49 ` kbuild test robot
2017-04-11 13:43 ` [PATCH V3 02/16] block, bfq: add full hierarchical scheduling and cgroups support Paolo Valente
2017-04-11 21:47 ` Tejun Heo
2017-04-12 5:22 ` Paolo Valente
2017-04-18 7:04 ` Tejun Heo [this message]
2017-04-19 5:33 ` Paolo Valente
2017-04-19 7:08 ` Paolo Valente
2017-04-13 1:59 ` kbuild test robot
2017-04-11 13:43 ` [PATCH V3 03/16] block, bfq: improve throughput boosting Paolo Valente
2017-04-11 13:43 ` [PATCH V3 04/16] block, bfq: modify the peak-rate estimator Paolo Valente
2017-04-11 13:43 ` [PATCH V3 05/16] block, bfq: add more fairness with writes and slow processes Paolo Valente
2017-04-11 13:43 ` [PATCH V3 06/16] block, bfq: improve responsiveness Paolo Valente
2017-04-11 13:43 ` [PATCH V3 07/16] block, bfq: reduce I/O latency for soft real-time applications Paolo Valente
2017-04-11 13:43 ` [PATCH V3 08/16] block, bfq: preserve a low latency also with NCQ-capable drives Paolo Valente
2017-04-11 13:43 ` [PATCH V3 09/16] block, bfq: reduce latency during request-pool saturation Paolo Valente
2017-04-11 13:43 ` [PATCH V3 10/16] block, bfq: add Early Queue Merge (EQM) Paolo Valente
2017-04-11 13:43 ` [PATCH V3 11/16] block, bfq: reduce idling only in symmetric scenarios Paolo Valente
2017-04-11 13:43 ` [PATCH V3 12/16] block, bfq: boost the throughput on NCQ-capable flash-based devices Paolo Valente
2017-04-11 13:43 ` [PATCH V3 13/16] block, bfq: boost the throughput with random I/O on NCQ-capable HDDs Paolo Valente
2017-04-11 13:43 ` [PATCH V3 14/16] block, bfq: handle bursts of queue activations Paolo Valente
2017-04-11 13:43 ` [PATCH V3 15/16] block, bfq: remove all get and put of I/O contexts Paolo Valente
2017-04-11 13:43 ` [PATCH V3 16/16] block, bfq: split bfq-iosched.c into multiple source files Paolo Valente
2017-04-11 14:37 ` [PATCH V3 00/16] Introduce the BFQ I/O scheduler Bart Van Assche
2017-04-11 17:37 ` Paolo Valente
2017-04-11 18:31 ` Bart Van Assche
2017-04-12 6:01 ` Paolo Valente
2017-04-12 15:30 ` Bart Van Assche
2017-04-12 16:08 ` Paolo Valente
2017-04-16 8:14 ` Heinz Diehl
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=20170418070435.GB3899@wtj.duckdns.org \
--to=tj@kernel.org \
--cc=avanzini.arianna@gmail.com \
--cc=axboe@kernel.dk \
--cc=broonie@kernel.org \
--cc=fchecconi@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paolo.valente@linaro.org \
--cc=ulf.hansson@linaro.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