diff options
| author | Namjae Jeon <namjae.jeon@samsung.com> | 2013-04-09 08:57:06 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2013-04-09 08:57:06 -0400 |
| commit | fdc6fdc52e4630f5020281ce5450be7cc1887de2 (patch) | |
| tree | 9d14ed4f66c6fc75cc7cceb8c899f4129adfdd14 /Documentation/block | |
| parent | 64f8de4da7d3962632f152d3d702d68bb8accc29 (diff) | |
Documentation: cfq-iosched: update documentation help for cfq tunables
Add the documentation text for latency, target_latency & group_idle
tunnable parameters in the block/cfq-iosched.txt.
Also fix few typo(spelling) mistakes.
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com>
Language somewhat modified by Jens.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'Documentation/block')
| -rw-r--r-- | Documentation/block/cfq-iosched.txt | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/Documentation/block/cfq-iosched.txt b/Documentation/block/cfq-iosched.txt index a5eb7d19a65d..9887f0414c16 100644 --- a/Documentation/block/cfq-iosched.txt +++ b/Documentation/block/cfq-iosched.txt | |||
| @@ -5,7 +5,7 @@ The main aim of CFQ scheduler is to provide a fair allocation of the disk | |||
| 5 | I/O bandwidth for all the processes which requests an I/O operation. | 5 | I/O bandwidth for all the processes which requests an I/O operation. |
| 6 | 6 | ||
| 7 | CFQ maintains the per process queue for the processes which request I/O | 7 | CFQ maintains the per process queue for the processes which request I/O |
| 8 | operation(syncronous requests). In case of asynchronous requests, all the | 8 | operation(synchronous requests). In case of asynchronous requests, all the |
| 9 | requests from all the processes are batched together according to their | 9 | requests from all the processes are batched together according to their |
| 10 | process's I/O priority. | 10 | process's I/O priority. |
| 11 | 11 | ||
| @@ -66,6 +66,47 @@ This parameter is used to set the timeout of synchronous requests. Default | |||
| 66 | value of this is 124ms. In case to favor synchronous requests over asynchronous | 66 | value of this is 124ms. In case to favor synchronous requests over asynchronous |
| 67 | one, this value should be decreased relative to fifo_expire_async. | 67 | one, this value should be decreased relative to fifo_expire_async. |
| 68 | 68 | ||
| 69 | group_idle | ||
| 70 | ----------- | ||
| 71 | This parameter forces idling at the CFQ group level instead of CFQ | ||
| 72 | queue level. This was introduced after after a bottleneck was observed | ||
| 73 | in higher end storage due to idle on sequential queue and allow dispatch | ||
| 74 | from a single queue. The idea with this parameter is that it can be run with | ||
| 75 | slice_idle=0 and group_idle=8, so that idling does not happen on individual | ||
| 76 | queues in the group but happens overall on the group and thus still keeps the | ||
| 77 | IO controller working. | ||
| 78 | Not idling on individual queues in the group will dispatch requests from | ||
| 79 | multiple queues in the group at the same time and achieve higher throughput | ||
| 80 | on higher end storage. | ||
| 81 | |||
| 82 | Default value for this parameter is 8ms. | ||
| 83 | |||
| 84 | latency | ||
| 85 | ------- | ||
| 86 | This parameter is used to enable/disable the latency mode of the CFQ | ||
| 87 | scheduler. If latency mode (called low_latency) is enabled, CFQ tries | ||
| 88 | to recompute the slice time for each process based on the target_latency set | ||
| 89 | for the system. This favors fairness over throughput. Disabling low | ||
| 90 | latency (setting it to 0) ignores target latency, allowing each process in the | ||
| 91 | system to get a full time slice. | ||
| 92 | |||
| 93 | By default low latency mode is enabled. | ||
| 94 | |||
| 95 | target_latency | ||
| 96 | -------------- | ||
| 97 | This parameter is used to calculate the time slice for a process if cfq's | ||
| 98 | latency mode is enabled. It will ensure that sync requests have an estimated | ||
| 99 | latency. But if sequential workload is higher(e.g. sequential read), | ||
| 100 | then to meet the latency constraints, throughput may decrease because of less | ||
| 101 | time for each process to issue I/O request before the cfq queue is switched. | ||
| 102 | |||
| 103 | Though this can be overcome by disabling the latency_mode, it may increase | ||
| 104 | the read latency for some applications. This parameter allows for changing | ||
| 105 | target_latency through the sysfs interface which can provide the balanced | ||
| 106 | throughput and read latency. | ||
| 107 | |||
| 108 | Default value for target_latency is 300ms. | ||
| 109 | |||
| 69 | slice_async | 110 | slice_async |
| 70 | ----------- | 111 | ----------- |
| 71 | This parameter is same as of slice_sync but for asynchronous queue. The | 112 | This parameter is same as of slice_sync but for asynchronous queue. The |
| @@ -98,8 +139,8 @@ in the device exceeds this parameter. This parameter is used for synchronous | |||
| 98 | request. | 139 | request. |
| 99 | 140 | ||
| 100 | In case of storage with several disk, this setting can limit the parallel | 141 | In case of storage with several disk, this setting can limit the parallel |
| 101 | processing of request. Therefore, increasing the value can imporve the | 142 | processing of request. Therefore, increasing the value can improve the |
| 102 | performace although this can cause the latency of some I/O to increase due | 143 | performance although this can cause the latency of some I/O to increase due |
| 103 | to more number of requests. | 144 | to more number of requests. |
| 104 | 145 | ||
| 105 | CFQ Group scheduling | 146 | CFQ Group scheduling |
