作为另一种性能优化,正在为 Linux 开发宽松的 TLB 刷新

Nadav Amit 多年来一直致力于减少不必要的 TLB 刷新、并发 TLB 刷新其他低级优化。最新的工作现在是关于“放松的”TLB 刷新作为另一个低级性能改进。

VMware 的 Nadav Amit 已经开始研究“宽松的”TLB 刷新,因为在他之前的工作中添加权限作为后续工作,以避免不必要的 TLB 刷新。他解释说:

此补丁集允许 userfaultfd 在 write-(un)protect ioctl 时直接将页面映射为可写,同时解决使用 userfaultfd write-unprotect 或 mprotect 添加权限时发生的不良行为。它还在此过程中进行了一些清理和微优化。

在补丁集中完成的主要更改(目前特定于 x86)是在添加权限时引入了“宽松”的 TLB 刷新。在“宽松”的 TLB 刷新时,mm 的 TLB 生成提前并且本地 TLB 被刷新,但不会发生 TLB 击落。如果发生虚假页面错误,并且发现 TLB 的本地生成与 mm 生成不同步,则在故障内核上执行完整的 TLB 刷新以防止进一步的虚假页面错误。

在某种程度上,“宽松刷新”类似于前段时间为内核映射提出的更改。但是,它与 NMI 处理程序没有任何复杂的交互。

在其补丁消息中进一步总结了宽松的 TLB 刷新:

引入严格和宽松 TLB 刷新的概念。宽松 TLB 刷新是可以跳过但可能导致性能下降的 TLB 刷新。正确处理松弛刷新取决于arch代码(在下一个补丁中)。一种这样的行为是急切地刷新本地 TLB 并懒惰地刷新远程 TLB。

性能实验看起来非常积极,以 mprotect(PROT_READ|PROT_WRITE) 的周期测量可节省多达 44% 或仅使用 mprotect(PROT_READ) 可减少约 6% 的 CPU 周期。

image.php_-28

 

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

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2022年7月20日
下一篇 2022年7月20日

相关推荐