use*_*838 5 linux memory redhat
我的服务器正在经历 nfs_inode_cache = 11G 的高使用率,我试图弄清楚是什么消耗了这一切,我已经知道一些 java 应用程序会搜索和遍历具有大量条目和深层目录结构的目录。
有什么方法可以查看 dentry 缓存以查看所有这些内存是什么(正在缓存的路径是什么)?
这是我的平板命令:
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
Run Code Online (Sandbox Code Playgroud)
这是我的缓存压力:cat /proc/sys/vm/vfs_cache_Pressure 100
您遇到任何问题吗?您的 RAM 使用情况如何?(前任。free -m)
对于 Linux 来说,使用任何可用的 RAM 进行缓存是完全正常的——其中一些将通过平板显示(目录项、索引节点等),其余则通过free -m缓存内存(页面缓存/交换缓存)显示。
/proc/sys/vm/vfs_cache_pressure控制内核释放它们的比例。100 是默认的“公平”设置。减少该值有利于修剪页面缓存(即文件内容),而增加该值有利于修剪文件系统元数据(索引节点等)。无论如何,缓存修剪只会在内存压力下发生;如果您有大量未使用的内存,内核会将其用于缓存。
可能更重要的设置是vm.swappiness- 这个设置控制内核交换内存与回收缓存内存的行为。在大多数情况下,默认值都很好,但如果您看到进程在密集 IO 期间挂起/交换,并且缓存的 RAM 比您需要的多,那么您很可能希望减少此值。此外,如果您有大量内存和相当旧的内核,您可能还需要调整这些参数之一(*字节或*比率,而不是两者!):
所有这些设置都完整记录在这里: https: //www.kernel.org/doc/Documentation/sysctl/vm.txt
但是,如果您没有遇到任何问题、挂起的进程、过多的换出等,那么我建议不要更改默认值。
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |