All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Valente <paolo.valente@linaro.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	linux-block <linux-block@vger.kernel.org>,
	linux-mmc <linux-mmc@vger.kernel.org>,
	linux-mtd@lists.infradead.org, Pavel Machek <pavel@ucw.cz>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Richard Weinberger <richard@nod.at>,
	Artem Bityutskiy <dedekind1@gmail.com>,
	Adrian Hunter <adrian.hunter@intel.com>, Jan Kara <jack@suse.cz>,
	Andreas Herrmann <aherrmann@suse.com>,
	Mel Gorman <mgorman@suse.com>,
	Chunyan Zhang <zhang.chunyan@linaro.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	'Paolo Valente' via bfq-iosched <bfq-iosched@googlegroups.com>,
	Oleksandr Natalenko <oleksandr@natalenko.name>,
	Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH] block: BFQ default for single queue devices
Date: Wed, 3 Oct 2018 08:29:10 +0200	[thread overview]
Message-ID: <B5321A64-8A1A-42FF-A337-F4524BDA179B@linaro.org> (raw)
In-Reply-To: <05fdbe23-ec01-895f-e67e-abff85c1ece2@kernel.dk>



> Il giorno 02 ott 2018, alle ore 16:31, Jens Axboe <axboe@kernel.dk> ha =
scritto:
>=20
> On 10/2/18 6:43 AM, Linus Walleij wrote:
>> This sets BFQ as the default scheduler for single queue
>> block devices (nr_hw_queues =3D=3D 1) if it is available. This
>> affects notably MMC/SD-cards but notably also UBI and
>> the loopback device.
>>=20
>> I have been running it for a while without any negative
>> effects on my pet systems and I want some wider testing
>> so let's throw it out there and see what people say.
>> Admittedly my use cases are limited.
>>=20
>> I talked to Pavel a bit back and it turns out he has a
>> usecase for BFQ as well and I bet he also would like it
>> as default scheduler for that system (Pavel tell us more,
>> I don't remember what it was!)
>>=20
>> Intuitively I could understand that maybe we want to
>> leave the loop device (possibly others? nbd? rbd?) as
>> "none", as it is probably relying on a scheduler on the
>> device below it, so I'm open to passing in a scheduler hint
>> from the respective subsystem in say struct blk_mq_tag_set.
>> However that makes for a bit of syntactic dissonance
>> with the struct member ".nr_hw_queues" (I wonder how
>> the loop device can have 1 "hardware queue"?) so
>> maybe we should in that case also rename that struct
>> member to ".nr_queues" fair and square before we start
>> making adjustments for treating queues differently whether
>> they are in hardware or actually not.
>=20
> I think this should just be done with udev rules, and I'd
> prefer if the distros would lead the way on this, as they
> are the ones that will most likely see the most bug reports
> on a change like this.
>=20

Hi Jens,
I see your point, but I doubt this is the way to go, because of the
following flaws.

As also Linus Torvalds complained [1], people feel lost among
I/O-scheduler options.  Actual differences across I/O schedulers are
basically obscure to non experts.  In this respect, Linux-kernel
'users' are way more than a few top-level distros that can afford a
strong performance team, and that, basing on the input of such a team,
might venture light-heartedly to change a critical component like an
I/O scheduler.  Plus, as Linus Walleij pointed out, some users simply
are not distros that use udev.

So, probably 99% of Linux-kernel users will just stick to the default
I/O scheduler, mq-deadline, assuming that the algorithm by which that
scheduler was chosen was not "pick the scheduler with the longest
name", but "pick the best scheduler for most cases".  The problem is
that, for single-queue devices with a speed below 400/500 KIOPS, the
default scheduler is apparently incomparably worse than bfq in terms
of responsiveness and latency for time-sensitive applications [2], and
in terms of throughput reached while controlling I/O [3].  And, in all
other tests ran so far, by any entity or group I'm aware of, bfq
results basically on par with or better than mq-deadline.

So, I do understand your need for conservativeness, but, after so much
evidence on single-queue devices, and so many years! :), what's the
point in keeping Linux worse for virtually everybody, by default?

Thanks,
Paolo

[1] https://lkml.org/lkml/2017/2/21/791
[2] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php
[3] https://lwn.net/Articles/763603/



> --=20
> Jens Axboe

WARNING: multiple messages have this Message-ID (diff)
From: Paolo Valente <paolo.valente@linaro.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	linux-block <linux-block@vger.kernel.org>,
	linux-mmc <linux-mmc@vger.kernel.org>,
	linux-mtd@lists.infradead.org, Pavel Machek <pavel@ucw.cz>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Richard Weinberger <richard@nod.at>,
	Artem Bityutskiy <dedekind1@gmail.com>,
	Adrian Hunter <adrian.hunter@intel.com>, Jan Kara <jack@suse.cz>,
	Andreas Herrmann <aherrmann@suse.com>,
	Mel Gorman <mgorman@suse.com>,
	Chunyan Zhang <zhang.chunyan@linaro.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	'Paolo Valente' via bfq-iosched  <bfq-iosched@googlegroups.com>,
	Oleksandr Natalenko <oleksandr@natalenko.name>,
	Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH] block: BFQ default for single queue devices
Date: Wed, 3 Oct 2018 08:29:10 +0200	[thread overview]
Message-ID: <B5321A64-8A1A-42FF-A337-F4524BDA179B@linaro.org> (raw)
In-Reply-To: <05fdbe23-ec01-895f-e67e-abff85c1ece2@kernel.dk>



> Il giorno 02 ott 2018, alle ore 16:31, Jens Axboe <axboe@kernel.dk> ha scritto:
> 
> On 10/2/18 6:43 AM, Linus Walleij wrote:
>> This sets BFQ as the default scheduler for single queue
>> block devices (nr_hw_queues == 1) if it is available. This
>> affects notably MMC/SD-cards but notably also UBI and
>> the loopback device.
>> 
>> I have been running it for a while without any negative
>> effects on my pet systems and I want some wider testing
>> so let's throw it out there and see what people say.
>> Admittedly my use cases are limited.
>> 
>> I talked to Pavel a bit back and it turns out he has a
>> usecase for BFQ as well and I bet he also would like it
>> as default scheduler for that system (Pavel tell us more,
>> I don't remember what it was!)
>> 
>> Intuitively I could understand that maybe we want to
>> leave the loop device (possibly others? nbd? rbd?) as
>> "none", as it is probably relying on a scheduler on the
>> device below it, so I'm open to passing in a scheduler hint
>> from the respective subsystem in say struct blk_mq_tag_set.
>> However that makes for a bit of syntactic dissonance
>> with the struct member ".nr_hw_queues" (I wonder how
>> the loop device can have 1 "hardware queue"?) so
>> maybe we should in that case also rename that struct
>> member to ".nr_queues" fair and square before we start
>> making adjustments for treating queues differently whether
>> they are in hardware or actually not.
> 
> I think this should just be done with udev rules, and I'd
> prefer if the distros would lead the way on this, as they
> are the ones that will most likely see the most bug reports
> on a change like this.
> 

Hi Jens,
I see your point, but I doubt this is the way to go, because of the
following flaws.

As also Linus Torvalds complained [1], people feel lost among
I/O-scheduler options.  Actual differences across I/O schedulers are
basically obscure to non experts.  In this respect, Linux-kernel
'users' are way more than a few top-level distros that can afford a
strong performance team, and that, basing on the input of such a team,
might venture light-heartedly to change a critical component like an
I/O scheduler.  Plus, as Linus Walleij pointed out, some users simply
are not distros that use udev.

So, probably 99% of Linux-kernel users will just stick to the default
I/O scheduler, mq-deadline, assuming that the algorithm by which that
scheduler was chosen was not "pick the scheduler with the longest
name", but "pick the best scheduler for most cases".  The problem is
that, for single-queue devices with a speed below 400/500 KIOPS, the
default scheduler is apparently incomparably worse than bfq in terms
of responsiveness and latency for time-sensitive applications [2], and
in terms of throughput reached while controlling I/O [3].  And, in all
other tests ran so far, by any entity or group I'm aware of, bfq
results basically on par with or better than mq-deadline.

So, I do understand your need for conservativeness, but, after so much
evidence on single-queue devices, and so many years! :), what's the
point in keeping Linux worse for virtually everybody, by default?

Thanks,
Paolo

[1] https://lkml.org/lkml/2017/2/21/791
[2] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php
[3] https://lwn.net/Articles/763603/



> -- 
> Jens Axboe


WARNING: multiple messages have this Message-ID (diff)
From: Paolo Valente <paolo.valente@linaro.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	linux-block <linux-block@vger.kernel.org>,
	linux-mmc <linux-mmc@vger.kernel.org>,
	linux-mtd@lists.infradead.org, Pavel Machek <pavel@ucw.cz>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Richard Weinberger <richard@nod.at>,
	Artem Bityutskiy <dedekind1@gmail.com>,
	Adrian Hunter <adrian.hunter@intel.com>, Jan Kara <jack@suse.cz>,
	Andreas Herrmann <aherrmann@suse.com>,
	Mel Gorman <mgorman@suse.com>,
	Chunyan Zhang <zhang.chunyan@linaro.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	'Paolo Valente' via bfq-iosched <bfq-iosched@googlegroups.com>,
	Oleksandr Natalenko <oleksandr@natalenko.name>,
	Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH] block: BFQ default for single queue devices
Date: Wed, 3 Oct 2018 08:29:10 +0200	[thread overview]
Message-ID: <B5321A64-8A1A-42FF-A337-F4524BDA179B@linaro.org> (raw)
In-Reply-To: <05fdbe23-ec01-895f-e67e-abff85c1ece2@kernel.dk>



> Il giorno 02 ott 2018, alle ore 16:31, Jens Axboe <axboe@kernel.dk> ha scritto:
> 
> On 10/2/18 6:43 AM, Linus Walleij wrote:
>> This sets BFQ as the default scheduler for single queue
>> block devices (nr_hw_queues == 1) if it is available. This
>> affects notably MMC/SD-cards but notably also UBI and
>> the loopback device.
>> 
>> I have been running it for a while without any negative
>> effects on my pet systems and I want some wider testing
>> so let's throw it out there and see what people say.
>> Admittedly my use cases are limited.
>> 
>> I talked to Pavel a bit back and it turns out he has a
>> usecase for BFQ as well and I bet he also would like it
>> as default scheduler for that system (Pavel tell us more,
>> I don't remember what it was!)
>> 
>> Intuitively I could understand that maybe we want to
>> leave the loop device (possibly others? nbd? rbd?) as
>> "none", as it is probably relying on a scheduler on the
>> device below it, so I'm open to passing in a scheduler hint
>> from the respective subsystem in say struct blk_mq_tag_set.
>> However that makes for a bit of syntactic dissonance
>> with the struct member ".nr_hw_queues" (I wonder how
>> the loop device can have 1 "hardware queue"?) so
>> maybe we should in that case also rename that struct
>> member to ".nr_queues" fair and square before we start
>> making adjustments for treating queues differently whether
>> they are in hardware or actually not.
> 
> I think this should just be done with udev rules, and I'd
> prefer if the distros would lead the way on this, as they
> are the ones that will most likely see the most bug reports
> on a change like this.
> 

Hi Jens,
I see your point, but I doubt this is the way to go, because of the
following flaws.

As also Linus Torvalds complained [1], people feel lost among
I/O-scheduler options.  Actual differences across I/O schedulers are
basically obscure to non experts.  In this respect, Linux-kernel
'users' are way more than a few top-level distros that can afford a
strong performance team, and that, basing on the input of such a team,
might venture light-heartedly to change a critical component like an
I/O scheduler.  Plus, as Linus Walleij pointed out, some users simply
are not distros that use udev.

So, probably 99% of Linux-kernel users will just stick to the default
I/O scheduler, mq-deadline, assuming that the algorithm by which that
scheduler was chosen was not "pick the scheduler with the longest
name", but "pick the best scheduler for most cases".  The problem is
that, for single-queue devices with a speed below 400/500 KIOPS, the
default scheduler is apparently incomparably worse than bfq in terms
of responsiveness and latency for time-sensitive applications [2], and
in terms of throughput reached while controlling I/O [3].  And, in all
other tests ran so far, by any entity or group I'm aware of, bfq
results basically on par with or better than mq-deadline.

So, I do understand your need for conservativeness, but, after so much
evidence on single-queue devices, and so many years! :), what's the
point in keeping Linux worse for virtually everybody, by default?

Thanks,
Paolo

[1] https://lkml.org/lkml/2017/2/21/791
[2] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php
[3] https://lwn.net/Articles/763603/



> -- 
> Jens Axboe

  parent reply	other threads:[~2018-10-03  6:29 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-02 12:43 [PATCH] block: BFQ default for single queue devices Linus Walleij
2018-10-02 12:43 ` Linus Walleij
2018-10-02 14:31 ` Jens Axboe
2018-10-02 14:31   ` Jens Axboe
2018-10-02 14:45   ` Linus Walleij
2018-10-02 14:45     ` Linus Walleij
2018-10-03  6:29   ` Paolo Valente [this message]
2018-10-03  6:29     ` Paolo Valente
2018-10-03  6:29     ` Paolo Valente
2018-10-03  6:53     ` Linus Walleij
2018-10-03 13:25       ` Jan Kara
2018-10-04  7:45         ` Johannes Thumshirn
2018-10-04  7:45           ` Johannes Thumshirn
2018-10-04  8:24           ` Andreas Herrmann
2018-10-03  7:05     ` Artem Bityutskiy
2018-10-03  7:05       ` Artem Bityutskiy
2018-10-03  7:05       ` Artem Bityutskiy
2018-10-03  7:18       ` Linus Walleij
2018-10-03  7:42         ` Damien Le Moal
2018-10-03  7:42           ` Damien Le Moal
2018-10-03  8:28           ` Linus Walleij
2018-10-03  8:53             ` Damien Le Moal
2018-10-03  8:53               ` Damien Le Moal
2018-10-03  8:53               ` Damien Le Moal
2018-10-03 15:53             ` Paolo Valente
2018-10-03 15:53               ` Paolo Valente
2018-10-03 17:34               ` Bryan Gurney
2018-10-04  8:21                 ` Linus Walleij
2018-10-04  9:56                 ` Ulf Hansson
2018-10-03 12:51           ` Christoph Hellwig
2018-10-03 12:51             ` Christoph Hellwig
2018-10-03 14:58             ` Bart Van Assche
2018-10-03 14:58               ` Bart Van Assche
2018-10-03 15:01               ` Christoph Hellwig
2018-10-03 15:01                 ` Christoph Hellwig
2018-10-03 15:15                 ` Bart Van Assche
2018-10-03 15:15                   ` Bart Van Assche
2018-10-03 15:15                   ` Bart Van Assche
2018-10-05  6:24                   ` Christoph Hellwig
2018-10-05  6:24                     ` Christoph Hellwig
2018-10-03 15:52           ` Paolo Valente
2018-10-03 15:52             ` Paolo Valente
2018-10-03 15:52             ` Paolo Valente
2018-10-03 11:49     ` Oleksandr Natalenko
2018-10-03 11:49       ` Oleksandr Natalenko
2018-10-03 11:49       ` Oleksandr Natalenko
2018-10-03 14:51       ` Mark Brown
2018-10-03 14:51         ` Mark Brown
2018-10-03 15:55       ` Paolo Valente
2018-10-03 15:55         ` Paolo Valente
2018-10-03 15:55         ` Paolo Valente
2018-10-03 16:00         ` Bart Van Assche
2018-10-03 16:00           ` Bart Van Assche
2018-10-03 16:00           ` Bart Van Assche
2018-10-03 16:04           ` Paolo Valente
2018-10-03 16:04             ` Paolo Valente
2018-10-03 16:04             ` Paolo Valente
2018-10-04  7:38         ` Jan Kara
2018-10-04  7:38           ` Jan Kara
2018-10-04  8:14       ` Linus Walleij
2018-10-04 10:13         ` Mark Brown
2018-10-04 15:10           ` Bart Van Assche
2018-10-04 15:10             ` Bart Van Assche
2018-10-04 15:26             ` Mark Brown
2018-10-05  9:49         ` Pavel Machek
2018-10-04  8:25       ` Linus Walleij
2018-10-03 15:54     ` Bart Van Assche
2018-10-03 15:54       ` Bart Van Assche
2018-10-03 15:54       ` Bart Van Assche
2018-10-03 16:02       ` Paolo Valente
2018-10-03 16:02         ` Paolo Valente
2018-10-03 16:02         ` Paolo Valente
2018-10-03 16:09         ` Paolo Valente
2018-10-03 17:22         ` Paolo Valente
2018-10-03 17:22           ` Paolo Valente
2018-10-04 19:25       ` Alan Cox
2018-10-04 19:25         ` Alan Cox
2018-10-04 20:09         ` Bart Van Assche
2018-10-04 20:39           ` Paolo Valente
2018-10-04 20:39             ` Paolo Valente
2018-10-04 22:42             ` Bart Van Assche
2018-10-05  9:16               ` Jan Kara
2018-10-06  3:12                 ` Bart Van Assche
2018-10-06  6:46                   ` Paolo Valente
2018-10-06  6:46                     ` Paolo Valente
2018-10-06  6:46                     ` Paolo Valente
2018-10-06 16:20                     ` Bart Van Assche
2018-10-06 16:20                       ` Bart Van Assche
2018-10-06 16:46                       ` Paolo Valente
2018-10-06 16:46                         ` Paolo Valente
2018-10-06 16:46                         ` Paolo Valente
2018-10-05  9:28               ` Paolo Valente
2018-10-05  9:28                 ` Paolo Valente
2018-10-05  6:24           ` Artem Bityutskiy
2018-10-05  6:24             ` Artem Bityutskiy
2018-10-04 20:19         ` Paolo Valente
2018-10-04 20:19           ` Paolo Valente
2018-10-02 21:28 ` Richard Weinberger
2018-10-02 21:28   ` Richard Weinberger
2018-10-03 15:51 ` Paolo Valente
2018-10-03 15:51   ` Paolo Valente
2018-10-03 15:51   ` Paolo Valente
2018-10-05  8:04 ` Pavel Machek
2018-10-05  8:04   ` Pavel Machek

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=B5321A64-8A1A-42FF-A337-F4524BDA179B@linaro.org \
    --to=paolo.valente@linaro.org \
    --cc=adrian.hunter@intel.com \
    --cc=aherrmann@suse.com \
    --cc=axboe@kernel.dk \
    --cc=bfq-iosched@googlegroups.com \
    --cc=broonie@kernel.org \
    --cc=dedekind1@gmail.com \
    --cc=jack@suse.cz \
    --cc=linus.walleij@linaro.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mgorman@suse.com \
    --cc=oleksandr@natalenko.name \
    --cc=pavel@ucw.cz \
    --cc=richard@nod.at \
    --cc=ulf.hansson@linaro.org \
    --cc=zhang.chunyan@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 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.