我们在生产Web服务器上做了一个临时的工作,要求在文件系统中对文件进行调整。 它运行了大约105分钟,在此期间,Apache开始交换,因为所有读取几个文件的文件都扩大了文件系统caching的内存量。
tar正在读取的数据不需要驻留在文件系统caching中。 它将进入tarfile,就是这样。 有什么地方我们可以说像tar cvf whatever/ --no-system-file-buffer-reads ? 我对man tar解读并没有显示任何看起来会有帮助的东西。
你不必指出,这可以被看作是一个“医生,当我这样去伤害,所以不要这样”的情况。 不知何故,我们需要转储文件到一个tar文件,所以不要这样做是不是一个选项。
我想这已经在这里回答了 :
有一个nocache实用程序,它可以预装到像ionice和nice这样的命令。 它通过预加载一个库,
POSIX_FADV_DONTNEED标记添加posix_fadvise到任何打开的调用。简而言之,它build议内核caching对于该特定文件是不需要的; 内核通常不会caching文件。 看到这里的技术细节。
这对于任何大型的复制作业
nice -n19 ionice -c3 nocache cp -a /vol /vol2,例如,如果你想在后台备份一个多TB的磁盘,而对运行系统的可能影响最小,你可以沿着一个nice -n19 ionice -c3 nocache cp -a /vol /vol2方式做一些事情。-nice -n19 ionice -c3 nocache cp -a /vol /vol2。