Linux内核:多世代LRU

2021-04-19 22:15:50

Warning: Can only detect less than 5000 characters

这基本上尝试使用更多CPU时间来预测通过在管理页面进行更多工作来预测未来。我猜所有可以提供现代CPU的所有核心。尚不清楚的是,补丁为什么有助于OOM杀手。是因为它有助于识别预期的应用程序吗?

任何回收内存都有助于OOM杀手的东西,对吗?或者相反,有助于避免诉诸oom杀手。一个人不想打电话给oom杀手,除非它' s绝望。

多世代版使用*少* CPU时间,即。 "展示KSWAPD&#34的CPU使用率减少51%;在一个工作量下。这是可能的,因为现有代码具有扫描全局页面阵列的次优算法,并且必须为每个页面进行昂贵的反向查找到每个流程页面表中,触摸不一定在缓存中以任何其他原因的表格。新代码通过直接在活动流程上进行新一代扫描来改进,改善了&#34上的缓存局部性;快速路径",避免了反向查找,从而提高了关于所谓的页面以及何时何时获得的决定似乎甚至减少了在驱逐必要时必须完成的工作量。

嗨,我' m在这个项目上工作的工程师之一。我想澄清那种多才类lru不使用更多的CPU。事实上,对于我们可以基准的所有工作负载,它使用更少,更少。但那么赶上什么'它保留了每个页面的更多(LRU)信息,在页面和GT中的备用空间中;标志。它还为每个MEMCG,节点和进程存储额外信息。具体而言,它具有〜500字节的每个MEMCG和PER-Node和每个过程内存开销〜50字节。

感谢您澄清社区的权衡和邀请,询问其他问题!

与利益相比,这些记忆开销似乎是相当轻微的,而不是说微不足道。您是否确定了在您的算法下更糟糕的任何工作负载?人们可以假设谷歌拥有相当多的众多不同的工作负载来实验......

这么晚才回复很抱歉。你的假设是正确的。但我们的"野外不同的工作负载和#34;只是所有现实世界工作负载的一小部分。 Afaik,我们不使用PostgreSQL,我们计划与PostgreSQL社区联系,看看他们是否可以帮助我们进行基准测试。我们不使用io_uring(尚未)。 Jens Axboe,IO_调节维护者帮助我们在缓冲I / O中识别回归并验证修复程序。现在与主线相比有所改进:https://lore.kernel.org/linux-mm/202104130656332782273-1 ...按设计,多铸液lru' t做出任何工作量 - 为什么要做在收集更多信息后会造成更糟的决定?但是,它只是这个理论:)底线是我们' ll尽力解决社区报告给我们的任何回归。再次,电子邮件地址是[email protected]

我介绍了非常相似的算法,进一步改进了我的主人' 1995年的论文,并通过模拟模型进行了一些分析和性能评估。我叫算法Elru,用于延长最近使用的算法。字母E也方便地以抽象形式提供数据结构。请查看我的论文更多的东西。一些快速评论: - 我将新页面放到"插入列表"不是顶部列表(最年轻的一代)。如果新页面置于最小的生成列表中,则随后使用较小的记忆将基本上减少算法LRU案例,当发生大的顺序访问时。将动态定义插入列表,我模拟了不同的配置(参见Elru Treshold)。第60页的仿真图形显示为什么至少适用于我的模拟工作负载很重要。 - 此外,对于已知具有特定类型的页面,它们可以插入到表示不同优先级的列表。如果内核进行了错误的预测,则它可能会通过访问页面的访问来纠正到上列表。我想我对此没有仿真。 - 我将访问的页面移动到一个列表更高。不直接到最小的一代。如果访问模式非常热,通常会使用文件系统,您可以获得更好的结果。请参阅仿真图。我认为将活动页面恢复到最小的列表将最终向上启动相应的ELRU(N,0),其性能显着降低。 - 参见论文中的优先级,3.3,可以在页面缓存中相关。我在工作期间没有模拟它,进一步的测试可能有用。实现的很简单,允许高优先级的东西有更好的机会留在记忆中。 - 我认为我使用的模拟我使用了固定列表集,但它可以是动态的,在需要时创建新列表。我不记得如果我们在真实实施中的动态列表分配/我们也将该算法作为赫尔辛基大学(小屋)的阴影数据库项目的一部分实施,现在是赫尔辛基的Aalto大学的一部分。影子分页(类似概念到现在被称为#34的概念;写作&#34的复制")由于页面表和Metadata非常频繁地访问了强烈的分层工作负载。对于写入文件系统的其他复制以及ZFS的其他复制,可能是如此,具体取决于实现。我们考虑使用在阴影项目中创建的代码库实现文件系统,但由于其他内容随之而来,它不会实现。代码可以在公共源许可证下发布,但它是数据库&使用者的东西。阴影有一些有用的想法,我没有看到其他任何地方,如RAID模型与不同尺寸的磁盘合作,闪光灯很好地没有穿缝合,因为它自然地通过垃圾收集完成大块顺序写入。我认为论文'本文在CS部门出版物中发表,因此在知识产权问题的情况下,它应该作为现有技术。我没有提交专利,所以可以使用它是安全的。我在项目中也做了一些文学研究,因此硕士&#39的参考资料也是如此,缓存算法是漂亮的旧领域,已经是25年前。最古老的东西可能不可借格,我在尘土飞扬的图书馆中度过了很多时间。这可以是进一步的现有技术来源。