Commit e0de0206a2a37cd3e0ba9954d9f863e11d6d1782

Authored by Jens Axboe
1 parent ba8f5baba7

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

Showing 1 changed file with 7 additions and 0 deletions Side-by-side Diff

... ... @@ -879,6 +879,13 @@
879 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 889 * if we have idle queues and no rt or be queues had pending
883 890 * requests, either allow immediate service if the grace period
884 891 * has passed or arm the idle grace timer