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
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。