docs: block: Fix grammar and spelling mistakes in bfq-iosched.rst

This patch corrects several grammar and spelling errors in the
Documentation/block/bfq-iosched.rst file. These changes improve
the clarity and readability of the documentation.

Signed-off-by: Karol Przybylski <karprzy7@gmail.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20240814155558.3672833-1-karprzy7@gmail.com
This commit is contained in:
Karol Przybylski 2024-08-14 17:55:58 +02:00 committed by Jonathan Corbet
parent 4538480b27
commit 2259b06938

View File

@ -9,7 +9,7 @@ controllers), BFQ's main features are:
- BFQ guarantees a high system and application responsiveness, and a - BFQ guarantees a high system and application responsiveness, and a
low latency for time-sensitive applications, such as audio or video low latency for time-sensitive applications, such as audio or video
players; players;
- BFQ distributes bandwidth, and not just time, among processes or - BFQ distributes bandwidth, not just time, among processes or
groups (switching back to time distribution when needed to keep groups (switching back to time distribution when needed to keep
throughput high). throughput high).
@ -111,7 +111,7 @@ Higher speed for code-development tasks
If some additional workload happens to be executed in parallel, then If some additional workload happens to be executed in parallel, then
BFQ executes the I/O-related components of typical code-development BFQ executes the I/O-related components of typical code-development
tasks (compilation, checkout, merge, ...) much more quickly than CFQ, tasks (compilation, checkout, merge, etc.) much more quickly than CFQ,
NOOP or DEADLINE. NOOP or DEADLINE.
High throughput High throughput
@ -127,9 +127,9 @@ Strong fairness, bandwidth and delay guarantees
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BFQ distributes the device throughput, and not just the device time, BFQ distributes the device throughput, and not just the device time,
among I/O-bound applications in proportion their weights, with any among I/O-bound applications in proportion to their weights, with any
workload and regardless of the device parameters. From these bandwidth workload and regardless of the device parameters. From these bandwidth
guarantees, it is possible to compute tight per-I/O-request delay guarantees, it is possible to compute a tight per-I/O-request delay
guarantees by a simple formula. If not configured for strict service guarantees by a simple formula. If not configured for strict service
guarantees, BFQ switches to time-based resource sharing (only) for guarantees, BFQ switches to time-based resource sharing (only) for
applications that would otherwise cause a throughput loss. applications that would otherwise cause a throughput loss.
@ -199,7 +199,7 @@ plus a lot of code, are borrowed from CFQ.
- On flash-based storage with internal queueing of commands - On flash-based storage with internal queueing of commands
(typically NCQ), device idling happens to be always detrimental (typically NCQ), device idling happens to be always detrimental
for throughput. So, with these devices, BFQ performs idling to throughput. So, with these devices, BFQ performs idling
only when strictly needed for service guarantees, i.e., for only when strictly needed for service guarantees, i.e., for
guaranteeing low latency or fairness. In these cases, overall guaranteeing low latency or fairness. In these cases, overall
throughput may be sub-optimal. No solution currently exists to throughput may be sub-optimal. No solution currently exists to
@ -212,7 +212,7 @@ plus a lot of code, are borrowed from CFQ.
and to reduce their latency. The most important action taken to and to reduce their latency. The most important action taken to
achieve this goal is to give to the queues associated with these achieve this goal is to give to the queues associated with these
applications more than their fair share of the device applications more than their fair share of the device
throughput. For brevity, we call just "weight-raising" the whole throughput. For brevity, we call it just "weight-raising" the whole
sets of actions taken by BFQ to privilege these queues. In sets of actions taken by BFQ to privilege these queues. In
particular, BFQ provides a milder form of weight-raising for particular, BFQ provides a milder form of weight-raising for
interactive applications, and a stronger form for soft real-time interactive applications, and a stronger form for soft real-time
@ -231,7 +231,7 @@ plus a lot of code, are borrowed from CFQ.
responsive in detecting interleaved I/O (cooperating processes), responsive in detecting interleaved I/O (cooperating processes),
that it enables BFQ to achieve a high throughput, by queue that it enables BFQ to achieve a high throughput, by queue
merging, even for queues for which CFQ needs a different merging, even for queues for which CFQ needs a different
mechanism, preemption, to get a high throughput. As such EQM is a mechanism, preemption, to get a high throughput. As such, EQM is a
unified mechanism to achieve a high throughput with interleaved unified mechanism to achieve a high throughput with interleaved
I/O. I/O.
@ -254,7 +254,7 @@ plus a lot of code, are borrowed from CFQ.
- First, with any proportional-share scheduler, the maximum - First, with any proportional-share scheduler, the maximum
deviation with respect to an ideal service is proportional to deviation with respect to an ideal service is proportional to
the maximum budget (slice) assigned to queues. As a consequence, the maximum budget (slice) assigned to queues. As a consequence,
BFQ can keep this deviation tight not only because of the BFQ can keep this deviation tight, not only because of the
accurate service of B-WF2Q+, but also because BFQ *does not* accurate service of B-WF2Q+, but also because BFQ *does not*
need to assign a larger budget to a queue to let the queue need to assign a larger budget to a queue to let the queue
receive a higher fraction of the device throughput. receive a higher fraction of the device throughput.
@ -327,7 +327,7 @@ applications. Unset this tunable if you need/want to control weights.
slice_idle slice_idle
---------- ----------
This parameter specifies how long BFQ should idle for next I/O This parameter specifies how long BFQ should idle for the next I/O
request, when certain sync BFQ queues become empty. By default request, when certain sync BFQ queues become empty. By default
slice_idle is a non-zero value. Idling has a double purpose: boosting slice_idle is a non-zero value. Idling has a double purpose: boosting
throughput and making sure that the desired throughput distribution is throughput and making sure that the desired throughput distribution is
@ -365,7 +365,7 @@ terms of I/O-request dispatches. To guarantee that the actual service
order then corresponds to the dispatch order, the strict_guarantees order then corresponds to the dispatch order, the strict_guarantees
tunable must be set too. tunable must be set too.
There is an important flipside for idling: apart from the above cases There is an important flip side to idling: apart from the above cases
where it is beneficial also for throughput, idling can severely impact where it is beneficial also for throughput, idling can severely impact
throughput. One important case is random workload. Because of this throughput. One important case is random workload. Because of this
issue, BFQ tends to avoid idling as much as possible, when it is not issue, BFQ tends to avoid idling as much as possible, when it is not
@ -475,7 +475,7 @@ max_budget
Maximum amount of service, measured in sectors, that can be provided Maximum amount of service, measured in sectors, that can be provided
to a BFQ queue once it is set in service (of course within the limits to a BFQ queue once it is set in service (of course within the limits
of the above timeout). According to what said in the description of of the above timeout). According to what was said in the description of
the algorithm, larger values increase the throughput in proportion to the algorithm, larger values increase the throughput in proportion to
the percentage of sequential I/O requests issued. The price of larger the percentage of sequential I/O requests issued. The price of larger
values is that they coarsen the granularity of short-term bandwidth values is that they coarsen the granularity of short-term bandwidth