Arjan van de Ven <arjanv@xxxxxxxxxx> writes: > On Thu, 2004-11-18 at 12:06 +0100, Ziga Mahkovec wrote: >> On Thu, 2004-11-18 at 08:36 +0100, Arjan van de Ven wrote: >> > > There's a 20 MB load of files in your readahead list and they are being >> > > read for 15 seconds. I guess a 26.60 MB/sec 'hdparm -t' suggests room >> > > for improvement? Note that this is on a 4200 RPM drive. >> > >> > hmm yeah there ought to be room; I'll need to think about how to use that >> > though. >> >> Yeah I guess the fact that disk caches are loaded on a per-file basis >> doesn't help either. Because in theory: stat-ing your list takes about >> 3 sec and readahead on a tarball is instantaneous (both of course >> without boot-time readahead). > > ok here is another try; I hacked up a tool to sort the list in disk > order. > > use it like this: > > make fileblock > fileblock `cat readfiles` | sort -n | cut -f2 > sortedfiles > > and use sortedfiles as filelist for readahead as before I'm wondering.. What would be the most efficient: readahead of files or readahead of diskblocks?! ie.. I was thinking of the following: Have the kernel dump the I/O blocks to the kernel log (klogd shouldn't be running for obvious reasons): # echo 1 >/proc/sys/vm/block_dump Then using that list to preload the blocks at startup (using POSIX_FADV_RANDOM on the block device to prevent it from doing a readahead).