一、簡介
slabtop - display kernel slab cache information in real time(實時的顯示內核slab緩存信息,透過/proc/slabinfo)
內核的模塊在分配資源的時候,爲了提高效率和資源的利用率,都是透過slab來分配的。通過slab的信息,再配合源碼能粗粗瞭解系統的運行情況,比如說什麼資源有沒有不正常的多,或者什麼資源有沒有泄漏。linux系統透過/proc/slabinfo來向用戶暴露slab的使用情況。Linux所使用的 slab 分配器的基礎是 Jeff Bonwick 爲 SunOS 操作系統首次引入的一種算法。Jeff 的分配器是圍繞對象緩存進行的。在內核中,會爲有限的對象集(例如文件描述符和其他常見結構)分配大量內存。Jeff 發現對內核中普通對象進行初始化所需的時間超過了對其進行分配和釋放所需的時間。因此他的結論是不應該將內存釋放回一個全局的內存池,而是將內存保持爲針對特定目而初始化的狀態。Linux slab 分配器使用了這種思想和其他一些思想來構建一個在空間和時間上都具有高效性的內存分配器。
保存着監視系統中所有活動的slab緩存的信息的文件爲/proc/slabinfo
二、用法
slabtop-實時顯示內核slab內存緩存信息
slabtop [options]
描述:
slabtop displays detailed kernel slab cache information in real time. It displays a listing of the top caches sorted by one of the listed sort criteria. It also displays a statistics header filled with slab layer information.
選項:
—delay=n, -d n #每n秒更新一次顯示的信息,默認是每3秒
—sort=S, -s S #指定排序標準進行排序(排序標準,參照下面或者man手冊)
—once, -o #顯示一次後退出
—version, -V #顯示版本
—help #顯示幫助信息
排序標準:
a: sort by number of active objects
b: sort by objects per slab
c: sort by cache size
l: sort by number of slabs
v: sort by number of active slabs
n: sort by name
o: sort by number of objects
p: sort by pages per slab
s: sort by object size
u: sort by cache utilization
輸出界面可用的命令:
: 刷新顯示內容
Q: 退出
三、數據分析
#slabtop -o
Active / Total Objects (% used) : 342368 / 362880 (94.3%)
Active / Total Slabs (% used) : 7873 / 7873 (100.0%)
Active / Total Caches (% used) : 103 / 150 (68.7%)
Active / Total Size (% used) : 27814.06K / 29616.44K (93.9%)
Minimum / Average / Maximum Object : 0.01K / 0.08K / 128.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
133980 133862 99% 0.02K 660 203 2640K avtab_node
92886 92653 99% 0.03K 822 113 3288K size-32
28626 27174 94% 0.05K 367 78 1468K selinux_inode_security
25816 25614 99% 0.48K 3227 8 12908K ext3_inode_cache
23693 18692 78% 0.13K 817 29 3268K dentry_cache
21240 15306 72% 0.05K 295 72 1180K buffer_head
6174 5758 93% 0.27K 441 14 1764K radix_tree_node