diff options
-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 |