Linux 6.9的x86缓存更新提供了改进的内存带宽限制试探法,如Intel Resource Director Technology(RDT)和AMD EPYC CPU使用的REStrl代码。
改进的内存带宽节流启发式旨在更好地处理负载级别不太规则的工作负载,在现有内核版本上,它们最终会受到不必要的惩罚。
长期担任英特尔Linux工程师的Tony Luck带头进行了这项改进解释 在补丁中:
当一个组使用的带宽大于用户在schemata文件中设置的目标时,MBA_mbps反馈循环会增加节流,当低于目标时,则减少节流。
为了避免在每次轮询中可能增加或减少节流,每当节流被改变时,都会设置一个标志"delta_comp",以指示带宽的实际变化应记录在下一次轮询中"delta_bw"中。只有当当前带宽加上delta_bw低于用户目标时,才会减少节流。
如果工作负载具有稳定的带宽需求,则该算法运行良好。但是,如果工作负载在节流级别更改时移到不同的阶段,则可能会出现严重错误。例如,如果随着限制级别的增加,工作负载基本上变为空闲,则为Delta_BW计算的值将或多或少是旧的带宽级别。如果工作负载随后恢复,Linux可能永远不会减少节流,因为当前带宽plu Delta_bw高于用户设置的目标。
通过假设在最坏的情况下,当前测量的带宽由当前节流级别控制,从而实现更简单的启发式方法。计算如果将节流放松到下一个更高的水平,它可能会增加多少。如果仍低于用户目标,则可以减少节流量。
这修复了自2018年以来一直存在的内存带宽限制启发式。
这是上周合并的一部分, x86/缓存拉取请求 for the Linux 6.9 kernel.