block: remove the anticipatory IO scheduler
AS is mostly a subset of CFQ, so there's little point in still providing this separate IO scheduler. Hopefully at some point we can get down to one single IO scheduler again, at least this brings us closer by having only one intelligent IO scheduler. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
6a0afdf58d
commit
492af6350a
@ -12,24 +12,14 @@ config IOSCHED_NOOP
|
|||||||
that do their own scheduling and require only minimal assistance from
|
that do their own scheduling and require only minimal assistance from
|
||||||
the kernel.
|
the kernel.
|
||||||
|
|
||||||
config IOSCHED_AS
|
|
||||||
tristate "Anticipatory I/O scheduler"
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
The anticipatory I/O scheduler is generally a good choice for most
|
|
||||||
environments, but is quite large and complex when compared to the
|
|
||||||
deadline I/O scheduler, it can also be slower in some cases
|
|
||||||
especially some database loads.
|
|
||||||
|
|
||||||
config IOSCHED_DEADLINE
|
config IOSCHED_DEADLINE
|
||||||
tristate "Deadline I/O scheduler"
|
tristate "Deadline I/O scheduler"
|
||||||
default y
|
default y
|
||||||
---help---
|
---help---
|
||||||
The deadline I/O scheduler is simple and compact, and is often as
|
The deadline I/O scheduler is simple and compact. It will provide
|
||||||
good as the anticipatory I/O scheduler, and in some database
|
CSCAN service with FIFO expiration of requests, switching to
|
||||||
workloads, better. In the case of a single process performing I/O to
|
a new point in the service tree and doing a batch of IO from there
|
||||||
a disk at any one time, its behaviour is almost identical to the
|
in case of expiry.
|
||||||
anticipatory I/O scheduler and so is a good choice.
|
|
||||||
|
|
||||||
config IOSCHED_CFQ
|
config IOSCHED_CFQ
|
||||||
tristate "CFQ I/O scheduler"
|
tristate "CFQ I/O scheduler"
|
||||||
@ -47,9 +37,6 @@ choice
|
|||||||
Select the I/O scheduler which will be used by default for all
|
Select the I/O scheduler which will be used by default for all
|
||||||
block devices.
|
block devices.
|
||||||
|
|
||||||
config DEFAULT_AS
|
|
||||||
bool "Anticipatory" if IOSCHED_AS=y
|
|
||||||
|
|
||||||
config DEFAULT_DEADLINE
|
config DEFAULT_DEADLINE
|
||||||
bool "Deadline" if IOSCHED_DEADLINE=y
|
bool "Deadline" if IOSCHED_DEADLINE=y
|
||||||
|
|
||||||
@ -63,7 +50,6 @@ endchoice
|
|||||||
|
|
||||||
config DEFAULT_IOSCHED
|
config DEFAULT_IOSCHED
|
||||||
string
|
string
|
||||||
default "anticipatory" if DEFAULT_AS
|
|
||||||
default "deadline" if DEFAULT_DEADLINE
|
default "deadline" if DEFAULT_DEADLINE
|
||||||
default "cfq" if DEFAULT_CFQ
|
default "cfq" if DEFAULT_CFQ
|
||||||
default "noop" if DEFAULT_NOOP
|
default "noop" if DEFAULT_NOOP
|
||||||
|
@ -9,7 +9,6 @@ obj-$(CONFIG_BLOCK) := elevator.o blk-core.o blk-tag.o blk-sysfs.o \
|
|||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_BSG) += bsg.o
|
obj-$(CONFIG_BLK_DEV_BSG) += bsg.o
|
||||||
obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
|
obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
|
||||||
obj-$(CONFIG_IOSCHED_AS) += as-iosched.o
|
|
||||||
obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o
|
obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o
|
||||||
obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
|
obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
|
||||||
|
|
||||||
|
1520
block/as-iosched.c
1520
block/as-iosched.c
File diff suppressed because it is too large
Load Diff
@ -154,10 +154,7 @@ static struct elevator_type *elevator_get(const char *name)
|
|||||||
|
|
||||||
spin_unlock(&elv_list_lock);
|
spin_unlock(&elv_list_lock);
|
||||||
|
|
||||||
if (!strcmp(name, "anticipatory"))
|
sprintf(elv, "%s-iosched", name);
|
||||||
sprintf(elv, "as-iosched");
|
|
||||||
else
|
|
||||||
sprintf(elv, "%s-iosched", name);
|
|
||||||
|
|
||||||
request_module("%s", elv);
|
request_module("%s", elv);
|
||||||
spin_lock(&elv_list_lock);
|
spin_lock(&elv_list_lock);
|
||||||
@ -193,10 +190,7 @@ static int __init elevator_setup(char *str)
|
|||||||
* Be backwards-compatible with previous kernels, so users
|
* Be backwards-compatible with previous kernels, so users
|
||||||
* won't get the wrong elevator.
|
* won't get the wrong elevator.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(str, "as"))
|
strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
|
||||||
strcpy(chosen_elevator, "anticipatory");
|
|
||||||
else
|
|
||||||
strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user