我正在一个debian-64上运行一个专门的DB守护进程,内存64G,磁盘空间很大。它使用磁盘哈希表(mmaped),并使用正常的write()调用将实际数据写入文件。当进行大量更新时,mmap的很大一部分会变脏,并且页面缓存会尝试将其刷新到磁盘,从而产生大量随机写入,从而降低对数据文件进行常规(顺序)写入的性能。如何优先write()通过mmap更新(或延迟mmap页面缓存刷新)
如果有可能延迟页面缓存刷新mmaped区域性能会提高(我认为),因为脏页面的几个(或全部)更改将一次写入而不是每次更新一次(最差事实上,它当然会汇总很多变化)。
所以我的问题:是否有可能延迟页面缓存刷新内存映射区域?或者有可能优先考虑正规写作?还是有人有任何其他想法? madvise和posix_fadvise似乎没有任何区别...
这听起来很合理(尽管我认为我也必须增加dirty_ratio),我会在接下来的几周内尝试一下,并让你知道结果。谢谢! –
它的工作原理和减少磁盘I/O预期:) –
@HugoWalter:很高兴听到:) – Damon