好的,在你标记我的帖子为重复之前,我想说,我知道一个非常好的答案:如何清除或禁用内存缓存?
但这对我来说不适用。
我正在进行一些内存应用和使用磁盘的应用之间的性能测试。因此,我希望能够确保每次应用程序尝试从磁盘中获取数据时,系统确实从磁盘中获取数据,而不是从内存缓存中获取数据。(我想要一个性能因素,即当应用程序必须从磁盘读取时,它的操作变得多么糟糕。)
我知道可以通过 sync && echo 3 > /proc/sys/vm/drop_caches
命令清除缓存,但是每分钟用cron清理一次对我来说太慢了,因为缓存很快又被填满了。
所以我有一个问题:你真的无法禁用这个功能吗?或者有没有什么变通方法?它真的会破坏我的测试结果。
附注:我使用的是 Ubuntu 12.04 64位。
mmap()
的魔法可以使映射到磁盘的地图变得易失性,从而强制每次重写/重新读取,但我怀疑缓存文件系统内容与基本内存管理器紧密相关,无法避免它。我可能错了---等着看吧。 - Rmano