告诉 Linux 内核将文件放入磁盘缓存中?

告诉 Linux 内核将文件放入磁盘缓存中?

是否有任何命令可以读取文件并将其加载到 Linux 磁盘缓存中?这是在最新的 Debian 系统上。

我知道在一般情况下,最好让 Linux 内核来解决这个问题。但我有一个极端情况。我有一台安装了 NFS 导向器的笔记本电脑,我想播放一个长视频文件,但我不想因为网络问题而中断播放。我知道稍后会完整读取(较大的)文件。我知道在播放此视频时不会运行任何其他程序。有足够的可用内存来存储此文件。

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

答案1

一个小程序就可以解决这个问题,只要设置了mmap()标志的文件MAP_LOCKED即可。您需要以 root 身份运行此程序,或者以RLIMIT_MEMLOCK权限大于要映射的文件大小的用户身份运行。

作为保存TheRbtz提到过,虚拟触摸内置了此功能。手册页建议这样vmtouch -l /some/file做。

答案2

如果你真的严格控制本地环境,一个简单的猫$文件> / dev / null应该足够了。当缓存驱逐删除该文件时,这是相当不确定的 - 但如果你有足够的 RAM 并且没有人使用它,它应该被保留。

如果存在一种粘性且确定性的方法将文件保存在缓存中 - 不知道......

相关内容