我注意到在执行这样的命令后,我越来越有系统的响应速度(桌面GUI)的主要问题:读取文件,但提示内核不要缓存其内容?
cat file_larger_than_ram.bin | ./simple-process
我的理论是,这将导致Linux内核丢弃的文件,将会举行缓存到目前为止在RAM的未使用部分。同时,进程需要访问他们所处理的数据,因此在执行上述命令后,他们必须重新加载文件。鉴于我只打算使用file_larger_than_ram.bin
一次,有没有办法暗示内核不缓存文件?我听说,我可以用fadvise
对于这一点,但我不知道是什么给说fadvise64(2)
:
POSIX_FADV_DONTNEED尝试释放缓存与指定区域相关联的网页。例如,这是很有用的,而 正在流式传输大文件。程序可能会定期请求内核 释放已使用的缓存数据,以便更有用的缓存页面不会被丢弃。
应用fdadvise (input_desc, 0, 0, POSIX_FADV_DONTNEED);
实际上表现得如我所料,并在此解决问题?
检查它的任何问题?从描述看来它应该起作用 –
测试所有替代方法需要很长时间,所以我想我会问,以防有人知道答案。它看起来像“dd”可能在这里很有用 - 我建议增加到'cat':https://lists.gnu.org/archive/html/coreutils/2015-10/msg00111.html,并发现它已被拒绝一次。 – d33tah
你见过这个http://unix.stackexchange.com/questions/36907/drop-a-specific-file-from-the-linux-filesystem-cache? –