slabtop简单的用途

http://blog.yufeng.info/archives/1960

我们知道内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。我们通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄漏。

linux系统透过/proc/slabinfo来向用户暴露slab的使用情况的,我们来看下:

$ head /proc/slabinfo
slabinfo - version: 2.0
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <batchcount> <limit> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
msi_cache              2      2   3840    1    1 : tunables   24   12    8 : slabdata      2      2      0
ip_fib_alias          11    226     16  226    1 : tunables  120   60    8 : slabdata      1      1      0
ip_fib_hash           11    119     32  119    1 : tunables  120   60    8 : slabdata      1      1      0
dm_mirror            100    105   1052    7    2 : tunables   24   12    8 : slabdata     15     15      0
dm_mpath               0      0   1052    7    2 : tunables   24   12    8 : slabdata      0      0      0
dm_tio                 0      0     16  226    1 : tunables  120   60    8 : slabdata      0      0      0
dm_io                  0      0     20  185    1 : tunables  120   60    8 : slabdata      0      0      0
dm-bvec-(256)          0      0   3072    2    2 : tunables   24   12    8 : slabdata      0      0      0
...

其实还有更好的查看工具:slabtop很直观的可以看到slab使用情况和汇总,上图:

很清晰的为性能调优和trouble shoot提供一个参考面!

祝玩得开心!

### 解读 `cat /proc/vmstat` 输出结果 `/proc/vmstat` 提供了关于虚拟内存子系统的各种统计信息,这些数据可以帮助管理员了解系统内存的使用状况以及调试可能存在的内存分配问题。以下是常见字段及其意义: #### 常见字段解释 1. **pgpgin 和 pgpgout** - 表示页面进入和离开内存的数量(单位为页)。这反映了磁盘 I/O 的活跃程度[^1]。 2. **pswpin 和 pswpout** - 这两个字段记录了交换分区中页面进入和离开内存的情况。高频率的 swap 操作通常意味着系统正在经历严重的内存压力。 3. **allocstall** - 记录由于内存不足而引发的分配停滞事件次数。较高的 allocstall 数值表明可能存在内存瓶颈[^2]。 4. **pgfault 和 pgmajfault** - `pgfault` 是普通页面错误计数器,当访问未映射到物理地址空间的虚拟地址时触发。 - `pgmajfault` 则是重大页面错误计数器,表示需要从磁盘加载数据才能满足请求的重大错误。频繁的重大页面错误可能是性能下降的一个标志。 5. **kswapd_steal 和 kswapd_inodesteal** - 反应后台进程回收内存的能力。如果这两个数值较高,说明内核正积极尝试释放不需要的内存资源来缓解压力。 6. **nr_free_pages, nr_active_anon, nr_inactive_anon, nr_active_file, nr_inactive_file** - 描述不同类型内存区域的状态: - `nr_free_pages`: 当前可用空闲页帧总数; - `_anon`: 匿名内存(如堆栈),不与文件关联; - `_file`: 文件缓存相关的内存; - `active/inactive`: 是否处于活动状态,影响 LRU 替换策略的选择[^3]。 7. **compact_stall 和 compact_fail** - 关联大页分配失败时的碎片整理操作。如果经常看到 compaction stall 或 fail 报告,则暗示存在内存分片问题。 #### 示例命令及用途 要获取上述统计数据并持续观察变化趋势可执行如下指令: ```bash watch -n 1 'cat /proc/vmstat' ``` 对于更具体的分析需求还可以借助专门工具比如 vmstat、slabtop 等进一步挖掘细节。 --- ### 如何利用 `/proc/sys/vm/drop_caches` 清理缓存辅助诊断? 有时为了排除缓存因素干扰或者验证某些假设条件成立与否,在实验环境下可以通过设置 drop_caches 参数强制清除部分或全部类型的高速缓冲区内容。具体方法已在引用材料中有提及。 注意此行为仅适用于短期测试目的而非长期解决方案! --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值