RE: I/O and db_file_multiblock_read_count

Hi,
 
I got interested in this and did a little truss-ing. Can't test it on SPARC
but on my Solaris 10 x64 the write() system calls are still made.
 
The difference between dd and cat was that dd used read() for reading the
source file, while cat used mmap(). Both commands dis use write() call for
writing to output.
 
My theory is that as just mmap()-ing a file doesn't mean it actually has to
be read from disk, then during write() system call this opens up an
opportunity for kernel to skip touching the mmapped pages at all, if it sees
they would be copied to void anyway. So most of the pages "copied" using cat
don't even have to be paged in from disk.
 
No idea whether this is actually true but at least the number of system
calls and their timing seems to indicate that.
 
Tanel.
 

Other related posts: