diff options
| author | Alan D. Brunelle <Alan.Brunelle@hp.com> | 2007-10-15 07:22:26 -0400 |
|---|---|---|
| committer | Jens Axboe <jens.axboe@oracle.com> | 2007-10-16 03:59:55 -0400 |
| commit | 23c76983e23628c7762137a00651e3e371aa97d3 (patch) | |
| tree | 3e335f0eb806b7890542420d6c2f635823d210ff | |
| parent | 26bbb29a2a4e1491238ae49bf3294955dc0ab662 (diff) | |
Some IO scheduler cleanup in Documentation/block
as-iosched.txt:
o Changed IO scheduler selection text to a reference to the
switching-sched.txt file.
o Fixed typo: 'for up time...' -> 'for up to...'
o Added short description of the est_time file.
deadline-iosched.txt:
o Changed IO scheduler selection text to a reference to the
switching-sched.txt file.
o Removed references to non-existent seek-cost and stream_unit.
o Fixed typo: 'write_starved' -> 'writes_starved'
switching-sched.txt:
o Added in boot-time argument to set the default IO scheduler. (From
as-iosched.txt)
o Added in sysfs mount instructions. (From deadline-iosched.txt)
Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| -rw-r--r-- | Documentation/block/as-iosched.txt | 21 | ||||
| -rw-r--r-- | Documentation/block/deadline-iosched.txt | 23 | ||||
| -rw-r--r-- | Documentation/block/switching-sched.txt | 21 |
3 files changed, 41 insertions, 24 deletions
diff --git a/Documentation/block/as-iosched.txt b/Documentation/block/as-iosched.txt index a598fe10a297..738b72be128e 100644 --- a/Documentation/block/as-iosched.txt +++ b/Documentation/block/as-iosched.txt | |||
| @@ -20,15 +20,10 @@ actually has a head for each physical device in the logical RAID device. | |||
| 20 | However, setting the antic_expire (see tunable parameters below) produces | 20 | However, setting the antic_expire (see tunable parameters below) produces |
| 21 | very similar behavior to the deadline IO scheduler. | 21 | very similar behavior to the deadline IO scheduler. |
| 22 | 22 | ||
| 23 | |||
| 24 | Selecting IO schedulers | 23 | Selecting IO schedulers |
| 25 | ----------------------- | 24 | ----------------------- |
| 26 | To choose IO schedulers at boot time, use the argument 'elevator=deadline'. | 25 | Refer to Documentation/block/switching-sched.txt for information on |
| 27 | 'noop', 'as' and 'cfq' (the default) are also available. IO schedulers are | 26 | selecting an io scheduler on a per-device basis. |
| 28 | assigned globally at boot time only presently. It's also possible to change | ||
| 29 | the IO scheduler for a determined device on the fly, as described in | ||
| 30 | Documentation/block/switching-sched.txt. | ||
| 31 | |||
| 32 | 27 | ||
| 33 | Anticipatory IO scheduler Policies | 28 | Anticipatory IO scheduler Policies |
| 34 | ---------------------------------- | 29 | ---------------------------------- |
| @@ -115,7 +110,7 @@ statistics (average think time, average seek distance) on the process | |||
| 115 | that submitted the just completed request are examined. If it seems | 110 | that submitted the just completed request are examined. If it seems |
| 116 | likely that that process will submit another request soon, and that | 111 | likely that that process will submit another request soon, and that |
| 117 | request is likely to be near the just completed request, then the IO | 112 | request is likely to be near the just completed request, then the IO |
| 118 | scheduler will stop dispatching more read requests for up time (antic_expire) | 113 | scheduler will stop dispatching more read requests for up to (antic_expire) |
| 119 | milliseconds, hoping that process will submit a new request near the one | 114 | milliseconds, hoping that process will submit a new request near the one |
| 120 | that just completed. If such a request is made, then it is dispatched | 115 | that just completed. If such a request is made, then it is dispatched |
| 121 | immediately. If the antic_expire wait time expires, then the IO scheduler | 116 | immediately. If the antic_expire wait time expires, then the IO scheduler |
| @@ -165,3 +160,13 @@ The parameters are: | |||
| 165 | for big seek time devices though not a linear correspondence - most | 160 | for big seek time devices though not a linear correspondence - most |
| 166 | processes have only a few ms thinktime. | 161 | processes have only a few ms thinktime. |
| 167 | 162 | ||
| 163 | In addition to the tunables above there is a read-only file named est_time | ||
| 164 | which, when read, will show: | ||
| 165 | |||
| 166 | - The probability of a task exiting without a cooperating task | ||
| 167 | submitting an anticipated IO. | ||
| 168 | |||
| 169 | - The current mean think time. | ||
| 170 | |||
| 171 | - The seek distance used to determine if an incoming IO is better. | ||
| 172 | |||
diff --git a/Documentation/block/deadline-iosched.txt b/Documentation/block/deadline-iosched.txt index 03775dd99983..c23cab13c3d1 100644 --- a/Documentation/block/deadline-iosched.txt +++ b/Documentation/block/deadline-iosched.txt | |||
| @@ -5,16 +5,10 @@ This little file attempts to document how the deadline io scheduler works. | |||
| 5 | In particular, it will clarify the meaning of the exposed tunables that may be | 5 | In particular, it will clarify the meaning of the exposed tunables that may be |
| 6 | of interest to power users. | 6 | of interest to power users. |
| 7 | 7 | ||
| 8 | Each io queue has a set of io scheduler tunables associated with it. These | 8 | Selecting IO schedulers |
| 9 | tunables control how the io scheduler works. You can find these entries | 9 | ----------------------- |
| 10 | in: | 10 | Refer to Documentation/block/switching-sched.txt for information on |
| 11 | 11 | selecting an io scheduler on a per-device basis. | |
| 12 | /sys/block/<device>/queue/iosched | ||
| 13 | |||
| 14 | assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted, | ||
| 15 | you can do so by typing: | ||
| 16 | |||
| 17 | # mount none /sys -t sysfs | ||
| 18 | 12 | ||
| 19 | 13 | ||
| 20 | ******************************************************************************** | 14 | ******************************************************************************** |
| @@ -41,14 +35,11 @@ fifo_batch | |||
| 41 | 35 | ||
| 42 | When a read request expires its deadline, we must move some requests from | 36 | When a read request expires its deadline, we must move some requests from |
| 43 | the sorted io scheduler list to the block device dispatch queue. fifo_batch | 37 | the sorted io scheduler list to the block device dispatch queue. fifo_batch |
| 44 | controls how many requests we move, based on the cost of each request. A | 38 | controls how many requests we move. |
| 45 | request is either qualified as a seek or a stream. The io scheduler knows | ||
| 46 | the last request that was serviced by the drive (or will be serviced right | ||
| 47 | before this one). See seek_cost and stream_unit. | ||
| 48 | 39 | ||
| 49 | 40 | ||
| 50 | write_starved (number of dispatches) | 41 | writes_starved (number of dispatches) |
| 51 | ------------- | 42 | -------------- |
| 52 | 43 | ||
| 53 | When we have to move requests from the io scheduler queue to the block | 44 | When we have to move requests from the io scheduler queue to the block |
| 54 | device dispatch queue, we always give a preference to reads. However, we | 45 | device dispatch queue, we always give a preference to reads. However, we |
diff --git a/Documentation/block/switching-sched.txt b/Documentation/block/switching-sched.txt index 5fa130a67531..634c952e1964 100644 --- a/Documentation/block/switching-sched.txt +++ b/Documentation/block/switching-sched.txt | |||
| @@ -1,3 +1,18 @@ | |||
| 1 | To choose IO schedulers at boot time, use the argument 'elevator=deadline'. | ||
| 2 | 'noop', 'as' and 'cfq' (the default) are also available. IO schedulers are | ||
| 3 | assigned globally at boot time only presently. | ||
| 4 | |||
| 5 | Each io queue has a set of io scheduler tunables associated with it. These | ||
| 6 | tunables control how the io scheduler works. You can find these entries | ||
| 7 | in: | ||
| 8 | |||
| 9 | /sys/block/<device>/queue/iosched | ||
| 10 | |||
| 11 | assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted, | ||
| 12 | you can do so by typing: | ||
| 13 | |||
| 14 | # mount none /sys -t sysfs | ||
| 15 | |||
| 1 | As of the Linux 2.6.10 kernel, it is now possible to change the | 16 | As of the Linux 2.6.10 kernel, it is now possible to change the |
| 2 | IO scheduler for a given block device on the fly (thus making it possible, | 17 | IO scheduler for a given block device on the fly (thus making it possible, |
| 3 | for instance, to set the CFQ scheduler for the system default, but | 18 | for instance, to set the CFQ scheduler for the system default, but |
| @@ -20,3 +35,9 @@ noop anticipatory deadline [cfq] | |||
| 20 | # echo anticipatory > /sys/block/hda/queue/scheduler | 35 | # echo anticipatory > /sys/block/hda/queue/scheduler |
| 21 | # cat /sys/block/hda/queue/scheduler | 36 | # cat /sys/block/hda/queue/scheduler |
| 22 | noop [anticipatory] deadline cfq | 37 | noop [anticipatory] deadline cfq |
| 38 | |||
| 39 | Each io queue has a set of io scheduler tunables associated with it. These | ||
| 40 | tunables control how the io scheduler works. You can find these entries | ||
| 41 | in: | ||
| 42 | |||
| 43 | /sys/block/<device>/queue/iosched | ||
