Linux:为进程禁用文件缓存?
有没有办法禁用特定进程的文件缓存 我有两个进程运行A和B 我希望由打开的文件保留在缓存中 及 我不想为B启用文件缓存,因此它不会替换内存中进程缓存的文件Linux:为进程禁用文件缓存?,linux,performance,caching,file-io,io,Linux,Performance,Caching,File Io,Io,有没有办法禁用特定进程的文件缓存 我有两个进程运行A和B 我希望由打开的文件保留在缓存中 及 我不想为B启用文件缓存,因此它不会替换内存中进程缓存的文件 有没有办法禁用特定进程的文件缓存?据我所知没有。。。唯一的选项是全局/设备特定的: 将-sync选项与挂载一起使用 使用 另一点: 即使您可以按要求执行操作,也不能保证任何其他进程(C、D、E等)的行为方式会替换“内存中由进程a缓存的文件” 更新-在OP ragarding performance的评论之后: Linux(作为大多数现代操作
有没有办法禁用特定进程的文件缓存?据我所知没有。。。唯一的选项是全局/设备特定的:
- 将-sync选项与挂载一起使用
- 使用
有关详细信息,请查看。据我所知,没有。。。唯一的选项是全局/设备特定的:
- 将-sync选项与挂载一起使用
- 使用
签出以获取详细信息。进程B可以使用
fadvise()
指示内核不缓存从给定文件描述符读取的数据。进程B可以使用fadvise()
指示内核不缓存从给定文件描述符读取的数据。是否有您试图解决的特定问题,或者这只是学术上的好奇?根据我们对进程A所做的性能测试,可能是@Ignacio Vazquez Abrams的重复。如果文件缓存在内存中,则处理文件需要20-30毫秒。但如果从磁盘加载,则需要300-400毫秒来处理。我希望通过在内存中保留文件缓存来避免这种时间延迟。有什么方法可以解决这个问题吗?@VivekGoel我想是的-它被称为内存映射文件,请参阅下面我的答案的更新…您是否有具体的问题要解决,或者这只是学术上的好奇?根据我们对进程A所做的性能测试,可能是@Ignacio Vazquez Abrams的重复。如果文件缓存在内存中,则处理文件需要20-30毫秒。但如果从磁盘加载,则需要300-400毫秒来处理。我希望通过在内存中保留文件缓存来避免这种时间延迟。有什么办法可以解决这个问题吗?@VivekGoel我想是的-它被称为内存映射文件,请参阅下面对我答案的更新…AFAIK调用fadvice
(param FADV_DONTNEED?)并不意味着内核将严格遵循指令-这更像是这个调用给内核的“提示”…正确。但是,FADV_DONTNEED
当前确实具有从缓存中删除相应页面的行为。AFAIK调用fadvice
(param FADV_DONTNEED?)并不意味着内核将严格遵循指令-这更像是一个“提示”,此调用为内核提供了…正确。但是,FADV_DONTNEED
当前确实具有从缓存中删除相应页面的行为。