Re: Direct io on block device has performance regression on 2.6.xkernel

From: Andrew Morton
Date: Wed Mar 09 2005 - 23:20:36 EST

"Chen, Kenneth W" <kenneth.w.chen@xxxxxxxxx> wrote:
> Andrew Morton wrote Wednesday, March 09, 2005 6:26 PM
> > What does "1/3 of the total benchmark performance regression" mean? One
> > third of 0.1% isn't very impressive. You haven't told us anything at all
> > about the magnitude of this regression.
> 2.6.9 kernel is 6% slower compare to distributor's 2.4 kernel (RHEL3). Roughly
> 2% came from storage driver (I'm not allowed to say anything beyond that, there
> is a fix though).

The codepaths are indeed longer in 2.6.

> 2% came from DIO.

hm, that's not a lot.

Once you redo that patch to use aops and to work with O_DIRECT, the paths
will get a little deeper, but not much. We really should do this so that
O_DIRECT works, and in case someone has gone and mmapped the blockdev.

Fine-grained alignment is probably too hard, and it should fall back to

Does it do the right thing with a request which is non-page-aligned, but
512-byte aligned?

readv and writev?

2% is pretty thin :(

> The rest of 2% is still unaccounted for. We don't know where.

General cache replacement, perhaps. 9MB is a big cache though.

> ...
> Around 2.6.5, we found global plug list is causing huge lock contention on
> 32-way numa box. That got fixed in 2.6.7. Then comes 2.6.8 which took a big
> dip at close to 20% regression. Then we fixed 17% regression in the scheduler
> (fixed with cache_decay_tick). 2.6.9 is the last one we measured and it is 6%
> slower. It's a constant moving target, a wild goose to chase.

OK. Seems that the 2.4 O(1) scheduler got it right for that machine.

> haven't got a chance to run transaction processing db workload on 2.6 kernel.
> Perhaps they have not compared, perhaps they are working on the same problem.
> I just don't know.

Maybe there are other factors which drown these little things out:
architecture improvements, choice of architecture, driver changes, etc.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at