Answers:
您可以使用vmtouch将文件添加到页面缓存(磁盘缓存)中。
把nohup vmtouch -dl <files or directories> &
你的/etc/rc.local
文件添加和锁定文件插入启动你的页面缓存。如果要将文件添加到页面缓存中,但又不想将其锁定到内存中,请使用该-t
标志而不是这些-ld
标志。
vmtouch
用作启动命令会减慢整个工作速度吗?我的希望是保留跨引导的缓存,而不是(昂贵地)每次重新生成缓存。
我怀疑“重启后保留”。但是,您可以在启动时轻松地重建缓存,这几乎可以完成相同的事情,只是需要很小的延迟。
创建一个文件/etc/cron.d/rebuild-fs-cache
,并将以下内容放入其中:
@reboot root /usr/bin/nice -n 19 /usr/bin/ionice -c 3 -t /usr/bin/find / >/dev/null 2>&1
这使用nice
和ionice
(默认情况下应安装,并且肯定可以通过软件包管理器获得; Debian 分别将它们放在coreutils
和中util-linux
)将find
进程的优先级降低到尽可能好的水平,这意味着它不应干扰其他任何事情。在您的系统上运行,但需要更长的时间才能完成。find
本身将经历stat()
所有事情,这迫使内核将文件系统数据从磁盘加载到内存中。
一旦构建了缓存,只要由于操作系统需要内存来存放其他东西而没有清除缓存,就应该对其进行维护。我一直在使用这一段时间和目录列表,即使在大的目录是显著比没有上述cron作业速度更快,虽然我不能举出任何确切的数字。
locate
,但是我经常使用ls
。偶尔find
。(此外,find和ls是OP询问的特定命令。)find
此处的使用点是,它会调用stat()遍历存储中的所有内容,因此内核必须将元数据加载到内存中。一旦存在,就好象它是在重新启动过程中存储的一样。