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

Linus Torvalds
2002-08-11T18:46:48Z

On Sat, 10 Aug 2002, Simon Kirby wrote:
>
> 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?

Any sane IO subsystem will do the actual IO using DMA, and not pollute the
cache for read[aheads] until the point where it is actually _used_.

> 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.

You're not the only one complaining about this.

I _think_ that the problem is not th read-ahead code, but some of the
block layer stuff. It appears that the read-ahead code is so successful
that we generate one large request for all of it, and we won't be waking
things up as they come in, but only after the whole request is done.

This is due to Andrews bio work. It decreases CPU load, but it sure as
hell does seem to decrease parallelism too, which is bad.

Basically, it _used_ to be that each page got woken up one at a time as
they became ready after IO. With the new scheme, they all get woken up
together in "mpage_end_io_read()" (or write, but since people usually
don't wait for writes..).

At least that is how I read the code. Andrew?

On the other hand, for most high-end controllers, you aren't even likely
to get notified in the middle anyway, since the controller will just do
the whole dang IO request in one go, and only notify us when it is totally
done.

> 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.

Hmm.. NFS should be a totally different kettle of fish. Although the
read-ahead code is shared, I think the NFS client should be returning
successes one page at a time.

Jens, Trond and Andrew Cc'd for comments and your "strace" showing a
6/7-second latency is appended.

Linus

---

> 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. ]
>
>
>