I am implementing cp(file copy) command using mmap(). For that I mapped the source file in MAP_PRIVATE (As I just want to read)mode and destination file in MAP_SHARED mode(As I have to writeback the changed content of destination file).
While doing this I have observed performance penalty due to lots of minor page faults that occurs due to 2 reason. 1) Zero fill on demand while calling mmap(MAP_PRIVATE) for source file. 2) Copy on write while calling mmap(MAP_SHARED) for destination file.
Is there any way to disable Zero-fill-on-demand and Copy-on-write ?
Thanks, Harish
There is MMAP_POPULATE flag of mmap(2):
http://linux.die.net/man/2/mmap
It should pre-fault all pages in mmapped region. It should work for question (1), and may not work for question (2) (shared).