Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux:为进程禁用文件缓存?_Linux_Performance_Caching_File Io_Io - Fatal编程技术网

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

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(作为大多数现代操作

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

我有两个进程运行A和B

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

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


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

据我所知没有。。。唯一的选项是全局/设备特定的:

  • 将-sync选项与挂载一起使用
  • 使用
另一点:

即使您可以按要求执行操作,也不能保证任何其他进程(C、D、E等)的行为方式会替换“内存中由进程a缓存的文件”

更新-在OP ragarding performance的评论之后:

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

你会在一个过程中做到这一点,以实现你想要的


有关详细信息,请查看。据我所知,没有。。。唯一的选项是全局/设备特定的:

  • 将-sync选项与挂载一起使用
  • 使用
另一点:

即使您可以按要求执行操作,也不能保证任何其他进程(C、D、E等)的行为方式会替换“内存中由进程a缓存的文件”

更新-在OP ragarding performance的评论之后:

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

你会在一个过程中做到这一点,以实现你想要的


签出以获取详细信息。

进程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
当前确实具有从缓存中删除相应页面的行为。