forked from Minki/linux
cfq-iosched: tweak kick logic a bit more
We only kick the dispatch for an idling queue, if we think it's a (somewhat) fully merged request. Also allow a kick if we have other busy queues in the system, since we don't want to risk waiting for a potential merge in that case. It's better to get some work done and proceed. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
40bb54d197
commit
2d87072296
@ -1905,10 +1905,13 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq,
|
||||
* of tiny requests, because we disrupt the normal plugging
|
||||
* and merging. If the request is already larger than a single
|
||||
* page, let it rip immediately. For that case we assume that
|
||||
* merging is already done.
|
||||
* merging is already done. Ditto for a busy system that
|
||||
* has other work pending, don't risk delaying until the
|
||||
* idle timer unplug to continue working.
|
||||
*/
|
||||
if (cfq_cfqq_wait_request(cfqq)) {
|
||||
if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE) {
|
||||
if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE ||
|
||||
cfqd->busy_queues > 1) {
|
||||
del_timer(&cfqd->idle_slice_timer);
|
||||
blk_start_queueing(cfqd->queue);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user