linux - Linux如何为文件缓存分配内存?
问题描述
问题:
我们的系统中有两个组件A和B。A处理请求并从中生成文件;对于每个文件,它会在文件创建时通知B ,然后B读取文件。该文件预计仍会被操作系统缓存,并且无需访问硬盘即可读取。这是理论上的。实际上,只有前 304,000 个文件在缓存中,其余文件不在。同时,不存在物理内存不足 - 随着B继续运行并为其需要分配内存,驻留页数增加(B从/proc/self/stat记录内存统计信息- 从文件缓存停止到运行结束的那一刻,RSS 增加了 13Gb)。
如果它可以帮助回答我的问题,则文件由B映射,而不是读取,并且B在映射后立即关闭文件。
问题:
操作系统(RedHat Linux)是否根据可用内存以外的内容限制缓存文件的数量?或者操作系统是否将文件缓存限制为可用内存的某个百分比,这就是为什么在达到缓存限制时仍有内存可供应用程序使用?
是否有可能以及如何使操作系统缓存所有文件?
解决方案
推荐阅读
- python - 如何声明 python 生成器的类型
- actionscript-3 - 使用下面的代码将 Flash 网站从 AS2 转换为 AS3,如何让预加载器停止并按要求加载?
- python - Kedro - 内存管理
- reactjs - 如何在 reactjs 中的 nodejs 上收到错误消息
- json - 如何解析具有相同父元素名称的 json 数据行(通过 Groovy 脚本)?
- typescript - concatAll 发出多个 observables 并且没有订阅它们
- javascript - Sveltekit & Fetching data to use in HTML
- flutter - 如何将flutter_local_notification设置为每天、每周、每月或每年重复,不包括指定日期之前的几天?
- android - Exoplayer 播放器版本 2.15.1 HLS264 配置文件崩溃并且无法播放
- python - 如何使用 Brython 和 Flask 应用程序导入 python 模块