在 Linux 上,我有两种方法可以获取使用的内存ext4_inode_cache
。第一种方法是使用slabtop
命令,该命令也会提供“缓存大小”信息:
# slabtop -o -s c | grep -E '(ext4_inode_cache|NAME)'
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
118794 114631 96% 1.16K 9138 13 146208K ext4_inode_cache
第二个是读取/proc/slabinfo
,但它没有给我计算出的“缓存大小”:
# grep -E '(pagesperslab|ext4_inode_cache)' /proc/slabinfo
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
ext4_inode_cache 114631 118794 1184 13 4 : tunables 0 0 0 : slabdata 9138 9138 0
我如何根据以上数字计算它?slaptop 的源代码有一些公式:
但我肯定做错了什么,因为我计算后得到的结果与 slaptop 的“CACHE SIZE”输出不匹配。
答案1
没关系,我明白了:
"CACHE SIZE" = <pagesperslab> * <batchcount> * PAGE_SIZE
PAGE_SIZE一般为4k