Debian 10 dmesg 消息中的 MTRR(内存类型范围寄存器)

Debian 10 dmesg 消息中的 MTRR(内存类型范围寄存器)
[Sun Mar  1 07:51:40 2020] MTRR default type: uncachable
[Sun Mar  1 07:51:40 2020] MTRR fixed ranges enabled:
[Sun Mar  1 07:51:40 2020] MTRR variable ranges enabled:
[Sun Mar  1 07:51:40 2020] pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override.

几天前我重新启动服务器后,刚刚注意到这些消息。

可能相关:

enable_mtrr_cleanup在发现内核参数, 我引用:

The kernel tries to adjust MTRR layout from continuous
to discrete, to make X server driver able to add WB
entry later. This parameter enables that.

我不明白上面的内容,但我觉得我应该提到硬件:

这是戴尔的一款旧产品,PowerEdge T20,配备 CPU(和 iGPU)Intel至强 E3-1225 v33.2GHz,8MB 缓存,4C/4T,完整规格英特尔方舟+ 它有UDIMM 中 32 GB DDR3

我设法找到的所有内容MTRR(内存类型范围寄存器)位于维基百科上,遗憾的是我对此也不太了解。有什么或多或少的外行术语的暗示吗?我是否应该关心dmesgDebian 10 上的这条消息?


与上面的服务器相反,这里有相关部分提到硬件上的 MTRR,即我也来自戴尔的较新笔记本电脑,Inspiron 15,SO-DIMM 中 32 GB DDR4

[Sat Mar  7 10:00:42 2020] MTRR default type: write-back
[Sat Mar  7 10:00:42 2020] MTRR fixed ranges enabled:
[Sat Mar  7 10:00:42 2020] MTRR variable ranges enabled:

我看不出什么区别,也许在实际应用中没有什么区别……也许有。

答案1

存储器类型范围寄存器(MTRR) 可以控制与内存写入相关的缓存行为。在您的两个日志中,没有启用任何特定行为。如果启用它,它看起来像这样(来自我的旧系统):

MTRR default type: uncachable
MTRR fixed ranges enabled:
  00000-9FFFF write-back
  A0000-EFFFF uncachable
  F0000-FFFFF write-protect
MTRR variable ranges enabled:
  0 base 000000000 mask FE0000000 write-back
  1 base 020000000 mask FF8000000 write-back
  2 disabled
  3 disabled
  4 disabled
  5 disabled
  6 disabled
  7 disabled

通常,这仅适用于较旧的显卡,因为它会影响性能。

因此,您的日志并不表明 MTRR 方面存在异常行为。唯一有潜力的是

pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override.

如果不查看其余日志或在系统中查看,就不可能说出为什么会出现这种情况:这个内存范围是什么,MTRR 覆盖来自哪里,以及它是否适合在第一名。

所以很可能这也很好,而且它是一些 PCI 卡 I/O 空间,不能有巨大的页表。

相关内容