Linux 5.19 将“让生活变得悲惨”以减缓表现不佳的拆分锁应用程序

早在 2020 年,从事 Linux 内核工作的英特尔工程师就添加了拆分锁检测,以在原子操作跨越多个缓存行并需要全局总线锁以实现原子性时发出警告。警告现在被认为不够有用,因此前进的意图是通过减慢性能来让这些行为不端的用户空间应用程序“让生活变得悲惨”,希望应用程序开发人员更好地处理他们的代码。

虽然默认行为是为滥用拆分锁的用户空间应用程序提供警告,但之前的补丁确实允许杀死应用程序. 与单个高速缓存行中的原子操作相比,拆分锁至少需要多 1,000 个周期。拆分锁会导致其他 CPU 被阻塞,并且其他用于控制的总线代理也被阻塞 – 影响整体系统性能。

此 Linux 拆分锁检测依赖于现代 x86_64 CPU 功能,以便能够在遇到拆分锁时生成对齐检查异常。可以使用“split_lock_detect=”内核参数调整现有内核行为。 英特尔工程师 Tony Luck 提议让事情变得更具侵略性,并通过补丁

“让分体式储物柜的生活变得悲惨”今年早些时候发布。现在排队等待 Linux 5.19 的补丁正试图大大降低有问题的应用程序的速度,以便开发人员有望解决这个问题。新的“顺序”模式强制对用户空间拆分锁进行顺序访问。反过来,此模式还确保在这些条件下整体系统性能更好。

因此,一个新的选项可以“以一种令人讨厌的方式减慢它”。

此更改的主要原因是为系统上运行的其他应用程序提供更好的服务质量。内部测试表明,即使有许多进程拆分锁,系统其余部分的性能也更加敏感。

为现有的“split_lock_detect”引导参数“sequential”添加一个新选项。在此模式下,启用拆分锁定检测。当应用程序尝试执行总线锁时,#AC 处理程序。

1)阻塞(中断)直到它可以得到信号量
如果被中断,就返回。假设该信号将终止任务,或直接执行远离试图获得总线锁定的指令。
2) 禁用当前核心的拆分锁检测
3) 安排一个工作队列以在 2 个 jiffies 内重新启用拆分锁检测
4) 返回

这种“让生活变得悲惨”的变化是作为 Linux 5.19 的 x86 拆分锁更新 提交的。

image.php_-57

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun167002.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年5月24日 上午9:40
下一篇 2022年5月24日

相关推荐