首页 > 综合

焦点信息:生产环境的内存被篡改和内存泄漏如何调试?kfence来帮忙

金陵晚报 2023-06-01 08:41:35

编者按:之前我们介绍了内核并发消杀器KCSAN,有小伙伴希望介绍下内核内存方面的工具,这次为大家带来适合生产环境的工具:kfence。

以下文章来自OpenAnolis龙蜥,作者Kernel SIG成员


【资料图】

一、背景

1.1 内存被改

1.1.1 为什么调测难

1.1.2 现有方案的局限性

SLUB DEBUG 需要传入 boot cmdline 后重启,也影响不小的 slab 性能,并且只能针对 slab 场景;

KASAN 功能强大,同时也引入了较大的性能开销,因此不适用于线上环境;后续推出的 tag-based 方案能缓解开销,但依赖于 Arm64 的硬件特性,因此不具备通用性;

KFENCE 相对来讲进步不少,可在生产环境常态化开启,但它是以采样的方式极小概率地发现问题,需要大规模集群开启来提升概率。而且只能探测 slab 相关的内存被改问题。

1.2 内存泄漏

1.2.1 为什么调测难

1.2.2 现有方案的局限性

二、解决方案

可以在生产环境的kernel动态开启和动态关闭。

功能关闭时无任何性能回退。

能够100% 捕获slab/order-0 page的out-of-bound、memory corruption, use-after-free、 invaild-free 等故障。

能够精准捕获问题发生的第一现场(从这个意义上来看,可以显著加速问题的复现时间)。

支持 per-slab 开关,避免过多的内存和性能开销。

支持 slab/page 内存泄露问题的排查。

2.1 使用方法

2.1.1 功能开启

(可选)配置按 slab 过滤

采样模式

全量模式

2.1.2 内存被改

2.1.3 内存泄漏

2.2 使用效果

对于内存被改,抓到该行为后会在 dmesg 打印现场的调用栈。从触发现场到该内存的分配/释放情况一应俱全,从而帮助精准定位问题。

2.3 性能影响

2.3.1 hackbench

2.3.2 sysbench mysql

三、总结

理论上的覆盖场景不全

内存开销大

关于回放和课件获取

上一篇 下一篇
热文推荐 更多

焦点信息:生产环境的内存被篡改和内存泄漏如何调试?kfence来帮忙

2023-06-01

每日视点!6.1儿童节丨“今天,我戴上红领巾啦!”

2023-06-01

天力锂能(301152):5月31日北向资金增持4.98万股 天天热讯

2023-06-01

环球时讯:分享opporeno4pro老照片的修复方法

2023-06-01

环球资讯:【宋亚轩X你】相遇(2)

2023-06-01

全球简讯:男方到女方订婚男方长辈讲话(订婚男方叔叔致辞简短大气)

2023-06-01

教育部密集举办14场线上招聘活动|世界快资讯

2023-06-01

比特精灵 720p 下载_比特精灵种子资源下载

2023-05-31

世界首个!在合肥发布

2023-05-31

真相 |美国用毒品害了自己,乱了别国|视讯

2023-05-31

黄金与石油上涨趋势取决于美元贬值 即时焦点

2023-05-31

全球视讯!用户反馈称英伟达最新 WHQL 驱动 535.98 出现黑屏闪烁问题

2023-05-31

环球头条:长盛基金王柄方:军工有望维持高景气度和高成长性

2023-05-31

天天观速讯丨工业和信息化部部长金壮龙会见特斯拉公司首席执行官马斯克

2023-05-31

我在豫鄂交界的地方做农业机械生意11年,就这几天的节奏说下我的看法|环球播报

2023-05-31

寓教于劳,育才于勤(金台随笔) 今日快看

2023-05-31

全球快播:全国更好的小山村

2023-05-31

环球今日报丨2023天津市老年人大学教学方式(3种)

2023-05-31

NVIDIA台北电脑展新闻: ACE游戏开发版、ULMB 2显示器、和更多Reflex、DLSS游戏!

2023-05-31

每日速递:沪电股份:公司将加速泰国生产基地进程

2023-05-31