proc_slabinfo
0. 简介
linux kernel通过slub分配器进行分配小内存时,需要struct kmem_cache
组织所有同样大小的小内存块,同时通过链表list
把struct kmem_cache
链接起来
1. 用户层接口
如果用户层想要知道每一个struct kmem_cache
的使用情况,可以通过读取/proc/slabinfo
得到,如下:
对/proc/slabinfo
每一列的详细解释,如下:
第1列 name : kmem_cache名字,即
kmem_cache->name
第2列 active_objs : 目前已经使用的object数量
第3列 num_objs : 全部object数量
第4列 objsize : 一个object的大小,包括meta数据
第5列 objperslab : 每一个slab的object数量
第6列 pagesperslab : 每一个slab的page数量
第13列 num_slabs : slabs的数量
2. 内核层实现
在mm/slub.c
通过slab_proc_init() --> proc_create()
,来创建用户层接口/proc/slabinfo
当用户层读取/proc/slabinfo
时,主要执行两个函数,如下:
执行
s_start()
打印每一列的文字说明执行
s_show()
打印struct kmem_cache
的使用情况
Last updated
Was this helpful?