[英]How to Disable Copy-on-write and zero filled on demand for mmap()
我正在使用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起)填充(prefault)页表以进行映射。 对于文件映射,这会导致对文件进行预读。 以后访问映射不会被页面错误阻止。 自Linux 2.6.23起,仅支持私有映射的MAP_POPULATE。
它应该预先映射mmapped区域中的所有页面。 它应该适用于问题(1),并且可能不适用于问题(2)(共享)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.