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 空間,不能有巨大的頁表。

相關內容