Initially I hoped that the filesystem would lay out blocks linearly on disk in
the order which I wrote them, so I could merely rewrite the executable in the
access order. This would have made use of disk readahead, but not necessarily
filesystem readahead. Unfortunately I found this made little difference, but I
haven't really looked into exactly how ext2 does its layout.
My current approach is to reorganize the ELF file itself. This is naturally
more complex, but it does take advantage of the typical assumptions made in
filesystem layout algorithms. Unfortunately it does generate rather atypical
ELF files (hundreds of loadable segments), and I think I'm running into bugs in
the libc dynamic linker.
Ideally this stuff would be done in linker with profile feedback, but this is
an experiment to see what difference it really makes. I'm curious to see if
all the mappings slows down runtime much too (which is really a test of the AVL
code).
J
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/