Memory

Debian 10 dmesg 消息中的 MTRR(記憶體類型範圍寄存器)

  • April 7, 2020
[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)英特爾至強 E3-1225 v3 3.2GHz、8MB 記憶體、4C/4T、英特爾方舟的完整規格+ 它在 UDIMM 中有 32 GB 的 DDR3

我設法在MTRR(記憶體類型範圍寄存器)上找到的所有內容都在 Wikipedia 上,遺憾的是我對此也不太了解。或多或少外行的任何提示?我什至應該關心dmesg我的 Debian 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:

我看不出有什麼區別,也許在實際應用程序中沒有……也許有。

記憶體類型範圍寄存器(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 空間,不能有巨大的頁表。

引用自:https://unix.stackexchange.com/questions/571666