Re: IO scheduler based IO controller V10

From: Mike Galbraith
Date: Mon Sep 28 2009 - 00:04:24 EST


On Sun, 2009-09-27 at 20:16 +0200, Mike Galbraith wrote:
> On Sun, 2009-09-27 at 18:42 +0200, Jens Axboe wrote:

> I'll give it a shot first thing in the A.M.

> > diff --git a/block/elevator.c b/block/elevator.c
> > index 1975b61..d00a72b 100644
> > --- a/block/elevator.c
> > +++ b/block/elevator.c
> > @@ -497,9 +497,17 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio)
> > * See if our hash lookup can find a potential backmerge.
> > */
> > __rq = elv_rqhash_find(q, bio->bi_sector);
> > - if (__rq && elv_rq_merge_ok(__rq, bio)) {
> > - *req = __rq;
> > - return ELEVATOR_BACK_MERGE;
> > + if (__rq) {
> > + /*
> > + * If requests are queued behind this one, disallow merge. This
> > + * prevents streaming IO from continually passing new IO.
> > + */
> > + if (elv_latter_request(q, __rq))
> > + return ELEVATOR_NO_MERGE;
> > + if (elv_rq_merge_ok(__rq, bio)) {
> > + *req = __rq;
> > + return ELEVATOR_BACK_MERGE;
> > + }
> > }
> >
> > if (e->ops->elevator_merge_fn)

- = virgin tip v2.6.31-10215-ga3c9602
+ = with patchlet
Avg
dd pre 67.4 70.9 65.4 68.9 66.2 67.7-
65.9 68.5 69.8 65.2 65.8 67.0- Avg
70.4 70.3 65.1 66.4 70.1 68.4- 67.7-
73.1 64.6 65.3 65.3 64.9 66.6+ 65.6+ .968
63.8 67.9 65.2 65.1 64.4 65.2+
64.9 66.3 64.1 65.2 64.8 65.0+
perf stat 8.66 16.29 9.65 14.88 9.45 11.7-
15.36 9.71 15.47 10.44 12.93 12.7-
10.55 15.11 10.22 15.35 10.32 12.3- 12.2-
9.87 7.53 10.62 7.51 9.95 9.0+ 9.1+ .745
7.73 10.12 8.19 11.87 8.07 9.1+
11.04 7.62 10.14 8.13 10.23 9.4+
dd post 63.4 60.5 66.7 64.5 67.3 64.4-
64.4 66.8 64.3 61.5 62.0 63.8-
63.8 64.9 66.2 65.6 66.9 65.4- 64.5-
60.9 63.4 60.2 63.4 65.5 62.6+ 61.8+ .958
63.3 59.9 61.9 62.7 61.2 61.8+
60.1 63.7 59.5 61.5 60.6 61.0+


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/