一个重要的Linux内核补丁系列已经针对新的一年进行了更新,在合成测试中,它在AMD Ryzen线程解析器系统上的吞吐量提高了大约12倍。
索尼的Uladzislau Rezki几个月来一直在努力消除Linux内核的vmap/vMalloc代码中的锁定争用。这种由保护全局VMAP空间的单一自旋锁引起的锁定争用正在导致当今日益高的核心计数系统上的严重问题。
补丁系列现在已经到了第三次迭代,目的是让它更具可扩展性:
“我们引入了有效的VMAP节点逻辑。节点作为独立实体直接(如果可能)为来自其池的分配请求提供服务。这样,它绕过了由其自己的锁保护的全局VMAP空间。
对池的访问由CPU串行化。节点数等于系统中的CPU数。请注意,高阈值绑定到128个节点。
池根据系统需求进行大小隔离和填充。可以存储到独立存储中的最大分配请求是256页。作为第一步,懒惰的排水路径使池衰退25%,作为第二步,由新释放的VAS填充以供重复使用,而不是将它们返回到全局空间中。
在强调vMalloc路径的合成测试中,索尼工程师发现,在AMD Ryzen Thadriper 3970X测试系统上,吞吐量大约高出约12倍。
这个V3补丁程序 for dealing with this vmap/vmalloc locking contention is out for review on the Linux kernel mailing list. Hopefully this is just the tip of the iceberg we see for Linux performance optimizations in 2024.