深入理解内核内存分配:SLUB调试与vmalloc API
1. SLUB层调试选项
在使用SLUB(默认的内核slab实现)时,调试内核级别的slab问题功能强大,因为内核拥有完整的调试信息,只是默认处于关闭状态。以下是开启和查看slab调试级信息的方法:
- 通过内核命令行 :在启动加载器中传递 slub_debug= 字符串,可开启完整的SLUB内核级调试。通过传递不同选项给 slub_debug= 字符串,可以微调要查看的具体调试信息。例如,传递 slub_debug=FZ 会开启以下选项:
- F :开启完整性检查( SLAB_DEBUG_CONSISTENCY_CHECKS ),但会降低系统速度。
- Z :启用红色分区。
- 通过伪文件 :即使未通过内核命令行开启SLUB调试功能,也可以通过以root权限向 /sys/kernel/slab/<slab-name> 下的伪文件写入 1 来启用或禁用它。例如,加载之前的演示内核模块(ch9/slab_custom)后,可以通过以下命令查看每个分配对象的理论和实际大小:
$ sudo cat /sys/kernel/slab/our_ctx/object_size /sys/kernel/slab/our
超级会员免费看
订阅专栏 解锁全文
1033

被折叠的 条评论
为什么被折叠?



