linux – 异常高的nfs_inode_cache

前端之家收集整理的这篇文章主要介绍了linux – 异常高的nfs_inode_cache前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的服务器正在经历nfs_inode_cache = 11G的高使用率,我试图找出消耗所有这些的东西,我知道已经有一些 java应用程序搜索并遍历了具有大量条目和深层目录结构的目录.

有没有办法查看dentry缓存以查看所有这些内存是什么(缓存的路径是什么)?

这是我的slabtop命令:

OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
8603424 8603424 100%    1.01K 2867808        3  11471232K nfs_inode_cache
3080826 3080737  99%    0.21K 171157       18    684628K dentry_cache
 24717  12515  50%    0.52K   3531        7     14124K radix_tree_node
 11365  11108  97%    0.74K   2273        5      9092K ext3_inode_cache

这是我的缓存压力:
cat / proc / sys / vm / vfs_cache_pressure
100

解决方法

您遇到任何问题吗?你的RAM使用情况如何? (例如free -m)

Linux使用任何可用于缓存的RAM是完全正常的 – 其中一些将通过slabtop(dentries,inode等)显示,其余部分通过free -m’缓存内存(pagecache / swapcache)显示.

/ proc / sys / vm / vfs_cache_pressure控制内核释放它们的比例.如果默认为“合理”设置,则为100.减少此值有利于修剪页面缓存(即文件内容),同时增加它有利于修剪文件系统元数据(inode等…).在任何情况下,缓存修剪只会在内存压力下发生;如果你有足够的未使用的内存,内核将把它用于缓存.

可能更重要的设置是vm.swappiness – 这个控制内核的行为来换掉内存与回收缓存内存.在大多数情况下,默认值都很好,但如果您看到在密集IO期间挂起/换出进程的方式比您需要的缓存更多,那么您很可能希望减少这个.此外,如果你有大量的内存和相当旧的内核,你可能还需要调整其中一个参数(*字节或*比率,而不是两者!):

> dirty_background_bytes
> dirty_background_ratio
> dirty_bytes
> dirty_ratio

所有这些设置都在此完整记录:https://www.kernel.org/doc/Documentation/sysctl/vm.txt

但是,如果您没有遇到任何问题,挂起进程,过度交换等等,那么我建议不要更改默认值.

猜你在找的Linux相关文章