如何禁用写入时复制充满对MMAP需求和零()(How to Disable Copy-on-writ

2019-07-30 01:57发布

我使用的mmap实现CP(文件复制)命令()。 对于我映射MAP_PRIVATE源文件(正如我刚才想读)的MAP_SHARED模式模式和目标文件(如我不得不回写更改的内容目标文件)。

虽然这样做我观察,由于许多小的页面错误的性能损失的发生是由于2原因。 1)填零上的需求,同时呼吁源文件的mmap(MAP_PRIVATE)。 2)上写副本,同时调用MMAP(MAP_SHARED)的目标文件。

有没有什么办法来禁用填零点播和写入时复制?

谢谢,哈里什

Answer 1:

有MMAP(2)的MMAP_POPULATE标志:

http://linux.die.net/man/2/mmap

MAP_POPULATE(因为Linux 46年2月5日)的映射填充(故障前)页表。 对于文件映射,这将导致该文件预读。 后来访问映射不会被页故障被阻止。 MAP_POPULATE仅支持因为Linux 2.6.23私人映射。

应该故障前在mmapped区域的所有页面。 它应该问题(1)工作,并且可能不适合的问题(2)工作(共享)。



文章来源: How to Disable Copy-on-write and zero filled on demand for mmap()