Har*_*ish 6 c linux mmap copy-on-write page-fault
我正在使用mmap()实现cp(文件复制)命令.为此,我在MAP_SHARED模式中映射了MAP_PRIVATE(我只是想读取)模式和目标文件中的源文件(因为我必须回写目标文件的更改内容).
在执行此操作时,我发现由于2个原因导致的大量次要页面错误导致性能下降.1)在为源文件调用mmap(MAP_PRIVATE)时按需填充零.2)在为目标文件调用mmap(MAP_SHARED)时复制写入.
有没有办法禁用零填充按需和写时复制?
谢谢,哈里什
mmap(2)的MMAP_POPULATE标志:
http://linux.die.net/man/2/mmap
MAP_POPULATE(自Linux 2.5.46起)为映射填充(故障前)页表。对于文件映射,这将导致文件上的预读。页面错误不会阻止以后对映射的访问。从Linux 2.6.23开始,仅私有映射支持MAP_POPULATE。
它应该预先对mmapped区域中的所有页面进行故障处理。它应该适用于问题(1),而不适用于问题(2)(共享)。