从 /proc/slabinfo 计算“ext4_inode_cache”使用的内存?

从 /proc/slabinfo 计算“ext4_inode_cache”使用的内存?

在 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 的源代码有一些公式:

https://github.com/thlorenz/procps/blob/b713185dc7b4c82d8cbc9f4be7e345f09df365bb/deps/procps/proc/slab.c#L179

但我肯定做错了什么,因为我计算后得到的结果与 slaptop 的“CACHE SIZE”输出不匹配。

答案1

没关系,我明白了:

"CACHE SIZE" = <pagesperslab> * <batchcount> * PAGE_SIZE 

PAGE_SIZE一般为4k

相关内容