Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。
1.命令用法:
该命令用起来很简单,默认执行时不要求任何参数。但是它要求root特权来读取内核片信息。以普通用户执行该命令会出现以下错误:
你可以在前面设置“sudo”来运行该命令,默认输出见下图:
要退出slabtop,只需敲‘q’,就像在top命令中那样。
代码语言:javascript复制 OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
96000 91833 95% 1.00K 6000 16 96000K xfs_inode
共 6000个slab
每个slab包含16个对象
共 96000个对象
对象的size是1K
所以CACHE SIZE是96000K
ACTIVE #:指对象中活跃的数量
CACHE SIZE #:是占用的内存大小
NAME #:内存项的名字
汇总信息中:
Active / Total Size (% used) : 390763.29K / 406922.94K (96.0%)
这一项是slab活跃项占用内存的大小/总的内存使用的大小
2.Slabtop选项:
2.1 显示间隔:
默认情况下,slabtop每隔3秒刷新一次。但是,如果你想要调整,可以使用-d或者--delay=N选项来调整刷新间隔,以秒为单位:
2.2 排序标准:
在slabtop输出中有很多字段,-s或--sort=S选项可以根据指定的排序标准对这些字段排序。该选项将在下一节中详细讲述。
2.3 输出一次:
-o或--once选项不会刷新输出,它仅仅将一次输出结果丢给STDOUT,然后退出。
2.4 版本信息:
-V或--version选项显示命令的版本并退出。
2.5 帮助:
常见选项,-h或--help显示命令的使用帮助。
3.排序标准:
排序标准确定了哪个片缓存显示在顶部,下面是slabtop的排序标准:
3.1 活跃:
缓存可以通过‘a’来对活跃对象编号进行排序。
3.2 对象/分片:
每分片对象数可以使用“b”来选择。
3.3 缓存大小:
要选择缓存大小,你需要提供“c”选项。
3.4 分片:
分片数量,使用“l”来选择。
3.5 活跃分片:
活跃分片数量。(注意:这不同于上面讲得活跃对象数量。)使用“v”来根据该标准排序。
3.6 名称:
缓存名称。相关字符是“n”。
3.7 对象:
要根据对象数量排序,使用“o”。
3.8 每分片页面数:
“p”将根据每分片页面数排序。
3.9 对象大小:
对象大小排序由“s”来指定。
3.10 使用:
“u”选项根据缓存使用量排序。