<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/Documentation/block, branch v4.15</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.15</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.15'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2017-11-15T03:13:33Z</updated>
<entry>
<title>block, bfq: move debug blkio stats behind CONFIG_DEBUG_BLK_CGROUP</title>
<updated>2017-11-15T03:13:33Z</updated>
<author>
<name>Luca Miccio</name>
<email>lucmiccio@gmail.com</email>
</author>
<published>2017-11-13T06:34:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a33801e8b4735b8d473f963e5854172f9cde3e8b'/>
<id>urn:sha1:a33801e8b4735b8d473f963e5854172f9cde3e8b</id>
<content type='text'>
BFQ currently creates, and updates, its own instance of the whole
set of blkio statistics that cfq creates. Yet, from the comments
of Tejun Heo in [1], it turned out that most of these statistics
are meant/useful only for debugging. This commit makes BFQ create
the latter, debugging statistics only if the option
CONFIG_DEBUG_BLK_CGROUP is set.

By doing so, this commit also enables BFQ to enjoy a high perfomance
boost. The reason is that, if CONFIG_DEBUG_BLK_CGROUP is not set, then
BFQ has to update far fewer statistics, and, in particular, not the
heaviest to update.  To give an idea of the benefits, if
CONFIG_DEBUG_BLK_CGROUP is not set, then, on an Intel i7-4850HQ, and
with 8 threads doing random I/O in parallel on null_blk (configured
with 0 latency), the throughput of BFQ grows from 310 to 400 KIOPS
(+30%). We have measured similar or even much higher boosts with other
CPUs: e.g., +45% with an ARM CortexTM-A53 Octa-core. Our results have
been obtained and can be reproduced very easily with the script in [1].

[1] https://www.spinics.net/lists/linux-block/msg18943.html

Suggested-by: Tejun Heo &lt;tj@kernel.org&gt;
Suggested-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Tested-by: Lee Tibbert &lt;lee.tibbert@gmail.com&gt;
Tested-by: Oleksandr Natalenko &lt;oleksandr@natalenko.name&gt;
Signed-off-by: Luca Miccio &lt;lucmiccio@gmail.com&gt;
Signed-off-by: Paolo Valente &lt;paolo.valente@linaro.org&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>block, bfq: update blkio stats outside the scheduler lock</title>
<updated>2017-11-15T03:13:33Z</updated>
<author>
<name>Paolo Valente</name>
<email>paolo.valente@linaro.org</email>
</author>
<published>2017-11-13T06:34:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=24bfd19bb7890255693ee5cb6dc100d8d215d00b'/>
<id>urn:sha1:24bfd19bb7890255693ee5cb6dc100d8d215d00b</id>
<content type='text'>
bfq invokes various blkg_*stats_* functions to update the statistics
contained in the special files blkio.bfq.* in the blkio controller
groups, i.e., the I/O accounting related to the proportional-share
policy provided by bfq. The execution of these functions takes a
considerable percentage, about 40%, of the total per-request execution
time of bfq (i.e., of the sum of the execution time of all the bfq
functions that have to be executed to process an I/O request from its
creation to its destruction).  This reduces the request-processing
rate sustainable by bfq noticeably, even on a multicore CPU. In fact,
the bfq functions that invoke blkg_*stats_* functions cannot be
executed in parallel with the rest of the code of bfq, because both
are executed under the same same per-device scheduler lock.

To reduce this slowdown, this commit moves, wherever possible, the
invocation of these functions (more precisely, of the bfq functions
that invoke blkg_*stats_* functions) outside the critical sections
protected by the scheduler lock.

With this change, and with all blkio.bfq.* statistics enabled, the
throughput grows, e.g., from 250 to 310 KIOPS (+25%) on an Intel
i7-4850HQ, in case of 8 threads doing random I/O in parallel on
null_blk, with the latter configured with 0 latency. We obtained the
same or higher throughput boosts, up to +30%, with other processors
(some figures are reported in the documentation). For our tests, we
used the script [1], with which our results can be easily reproduced.

NOTE. This commit still protects the invocation of blkg_*stats_*
functions with the request_queue lock, because the group these
functions are invoked on may otherwise disappear before or while these
functions are executed.  Fortunately, tests without even this lock
show, by difference, that the serialization caused by this lock has a
little impact (at most ~5% of throughput reduction).

[1] https://github.com/Algodev-github/IOSpeed

Tested-by: Lee Tibbert &lt;lee.tibbert@gmail.com&gt;
Tested-by: Oleksandr Natalenko &lt;oleksandr@natalenko.name&gt;
Signed-off-by: Paolo Valente &lt;paolo.valente@linaro.org&gt;
Signed-off-by: Luca Miccio &lt;lucmiccio@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>doc, block, bfq: update max IOPS sustainable with BFQ</title>
<updated>2017-11-15T03:13:33Z</updated>
<author>
<name>Paolo Valente</name>
<email>paolo.valente@linaro.org</email>
</author>
<published>2017-11-13T06:34:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=68017e5d87a2477d40476f1a0a06f202ee79316b'/>
<id>urn:sha1:68017e5d87a2477d40476f1a0a06f202ee79316b</id>
<content type='text'>
We have investigated more deeply the performance of BFQ, in terms of
number of IOPS that can be processed by the CPU when BFQ is used as
I/O scheduler. In more detail, using the script [1], we have measured
the number of IOPS reached on top of a null block device configured
with zero latency, as a function of the workload (sequential read,
sequential write, random read, random write) and of the system (we
considered desktops, laptops and embedded systems).

Basing on the resulting figures, with this commit we update the
current, conservative IOPS range reported in BFQ documentation. In
particular, the documentation now reports, for each of three different
systems, the lowest number of IOPS obtained for that system with the
above test (namely, the value obtained with the workload leading to
the lowest IOPS).

[1] https://github.com/Algodev-github/IOSpeed

Reviewed-by: Lee Tibbert &lt;lee.tibbert@gmail.com&gt;
Signed-off-by: Paolo Valente &lt;paolo.valente@linaro.org&gt;
Signed-off-by: Luca Miccio &lt;lucmiccio@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>block: remove __bio_kmap_atomic</title>
<updated>2017-11-11T02:53:25Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2017-11-08T18:13:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d004a5e7d4dd6335ce6e2044af42f5e0fbebb51d'/>
<id>urn:sha1:d004a5e7d4dd6335ce6e2044af42f5e0fbebb51d</id>
<content type='text'>
This helper doesn't buy us much over calling kmap_atomic directly.
In fact in the only caller it does a bit of useless work as the
caller already has the bvec at hand, and said caller would even
buggy for a multi-segment bio due to the use of this helper.

So just remove it.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>block: kill bio_kmap/kunmap_irq()</title>
<updated>2017-11-11T02:53:25Z</updated>
<author>
<name>Jens Axboe</name>
<email>axboe@kernel.dk</email>
</author>
<published>2017-11-08T18:15:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=83f5f7ed72f316eda4c4c3833beebfe6578926f4'/>
<id>urn:sha1:83f5f7ed72f316eda4c4c3833beebfe6578926f4</id>
<content type='text'>
There are no users of it anymore.

Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>null_blk: add an usage for shared tags in documentation</title>
<updated>2017-11-07T16:25:37Z</updated>
<author>
<name>Minwoo Im</name>
<email>minwoo.im.dev@gmail.com</email>
</author>
<published>2017-11-07T16:25:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bf9fc98b736b8a3837040d5ce3a7caf04fa0859c'/>
<id>urn:sha1:bf9fc98b736b8a3837040d5ce3a7caf04fa0859c</id>
<content type='text'>
Add usage explanation for a shared_tags, introduced by commit:

82f402fefa50 ("null_blk: add support for shared tags")

Signed-off-by: Minwoo Im &lt;minwoo.im.dev@gmail.com&gt;

Reworded slightly.

Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>null_blk: fix default values in documentation</title>
<updated>2017-11-07T16:24:06Z</updated>
<author>
<name>Minwoo Im</name>
<email>minwoo.im.dev@gmail.com</email>
</author>
<published>2017-11-07T13:23:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e8815241173ebba4ccad490d4907b354b795fa5c'/>
<id>urn:sha1:e8815241173ebba4ccad490d4907b354b795fa5c</id>
<content type='text'>
null_blk.c has initial value of
(1) nr_devices as 1.
(2) completion_nsec as 10,000ns, not 10.000ns.
documentation should be updated for fixes above.

Signed-off-by: Minwoo Im &lt;minwoo.im.dev@gmail.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>null_blk: add usage hints for no_sched</title>
<updated>2017-10-13T16:52:39Z</updated>
<author>
<name>weiping zhang</name>
<email>zhangweiping@didichuxing.com</email>
</author>
<published>2017-10-13T16:26:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=fc186311f2233bb3f69f22b96babdf16a57c88a9'/>
<id>urn:sha1:fc186311f2233bb3f69f22b96babdf16a57c88a9</id>
<content type='text'>
This parameter provide an option to disable io scheduler when nullb*
in multi-queue mode.

Signed-off-by: weiping zhang &lt;zhangweiping@didichuxing.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>null_blk: update usage hints for submit_queues</title>
<updated>2017-10-13T16:52:37Z</updated>
<author>
<name>weiping zhang</name>
<email>zhangweiping@didichuxing.com</email>
</author>
<published>2017-10-13T16:26:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=23c4490d2b7f78a855f9c5675e26735fb61afe84'/>
<id>urn:sha1:23c4490d2b7f78a855f9c5675e26735fb61afe84</id>
<content type='text'>
update the range of submits_queues, and correct usage hints.

Signed-off-by: weiping zhang &lt;zhangweiping@didichuxing.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>doc, block, bfq: better describe how to properly configure bfq</title>
<updated>2017-08-31T19:55:26Z</updated>
<author>
<name>Paolo Valente</name>
<email>paolo.valente@linaro.org</email>
</author>
<published>2017-08-31T18:00:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2670cd1674055ab48a9607472c5ff14781b9b2ea'/>
<id>urn:sha1:2670cd1674055ab48a9607472c5ff14781b9b2ea</id>
<content type='text'>
Many users have reported the lack of an HOWTO for properly configuring
bfq as a function of the goal one wants to achieve (max
responsiveness, max throughput, ...). In fact, all needed details are
already provided in the documentation file bfq-iosched.txt. Yet the
document lacks guidance on which parameter descriptions to look
at. This commit adds some simple direction.

Signed-off-by: Paolo Valente &lt;paolo.valente@linaro.org&gt;
Reviewed-by: Jeremy Hickman &lt;jeremywh7@gmail.com&gt;
Reviewed-by: Laurentiu Nicola &lt;lnicola@dend.ro&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
</feed>
