我正在使用 mmap() 实现 cp(文件复制)命令。
为此,我在 MAP_PRIVATE (因为我只想读取)模式下映射源文件,在 MAP_SHARED 模式下映射目标文件(因为我必须写回目标文件的更改内容)。
在执行此操作时,我观察到由于两个原因而发生的许多小页面错误导致性能损失。
1) 为源文件调用 mmap(MAP_PRIVATE) 时按需填零。
2) 在为目标文件调用 mmap(MAP_SHARED) 时进行写入复制。
有什么方法可以禁用按需清零和写入时复制吗?
谢谢,
哈里什
mmap(2) 有 MMAP_POPULATE 标志:
http://linux.die.net/man/2/mmap http://linux.die.net/man/2/mmap
MAP_POPULATE(自 Linux 2.5.46 起)
填充映射的(故障前)页表。对于文件映射,这会导致文件预读。稍后对映射的访问不会被页面错误阻止。自 Linux 2.6.23 起,MAP_POPULATE 仅支持私有映射。
它应该预先对映射区域中的所有页面进行故障排除。它应该适用于问题(1),但可能不适用于问题(2)(共享)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)