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:
Jens Axboe 2009-10-03 09:37:51 +02:00
parent 6a0afdf58d
commit 492af6350a
4 changed files with 6 additions and 1547 deletions

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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;
} }