我有一个备份进程,它从磁盘读取大量数据,因此占用了所有内存用于磁盘缓存,并在该进程中交换应用程序和其他缓存数据。备份完成后,将备份数据保留在磁盘缓存中没有任何好处,所以我想限制内核可以为该进程缓存的数据量。这可能吗?
谢谢,
答案1
修复备份过程,以便它使用 O_DIRECT 打开文件,或者在处理完数据块后定期调用 posix_fadvise(..., POSIX_FADV_DONTNEED)。
或者向负责备份程序的人员投诉,以按照上述方法进行修复。
或者,您可以创建一个执行上述操作的过滤器库,并在运行备份过程时 LD_PRELOAD 该库。