aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2006-06-01 04:07:26 -0400
committerJens Axboe <axboe@suse.de>2006-06-01 04:07:26 -0400
commite0de0206a2a37cd3e0ba9954d9f863e11d6d1782 (patch)
tree58ba74a2f8e0edce59c770c74d019d4e1e3c98fd
parentba8f5baba79da8eb502f8534c3a8ecb64aceb790 (diff)
[PATCH] cfq-iosched: check busy queues before deciding we are idle
For just one busy queue (like async write out), we often overlooked that we could queue more io and decided we were idle instead. This causes us quite a bit of performance loss. Signed-off-by: Jens Axboe <axboe@suse.de>
-rw-r--r--block/cfq-iosched.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 11ce6aaf1bd0..d582433441c5 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -879,6 +879,13 @@ static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd)
879 cfqq = list_entry_cfqq(cfqd->cur_rr.next); 879 cfqq = list_entry_cfqq(cfqd->cur_rr.next);
880 880
881 /* 881 /*
882 * If no new queues are available, check if the busy list has some
883 * before falling back to idle io.
884 */
885 if (!cfqq && !list_empty(&cfqd->busy_rr))
886 cfqq = list_entry_cfqq(cfqd->busy_rr.next);
887
888 /*
882 * if we have idle queues and no rt or be queues had pending 889 * if we have idle queues and no rt or be queues had pending
883 * requests, either allow immediate service if the grace period 890 * requests, either allow immediate service if the grace period
884 * has passed or arm the idle grace timer 891 * has passed or arm the idle grace timer