Memory
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)英特爾至強 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 空間,不能有巨大的頁表。