告诉Linux内核把一个文件放到磁盘caching中?

是否有任何命令来读取文件并将其加载到Linux磁盘caching中? 这是一个最新的debian系统。

我知道在一般情况下,最好让Linux内核解决这个问题。 但我有一个边缘情况。 我有一台装有NFS导向器的笔记本电脑,而且我想播放一个很长的video文件,但是我不想让networking问题中断Playnig。 我知道(大的)文件将在稍后被完整地读取。 我知道在播放这个video的时候没有其他的(真的)会在运行。 有足够的可用内存来存储此文件。

(我知道我可以将文件复制到一个新的tmpfs文件系统,但是我很好奇是否有更短的方法来做到这一点)

一个用MAP_LOCKED标志设置mmap()编辑文件的小程序可以做到这一点。 您需要以RLIMIT_MEMLOCK用户的RLIMIT_MEMLOCK运行该程序,或者使用RLIMIT_MEMLOCK值大于要映射的文件大小的用户。

正如SaveTheRbtz所提到的, vmtouch具有内置的这种能力。 该手册提示, vmtouch -l /some/file可以解决这个问题。

如果你真的严格控制本地环境,一个简单的cat $ file> / dev / null就足够了。 这是非确定性的,当caching逐出删除该文件 – 但如果你有足够的内存,没有人消耗,它应该被保留。

如果有一个粘性和确定性的方式来保持文件caching – 不知道…