【发布时间】:2012-06-15 11:55:33
【问题描述】:
我在具有 64G RAM 和大量磁盘空间的 debian-64 上运行专门的数据库守护程序。它使用磁盘上的哈希表(已映射)并通过常规 write() 调用将实际数据写入文件。当进行大量更新时,mmap 的很大一部分会变脏,页面缓存会尝试将其刷新到磁盘,从而产生大量随机写入,这反过来会降低对数据文件的常规(顺序)写入的性能.
如果可以延迟 mmaped 区域的页面缓存刷新,性能将会提高(我假设),因为对脏页的多个(或全部)更改将一次写入而不是每次更新一次(最坏情况,实际上它当然聚合了很多变化)。
所以我的问题是:是否可以延迟内存映射区域的页面缓存刷新?或者是否可以优先考虑常规写入?或者有人有其他想法吗? madvise 和 posix_fadvise 似乎没有任何区别......
【问题讨论】:
标签: linux memory-management mmap