I think I know why Andrea's new elevator code is so much
worse
than 2.2.x's disk sorting. The general scheme of the
elevator is
to keep low the latency introduced to old requests by new
requests
being added. In doing this, it prevents merging with other
requests
to the same area of the disk. In actuality this "latency
reduction" is
really increasing latency, because a missed merge means it
will now
take two I/O operations to move data which could have been
done by
a single request. Also, since the elevator will move the
I/O request
towards the end of the I/O queue, it is almost certain that
requests
to other sectors will happen first, thus an unnecessary disk
seek.
I have no idea why the elevator make LVM/IDE dbench runs
faster
for him, as it seems quite wrong fundamentally.
Will study this more soon.