当我使用时free -m
我会得到以下信息
系统重启前
total used free shared buff/cache available
Mem: 31549 809 369 1567 30371 28729
Swap: 0 0 0
系统重启后
total used free shared buff/cache available
Mem: 31549 405 30809 37 334 30767
Swap: 0 0 0
重启后,缓存/高速缓存内存开始逐渐增加。有没有办法分析哪个处理器占用了缓存/高速缓存空间。还有,是否可以看到什么占用了缓存/高速缓存?
答案1
buff/cache
指操作系统维护的用于“页面缓存”的内存部分 - 用于缓存文件内容以加快磁盘 IO。如果需要,可以释放这些内存用于其他用途 - 这就是为什么您也会在列中看到大量内存的原因available
。
通常您不应该担心它 - 这是内核的责任来管理它。
但有时,它可能表示诸如缺少日志文件轮换之类的问题 - 这里有一篇关于这个特定问题以及如何使用 Async Profiler 进行分析的精彩文章:https://www.youtube.com/watch?v=bTDmpwhwy3E&list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr&t=4261s
还有像fincore
和vmtouch
这样的程序可以在特定文件甚至目录(vmtouch)上使用,以显示它们在页面缓存中占用了多少空间
$ vmtouch .
...
Files: 81989
Directories: 8351
Resident Pages: 297/1672196 1M/6G 0.0178%
Elapsed: 0.8893 seconds