如何以及为什么要指定mtrr_gran_size / mtrr_chunk_size?

我今天注意到/var/log/dmesg包含几十行,其中包含一些名为gran_size*BAD*gran_size ,后面跟着对我来说似乎是一条指令:

 [ 0.000000] mtrr_cleanup: can not find optimal value [ 0.000000] please specify mtrr_gran_size/mtrr_chunk_size 

我需要做它说的吗? 我怎么样?

MTRR代表内存类型范围寄存器,这是一种分区和管理系统内存资源的新方法。 由于内存大小越来越大,此function已放置在处理器中。 必须有一种方法可以分配内存并更有效地使用。

MTRR的一个主要特征是映射系统中PCI或AGP组件的位置,以便软件,驱动程序可以快速有效地访问它们。

(来自Gentoo Wiki )

在阅读解决Linux MTRR问题之后,当mtrr清理程序无法从多个内存布局选项中进行选择时,会看到您看到的错误。 它应该打印错误消息旁边的可能选项列表。 要使消息消失,您需要指定类似的内容

 enable_mtrr_cleanup mtrr_spare_reg_nr=1 mtrr_gran_size=32M mtrr_chunk_size=128M 

在核心引导参数中(其中实际值来自消毒剂提出的选项之一)。

该文章的作者声称

现在24MiB的ram已经不见了,但是我的3d工作负载,基本上是webgl内容和谷歌地球内部的隐藏飞行模拟器,都以更好的帧速率运行。

这让我很感兴趣…需要在我的所有机器上检查dmesg