Linux:禁用进程的文件缓存?

时间:2012-02-13 06:35:26

标签: linux performance caching file-io io

有没有办法为特定进程禁用文件缓存?

我有两个进程运行A和B.

我希望A打开的文件保留在缓存中。

和 我不想为B启用文件缓存,因此它不会替换内存中进程缓存的文件。

有没有办法为特定进程禁用文件缓存?

2 个答案:

答案 0 :(得分:3)

我所知道的......唯一的选择是全局/特定于设备:

另一点:

即使您可以按照要求执行操作,也无法保证任何其他进程(C,D,E等)的行为方式“内存中进程A缓存的文件”会被替换...

更新 - 来自OP ragarding性能的评论后:

Linux提供(作为大多数现代操作系统)称为“内存映射文件”的东西 - 基本上这是一种在内存中访问文件内容的方法...操作系统分配文件(取决于给定的参数)部分地址空间并将文件内容加载到该地址空间中(再次:确切的行为取决于给定的参数)。

您可以在流程A中执行此操作以实现您想要的...

查看mmap API calls了解详情。

答案 1 :(得分:1)

进程B可以使用fadvise()来指示内核不缓存从给定文件描述符读取的数据。