有没有办法为特定进程禁用文件缓存?
我有两个进程运行A和B.
我希望A打开的文件保留在缓存中。
和 我不想为B启用文件缓存,因此它不会替换内存中进程缓存的文件。
有没有办法为特定进程禁用文件缓存?
答案 0 :(得分:3)
我所知道的......唯一的选择是全局/特定于设备:
另一点:
即使您可以按照要求执行操作,也无法保证任何其他进程(C,D,E等)的行为方式“内存中进程A缓存的文件”会被替换...
更新 - 来自OP ragarding性能的评论后:
Linux提供(作为大多数现代操作系统)称为“内存映射文件”的东西 - 基本上这是一种在内存中访问文件内容的方法...操作系统分配文件(取决于给定的参数)部分地址空间并将文件内容加载到该地址空间中(再次:确切的行为取决于给定的参数)。
您可以在流程A中执行此操作以实现您想要的...
查看mmap
API calls了解详情。
答案 1 :(得分:1)
进程B可以使用fadvise()
来指示内核不缓存从给定文件描述符读取的数据。