繁体   English   中英

如何禁用mmap()的写时复制和零填充

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM