在Mac OS X上进行mmaping的成本是多少?

时间:2017-03-17 13:12:07

标签: macos performance mmap

我有一个算法,如果我可以预留大约20块大小为4GB的内存地址,我的生活将大大简化。在实践中,我从不使用超过4GB,但我不知道哪个块会提前填满。

如果我mmap 20块4GB的东西似乎一切正常 - 直到我写入内存操作系统似乎没有实际分配任何东西。

有什么理由我不应该使用mmap分配80GB内存,然后只使用少量内存?我假设设置这些缓冲区需要一些成本。我能测量一下吗?

1 个答案:

答案 0 :(得分:2)

同时mmap-80GB的唯一缺点是必须为完整的80GB创建page table。因此,如果页面为4kB,则此表可能会占用大量内存(除非使用huge pages)。

对于这样的大小,最好使用一个或多个滑动 mmap-ed视图(即在需要时创建和删除它们)。

在Windows上,可以使用RamMap检查mmap / page表的内存使用情况,但不确定Mac。