slabtop

實時顯示內核slab內存緩存信息

補充說明

slabtop命令 以實時的方式顯示內核“slab”緩衝區的細節信息。

語法

1slabtop(選項)

選項

1--delay=n, -d n:每n秒更新一次顯示的信息,默認是每3秒;
2--sort=S, -s S:指定排序標準進行排序(排序標準,參照下面或者man手冊);
3--once, -o:顯示一次後退出;
4--version, -V:顯示版本;
5--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

知識擴展

內核的模塊在分配資源的時候,爲了提高效率和資源的利用率,都是透過slab來分配的。通過slab的信息,再配合源碼能粗粗瞭解系統的運行情況,比如說什麼資源有沒有不正常的多,或者什麼資源有沒有泄漏。linux系統透過/proc/slabinfo來向用戶暴露slab的使用情況。

Linux 所使用的 slab 分配器的基礎是 Jeff Bonwick 爲 SunOS 操作系統首次引入的一種算法。Jeff 的分配器是圍繞對象緩存進行的。在內核中,會爲有限的對象集(例如文件描述符和其他常見結構)分配大量內存。Jeff 發現對內核中普通對象進行初始化所需的時間超過了對其進行分配和釋放所需的時間。因此他的結論是不應該將內存釋放回一個全局的內存池,而是將內存保持爲針對特定目而初始化的狀態。Linux slab 分配器使用了這種思想和其他一些思想來構建一個在空間和時間上都具有高效性的內存分配器。

保存着監視系統中所有活動的 slab 緩存的信息的文件爲/proc/slabinfo。

實例

 1slabtop
 2
 3 Active / Total Objects (% used)    : 897519 / 1245930 (72.0%)
 4 Active / Total Slabs (% used)      : 38605 / 38605 (100.0%)
 5 Active / Total Caches (% used)     : 94 / 145 (64.8%)
 6 Active / Total Size (% used)       : 129558.22K / 153432.58K (84.4%)
 7 Minimum / Average / Maximum Object : 0.01K / 0.12K / 128.00K
 8
 9  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
10440136 171471  38%    0.05K   6113       72     24452K buffer_head
11190086 148576  78%    0.05K   2437       78      9748K selinux_inode_security
12151840 146366  96%    0.48K  18980        8     75920K ext3_inode_cache
13144333 144143  99%    0.02K    711      203      2844K avtab_node
14130529 128488  98%    0.13K   4501       29     18004K dentry_cache
15 99214  99071  99%    0.03K    878      113      3512K size-32
16 43834  28475  64%    0.27K   3131       14     12524K radix_tree_node
17 17818   9450  53%    0.06K    302       59      1208K size-64
18  4602   4562  99%    0.05K     59       78       236K sysfs_dir_cache
19  3220   2855  88%    0.08K     70       46       280K vm_area_struct
20  2460   2114  85%    0.12K     82       30       328K size-128
21  1564   1461  93%    0.04K     17       92        68K Acpi-Operand
22  1540   1540 100%    0.33K    140       11       560K inode_cache
23  1524    466  30%    0.01K      6      254        24K anon_vma
24  1440    515  35%    0.05K     20       72        80K avc_node
25  1440   1154  80%    0.19K     72       20       288K filp
26  1170   1023  87%    0.05K     15       78        60K ext3_xattr
27   845    724  85%    0.02K      5      169        20K Acpi-Namespace
28   638    315  49%    0.35K     58       11       232K proc_inode_cache
29   450    434  96%    0.25K     30       15       120K size-256
30   424    386  91%    0.50K     53        8       212K size-512
31   312    107  34%    0.05K      4       78        16K delayacct_cache
32   306    284  92%    0.43K     34        9       136K shmem_inode_cache
33   303    108  35%    0.04K      3      101        12K pid
34   300    261  87%    0.19K     15       20        60K skbuff_head_cache
35   300    300 100%    0.12K     10       30        40K bio
36   260    260 100%   32.00K    260        1      8320K size-32768
37   254      6   2%    0.01K      1      254         4K revoke_table
38   236     55  23%    0.06K      4       59        16K fs_cache
39   216    203  93%    1.00K     54        4       216K size-1024
40   214    214 100%    2.00K    107        2       428K size-2048
41   203     83  40%    0.02K      1      203         4K biovec-1

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: