deadline-iosched: allow non-sequential batching
Deadline currently only batches sector-contiguous requests, so except for a few circumstances (e.g. requests in a single direction), it is essentially first come first served. This is bad for throughput, so change it to CSCAN, which means requests in a batch do not need to be sequential and are issued in increasing sector order. Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
766ca4428d
commit
63de428b13
@ -258,17 +258,9 @@ static int deadline_dispatch_requests(struct request_queue *q, int force)
|
|||||||
else
|
else
|
||||||
rq = dd->next_rq[READ];
|
rq = dd->next_rq[READ];
|
||||||
|
|
||||||
if (rq) {
|
if (rq && dd->batching < dd->fifo_batch)
|
||||||
/* we have a "next request" */
|
/* we have a next request are still entitled to batch */
|
||||||
|
goto dispatch_request;
|
||||||
if (dd->last_sector != rq->sector)
|
|
||||||
/* end the batch on a non sequential request */
|
|
||||||
dd->batching += dd->fifo_batch;
|
|
||||||
|
|
||||||
if (dd->batching < dd->fifo_batch)
|
|
||||||
/* we are still entitled to batch */
|
|
||||||
goto dispatch_request;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* at this point we are not running a batch. select the appropriate
|
* at this point we are not running a batch. select the appropriate
|
||||||
|
Loading…
x
Reference in New Issue
Block a user