perf kmem:内核内存分配剖析
更新时间:2026-10-01。排查内核模块/驱动的内存增长与分配热点时,perf kmem 直接落到分配器事件。
一、两种模式
perf kmem record+--slab:聚合每个 slab cache 的分配/释放次数、字节、活跃对象。--page:看伙伴系统页分配。- 报告可展开调用栈,知道是谁、分配多大、多频繁。
二、典型用途
某 cache 活跃对象/字节持续增长 → 疑似泄漏;高频小分配、跨 cache 碎片 → 性能问题。结合 /proc/slabinfo、slabtop 交叉确认。

三、常见坑
- 分配频繁导致 trace 量很大。
- 只看总字节不看增长趋势。
- 用户态堆(malloc)泄漏应找 valgrind/heaptrack,不是 perf kmem。
小结
perf kmem 剖析内核 slab/页分配与增长,价值在分配栈定位;用户态堆问题要用别的工具。下一篇 perf trace 与系统调用。
总结
perf kmem 落到内核分配器事件:--slab 聚合每个 kmem_cache 的分配/释放次数、字节和活跃对象,--page 看伙伴系统页分配,展开调用栈即可知道谁在分配、多大、多频繁;某 cache 活跃对象/字节持续增长指向泄漏、高频小分配和跨 cache 碎片指向性能问题,结合 /proc/slabinfo、slabtop 交叉验证——注意它只看内核态分配,用户态 malloc 堆泄漏应找 valgrind/heaptrack。