Skip to content

Commit

Permalink
[PATCH] cfq-iosched: check busy queues before deciding we are idle
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Jens Axboe committed Jun 1, 2006
1 parent ba8f5ba commit e0de020
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions block/cfq-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,13 @@ static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd)
if (!list_empty(&cfqd->cur_rr) || cfq_get_next_prio_level(cfqd) != -1)
cfqq = list_entry_cfqq(cfqd->cur_rr.next);

/*
* If no new queues are available, check if the busy list has some
* before falling back to idle io.
*/
if (!cfqq && !list_empty(&cfqd->busy_rr))
cfqq = list_entry_cfqq(cfqd->busy_rr.next);

/*
* if we have idle queues and no rt or be queues had pending
* requests, either allow immediate service if the grace period
Expand Down

0 comments on commit e0de020

Please sign in to comment.