a36e71f996
If we have processes that are working in close proximity to each other on disk, we don't want to idle wait. Instead allow the close process to issue a request, getting better aggregate bandwidth. The anticipatory scheduler has similar checks, noop and deadline do not need it since they don't care about process <-> io mappings. The code for CFQ is a little more involved though, since we split request queues into per-process contexts. This fixes a performance problem with eg dump(8), since it uses several processes in some silly attempt to speed IO up. Even if dump(8) isn't really a valid case (it should be fixed by using CLONE_IO), there are other cases where we see close processes and where idling ends up hurting performance. Credit goes to Jeff Moyer <jmoyer@redhat.com> for writing the initial implementation. Signed-off-by: Jens Axboe <jens.axboe@oracle.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Kconfig.iosched | ||
Makefile | ||
as-iosched.c | ||
blk-barrier.c | ||
blk-core.c | ||
blk-exec.c | ||
blk-integrity.c | ||
blk-ioc.c | ||
blk-map.c | ||
blk-merge.c | ||
blk-settings.c | ||
blk-softirq.c | ||
blk-sysfs.c | ||
blk-tag.c | ||
blk-timeout.c | ||
blk.h | ||
bsg.c | ||
cfq-iosched.c | ||
cmd-filter.c | ||
compat_ioctl.c | ||
deadline-iosched.c | ||
elevator.c | ||
genhd.c | ||
ioctl.c | ||
noop-iosched.c | ||
scsi_ioctl.c |