On Tue, Jun 07, 2011 at 10:49:10PM +0200, Marek Dopiera wrote: > > Moreover I think (but I have not checked that in any way) that we can reduce > the time spent in interrupts by merging disk requests in the scheduler or > increasing buffer cache page size (which may be beneficial on 4KB sector > drives).
Marek, Several of us have looked at this and even implemented it in hackish ways for testing purposes. There are some issues. One is that it's tough to cleanly merge requests without copying and to cleanly handle errors (the "nestiobuf" abstraction looks like it could be used for this but errors are basically not handled at all by that code). Another is that we just can't handle particularly large requests, period. This is because of our MAXPHYS limitation: we do not have a way to propagate maximum request size up and down the device tree (necessary because the same driver on different bus attachments may have different maximum I/O size restrictions) thus are limited to a rather small maximum I/O size everywhere. That is easier to fix in my opinion than the first problem and might be a good place to start if you are serious about working on I/O efficiency and scheduling issues. It could offer huge performance benefits to RAIDframe since RAID volumes of many disks could advertise correspondingly large maximum I/O sizes as well. Thor