diff options
author | Aaron Carroll <aaronc@gelato.unsw.edu.au> | 2008-08-14 04:17:13 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-10-09 02:56:02 -0400 |
commit | 63de428b139d3d31d86ebe25ae97b33f6540fb7e (patch) | |
tree | def85c8e9990293effe71baf3b0dce648eab516c /block | |
parent | 766ca4428d1239a970926856c447310c9c191af2 (diff) |
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>
Diffstat (limited to 'block')
-rw-r--r-- | block/deadline-iosched.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/block/deadline-iosched.c b/block/deadline-iosched.c index 342448c3d2dd..07b80e4642f9 100644 --- a/block/deadline-iosched.c +++ b/block/deadline-iosched.c | |||
@@ -258,17 +258,9 @@ static int deadline_dispatch_requests(struct request_queue *q, int force) | |||
258 | else | 258 | else |
259 | rq = dd->next_rq[READ]; | 259 | rq = dd->next_rq[READ]; |
260 | 260 | ||
261 | if (rq) { | 261 | if (rq && dd->batching < dd->fifo_batch) |
262 | /* we have a "next request" */ | 262 | /* we have a next request are still entitled to batch */ |
263 | 263 | goto dispatch_request; | |
264 | if (dd->last_sector != rq->sector) | ||
265 | /* end the batch on a non sequential request */ | ||
266 | dd->batching += dd->fifo_batch; | ||
267 | |||
268 | if (dd->batching < dd->fifo_batch) | ||
269 | /* we are still entitled to batch */ | ||
270 | goto dispatch_request; | ||
271 | } | ||
272 | 264 | ||
273 | /* | 265 | /* |
274 | * at this point we are not running a batch. select the appropriate | 266 | * at this point we are not running a batch. select the appropriate |