我们都知道在Linux系统中,内核模块在分配资源的时候,为了提高效率和资源利用率都是通过slab来分配的。通过slab的信息,再配合源码就能粗略的了解系统运行状况。
在Linux下保存着监视系统中所有活动的 slab 缓存的信息的文件为/proc/slabinfo。我们可以通过/proc/slabinfo向用户展示slab的使用情况。
Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法。Jeff 的分配器是围绕对象缓存进行的。在内核中,会为有限的对象集(例如文件描述符和其他常见结构)分配大量内存。Jeff 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内存池,而是将内存保持为针对特定目而初始化的状态。Linux slab 分配器使用了这种思想和其他一些思想来构建一个在空间和时间上都具有高效性的内存分配器。
Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。而slabtop命令可以以实时的方式直观的显示内核slab缓冲区的信息。
- 查看help信息用slabtop --help
默认情况下,每间隔3秒刷新一次,但可以用-d或者—delay=N 选项调整刷新时间间隔,单位是秒。
After 10s
如果只想输出一次结果就结束,可以用-o或--once选项。它仅仅输出一次结果,然后退出;
本文仅展示一些简单用法,建议深入了解Linux内存分配机制原理。
参考资料:
http://blog.yufeng.info/archives/1960 (霸爷多年经验分享,值得订阅和每日学习)