[英]In a POSIX unix system, is it possible to mmap() a file in such a way that it will never be swapped out to disk in favor of other files?
如果不使用mmap()
,似乎应该有一种方法可以赋予某些文件“优先级”,以便它们被换出的唯一时间是试图引入页面错误,例如执行代码或内存不足。是由某些进程执行的malloc()
,但从未由其他文件执行。 可以想到这种情况可能有用的情况。 考虑一下搜索引擎,该引擎应将其索引文件保留在缓存中,但可能同时写入新文件(不用于搜索)。
有几种方法。
最好的方法是使用madvise()
,它使您可以通知内核您很快将需要特定的内存范围,这使其具有比其他内存更高的优先级。 您也可以使用它来表示很快就不需要特定范围,因此应尽快将其替换掉。
hack方法是使用mlock()
,它强制将一定范围的内存保留在RAM中。 通常这不是一个好主意,仅应在特殊情况下使用。 最常见的情况是将密码存储在RAM中,以便在计算机关闭电源后无法从交换文件中恢复密码。 除非用尽其他选项,否则我不会使用mlock()
进行性能调整。
最糟糕的方法是不断戳内存,迫使它保持新鲜。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.