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

Ama*_*rus 4 linux cache kernel

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

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

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

wom*_*ble 6

一个mmap()使用MAP_LOCKED标志集编辑文件的小程序可以解决问题。您需要以 root 或RLIMIT_MEMLOCK值大于要映射的文件大小的用户身份运行此程序。

正如SaveTheRbtz所提到的,vmtouch内置了此功能。联机帮助页表明这vmtouch -l /some/file可以解决问题。

  • 并且不要忘记之后再次 munlock() 该文件!:) (2认同)
  • 有一个工具可以做到这一点:http://hoytech.com/vmtouch/ (2认同)

Mic*_*nik 5

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

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