有谁知道我可以在哪里获得Linux上slabtop报告的不同内核对象的内存缓存的描述?例如什么是filp
、radix_tree_node
等?
答案1
背景
报告的板slabtop
很难量化为特定的内核模块,因为它们被合并为单一类型,这些类型根据它们所持有的对象与其他模块的相似性而重叠。
具体来说,在现代 Linux 上,slabinfo 中显示的名称基本上是一个提示,因为内核中当前的slab分配器如果多个板类型足够相似,则将它们合并在一起。如果五个不同的子系统都想要分配(不同的)没有特殊属性的 128 字节对象,那么它们不会分别获得具有单独的labinfo条目的单独的slab类型;相反,它们全部合并为一种slab类型,从而形成一个slabinfo条目。该slabinfo条目通常显示其中一个的名称,可能是第一个被设置的,没有直接暗示它还包括所有其他条目的使用。
(其他的根本不会出现在slabinfo中。)
本文继续讨论,由于上述合并,很多时候,slab 缓存类型根本不会出现在/proc/slabinfo
.您可以通过查看此处看到一些这种效果:/sys/kernel/slab
。该目录显示了哪些slab缓存正在以符号链接的形式与其他缓存合并。
左侧的图像显示了目录中/sys/kernel/slab
正在合并到其他板中的链接(浅蓝色)。右图显示了所有合并到:t-0000256
slab中的缓存。
跟踪板
如果我们继续查看/sys/kernel/slab
目录:
$ ls -l /sys/kernel/slab/ | grep filp
lrwxrwxrwx 1 root root 0 Aug 5 21:23 filp -> :t-0000256
这是filp
您所询问的。要了解更多信息,您可能需要尝试安装slabinfo
CLI。
板信息
我没有这个 CLI 可以在 CentOS 7.x 上进一步分类,但您可能想研究一下。编译此 CLI 使您可以访问slabinfo -a
其中显示与下面的板关联的别名的信息/sys/kernel/slab
。我相信您正在寻找的这些别名将有助于关联slabtop
.