Re: [patch 6/12] hold atomic kmaps across generic_file_read

Simon Kirby
2002-08-11T03:13:33Z

On Sat, Aug 10, 2002 at 03:42:29PM -0700, Linus Torvalds wrote:

> I _suspect_ that the common behaviour is to read just a few kB at a time
> and that is basically doesn't ever really pay to play VM games.
>
> (The "repeated read of a few kB" case is also likely to be the
> best-performing behaviour, simply because it's usually _better_ to do many
> small reads that re-use the cache than it is to do one large read that
> blows your cache and TLB. Of course, that all depends on what your
> patterns are after the read - do you want to have the whole file
> accessible or not).

This is only somewhat related, but I'm wondering if the cache effects
also apply to readahead block sizes. Sequential page-sized read()s from
a file causes readahead to kick in and grow in size. Over time, it ends
up using very large blocks. Would it be beneficial to keep the readahead
size smaller so that it still stays in cache?

Also, this use of large blocks shouldn't really matter, but I'm seeing a
problem where the process ends up sleeping for most of the time,
switching between CPU and I/O rather than simply having the I/O for the
next read() occur in advance of the current read().

The problem appears to be that readahead isn't awakening the process to
present partial results. The blocks get so large that the process
switches between running and being blocked in I/O, which decreases
overall performance (think of a "grep" process that at 100% CPU can just
saturate the disk I/O). Working correctly, readahead would not get in
the way, it would just have blocks ready for "grep" to use, and grep
would use all of the CPU not being used for I/O. Currently, grep sleeps
50% of the time waiting on I/O.

This problem is showing up with NFS over a slow link, causing streaming
audio to be unusable. On the other end of the speed scale, it probably
also affects "grep" and other applications reading from hard disks, etc.

To demonstrate the problem reliably, I've used "strace -r cat" on a
floppy, which is a sufficiently slow medium. :) This is on a 2.4.19
kernel, but 2.5 behaves similarly. Note how the readahead starts small
and gets very large. Also, note how the start of the first larger
readahead occurs shortly after a previous read, and that it blocks early
even though the data should already be there (4.9 seconds). It also
appears to stumble a bit later on. read() times show up as the relative
time for the following write() (which is going /dev/null):

0.000294 open("a/bigzero", O_RDONLY|O_LARGEFILE) = 3
0.000258 fstat64(3, {st_mode=S_IFREG|0775, st_size=914432, ...}) = 0
0.000275 brk(0x804e000) = 0x804e000
0.000223 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.593615 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000807 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000730 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000878 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000209 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000642 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000304 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000482 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.647682 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000537 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000687 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000469 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000433 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000183 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000186 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000432 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.649228 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000541 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000194 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000500 read(3, "\0\0\0\0\0"..., 4096) = 4096
4.897722 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000535 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000190 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000505 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000199 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000486 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000191 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000485 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000193 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000434 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000858 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000221 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001148 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000243 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000877 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000247 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000649 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000220 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000497 read(3, "\0\0\0\0\0"..., 4096) = 4096
6.615653 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.002430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000283 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000857 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000217 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000449 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000432 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000537 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000198 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000436 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000455 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000530 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000283 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000475 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000434 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.001341 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000470 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.001626 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001282 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000278 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000481 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000186 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000467 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000581 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000203 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000662 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000199 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000492 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000201 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000484 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000189 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000433 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000440 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000448 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000188 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001342 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000328 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000839 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000194 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000449 read(3, "\0\0\0\0\0"..., 4096) = 4096
1.031732 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000531 read(3, "\0\0\0\0\0"..., 4096) = 4096
6.154301 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000544 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000198 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000740 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000250 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000723 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000186 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000444 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000448 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000435 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001227 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000196 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000454 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000597 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000207 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000432 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000497 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000196 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000199 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000452 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000727 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000221 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000486 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000187 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000650 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001078 read(3, "\0\0\0\0\0"..., 4096) = 4096
7.004463 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000538 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000191 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000440 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000448 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000506 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001446 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000283 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000469 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000494 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000194 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000175 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000487 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000193 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000484 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000191 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000684 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000220 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000500 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000201 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000484 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000189 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000543 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000190 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
7.407175 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000530 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000435 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000447 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000446 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000183 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000954 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000410 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000478 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000239 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000435 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000429 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000627 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000205 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001126 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000191 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000468 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000432 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000537 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000221 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000489 read(3, "\0\0\0\0\0"..., 4096) = 4096
3.391947 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000529 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000573 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000193 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000486 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000191 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000436 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000531 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000588 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000444 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000447 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000425 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.001018 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000811 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000536 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000258 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000531 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000207 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000487 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000194 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000525 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000231 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000439 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000430 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000175 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000425 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000426 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000431 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000485 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000547 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000194 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000448 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000479 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000177 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000176 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000179 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000428 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000178 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000181 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000633 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000241 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000434 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000182 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000432 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000180 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000427 read(3, "\0\0\0\0\0"..., 4096) = 4096
1.144692 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000533 read(3, "\0\0\0\0\0"..., 4096) = 4096
0.000185 write(1, "\0\0\0\0\0"..., 4096) = 4096
0.000434 read(3, "\0\0\0\0\0"..., 4096) = 1024
0.000318 write(1, "\0\0\0\0\0"..., 1024) = 1024
0.000276 read(3, "", 4096) = 0
0.000184 close(3) = 0
0.000259 _exit(0) = ?

We probably want huge readahead to occur in the case where programs are
competing for I/O from the same device, but the latency here from slow
devices is horrible.

Simon-

[ Stormix Technologies Inc. ][ NetNation Communications Inc. ]
[ sim@stormix.com ][ sim@netnation.com ]
[ Opinions expressed are not necessarily those of my employers. ]