在Linux 6.1 的许多令人兴奋的新功能中,合并多代 LRU“MGLRU”代码已成为2022 年最好的内核创新之一,用于全面检查 Linux 内核的页面回收代码。性能结果已经非常有希望,并且 MGLRU 正在 Google 和其他大型部署中成功使用。尽管在这个领域进一步推进内核的工作还没有结束。
MGLRU看起来非常适合 Linux 6.1,并且正在继续发展。上周一直领导上游 Linux 内核的 MGLRU 补丁的谷歌工程师 Yu Zhao 发布了一组新的增强功能。
Yu Zhao 的最新补丁涵盖了 memcg LRU。以下是他如何总结这项附加功能的工作:
memcg LRU 是 memcgs 的每节点 LRU。它也是 LRU 的 LRU,因为每个节点和 memcg 组合都有一个 LRU 的作品集(请参阅 mem_cgroup_lruvec())。
它的目标是提高全局回收的可扩展性,这对于数据中心的系统范围内存过度使用至关重要。请注意,memcg 回收目前超出范围。
它的内存膨胀是指向每个 LRU 向量的指针,并且对每个节点都可以忽略不计。在global reclaim期间遍历memcgs方面,将best-case的复杂度从O(n)提升到O(1),并且不影响worst-case的复杂度O(n)。因此,平均而言,与当前的线性复杂度相比,它具有次线性复杂度。
…
在全球回收方面,它有两个鲜明的特点:
1. Sharding,允许每个线程从一个随机的memcg(老年代)开始,提高并行度;
2. 最终的公平性,允许直接回收并减少延迟,而不会在一段时间内影响公平性。
到目前为止,测试结果有限,但通过示例测试脚本来衡量有效性,MGLRU 的状态非常好。
他预计不久将有更多基准测试结果与大家分享。有关此最新 MGLRU 工作的更多详细信息,请参阅memcg LRU 补丁。尽管考虑到这些补丁的发布时间,但预计不会在即将到来的 v6.2 周期内发布。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun203167.html