以下文章来自OpenAnolis龙蜥,作者Kernel SIG成员
(资料图)
SLUB DEBUG 需要传入 boot cmdline 后重启,也影响不小的 slab 性能,并且只能针对 slab 场景;
KASAN 功能强大,同时也引入了较大的性能开销,因此不适用于线上环境;后续推出的 tag-based 方案能缓解开销,但依赖于 Arm64 的硬件特性,因此不具备通用性;
KFENCE 相对来讲进步不少,可在生产环境常态化开启,但它是以采样的方式极小概率地发现问题,需要大规模集群开启来提升概率。而且只能探测 slab 相关的内存被改问题。
可以在生产环境的kernel动态开启和动态关闭。
功能关闭时无任何性能回退。
能够100% 捕获slab/order-0 page的out-of-bound、memory corruption, use-after-free、 invaild-free 等故障。
能够精准捕获问题发生的第一现场(从这个意义上来看,可以显著加速问题的复现时间)。
支持 per-slab 开关,避免过多的内存和性能开销。
支持 slab/page 内存泄露问题的排查。
理论上的覆盖场景不全
内存开销大
X 关闭
Copyright © 2015-2022 南非建筑网版权所有 备案号:沪ICP备2022005074号-13 联系邮箱:58 55 97 3@qq.com