On Thu, 2004-12-02 at 12:40 -0500, David Zeuthen wrote:
To me it makes more sense to look at this on the block level than on the
file level; remember, a lot the files in my readahead set stems from
stat'ing files - for example, there are more than 2200 distinct .png
files in my readahead set. We probably only need one sector from most of
those (the inode) rather than the entire file.
I'm almost positive it requires kernel changes to do this the right way;
one naive idea is to have a userspace daemon, capturing what blocks are
read when (kernel tells this daemon using the kernel events layer). This
would run in the first three minutes on each and every boot. When the
system is idle (and only when running on AC power!) another daemon
rearranges blocks on the disk. What blocks to rearrange could be the
result of a computation involving several three-minute result sets.
Stephen Tweedie mentioned some ideas for what could be done in the
kernel to optimize this stuff, I don't know specifics.
Havoc