Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> 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.
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Dec 13 2006 - 06:15:15 CST
![]() |
![]() |