Memory

我的系統是否使用了所有可用的 RAM?

  • November 18, 2015

我在不應該佔用它的主機板上安裝了 16GB 的 RAM。我應該購買更好的主機板還是改變任何東西?它似乎工作正常。

記憶體:Crucial Ballistix Sport “(8GBx2) DDR3 PC3-12800”

主機板:Asrock N68C-S UCC “最大系統記憶體容量:8GB”

  1. gnome-control-center.real info撒謊嗎?
Memory: 15,7GB
  1. 是否dmidecode -t16說我的主機板總共可以佔用 2x 8GB 或 8GB?
 Maximum Capacity: 8 GB
 Number Of Devices: 2
  1. free -h撒謊說使用了 15GB 中的 11 個嗎?
             total       used       free     shared    buffers     cached
Mem:           15G        11G       4,2G       7,8G       140M       9,3G
  1. 這個輸出不應該dmidecode -t 17說 1600 MHz 的速度嗎?
Handle 0x0010, DMI type 17, 27 bytes
        Size: 8192 MB
        Speed: 400 MHz
Handle 0x0012, DMI type 17, 27 bytes
        Size: 8192 MB
        Speed: 400 MHz

短篇小說:

如果您的主機板發布,並且您的系統啟動,並且 free/top 將您的 ram 顯示為 16 GB,那麼它可以工作。甚至主機板製造商也可能低估系統板的容量,因此真正的測試是如果正確安裝了ram,匹配正確,執行,即啟動,並且執行穩定,即不會崩潰,那麼它是否可以工作。您還可以通過嘗試將所有記憶體用於某事或其他內容來進行測試,並查看系統是否保持穩定。因為你有非常好的記憶體,所以很重要的是,較低級別的記憶體很可能無法在 16gB 上工作。這就是為什麼他們不說它支持 16gB 而是選擇更保守的 8gB 的原因。

你的工具,比如 free,top,報告系統的真實記憶體,沒有說謊,這是核心可以訪問的可用記憶體。讀取 dmi 數據的工具確實會撒謊,因為 dmi 根據填寫該數據的公司隨機撒謊。

gnome-control-center.real 資訊會撒謊嗎?

Memory: 15,7GB

不,它在告訴你真相。

dmidecode -t16 是否說我的主機板總共可以佔用 2x 8GB 或 8GB?

Maximum Capacity: 8 GB
Number Of Devices: 2

它說總共8gB。在查看樣本類型 16(在本例中為我的樣本)時,您可以清楚地看到它。容量是指陣列的容量。這是一個單一的記憶體陣列。這個陣列的容量為 8gB(在我的情況下是正確的),在我的情況下,它有 4 個設備。在您的情況下,它有 2 個設備。請注意,不幸的是,您無法通過可以在一個插槽中使用的最大搖桿來推斷總容量。也就是說,您可以有 4 個插槽,容量為 8gB,但每個插槽最大為 4gB,這意味著您可以使用 4x2gG 棒或 2x4gB,但不能使用 4x4gB。

Handle 0x0012, DMI type 16, 15 bytes
Physical Memory Array
       Location: System Board Or Motherboard
       Use: System Memory
       Error Correction Type: None
       Maximum Capacity: 8 GB
       Error Information Handle: Not Provided
       Number Of Devices: 4

free -h 是否在說 15GB 中的 11 個被使用?

不,免費告訴你真相。top會告訴你同樣的事實(儘管核心認為什麼是免費的或不免費的問題非常神秘,並且隨著這些工具的實現而變化,但這與這個問題的主題相去甚遠)。這是核心向使用者空間報告它可以訪問的記憶體以及使用的記憶體。

dmidecode -t 17 的輸出不應該說 1600 MHz 的速度嗎?

這取決於您的系統。以及 dmidecode 如何解釋數據。我對這部分問題生疏了。

長篇大論:

由於我必須大量處理 ram 報告問題,我必鬚髮現 dmidecode ram 數據報告的質量差異。請注意,這不是 dmidecode 的錯,因為它的工作是報告 dmi 數據,而不是解釋或糾正它。

第一:dmidecode本質上報告了兩組數據: 1:有人填寫的一些數據,也就是主機板廠商的低薪無人機有表格要填寫,要麼懶得做對,要麼做對了適合一個模型,然後只需將該數據複製到另一個模型。2:真實數據,如記憶體插槽是否有記憶體,大小,類型,速度等。

因此,在系統板記憶體容量的情況下,dmidecode 不會根據 dmidecode 執行時可用的任何實際技術規格告訴您容量。它正在做的是重複上述數據不足的人被告知在運送硬體之前填寫以檢查某些框的數據。

一些主機板供應商完美地提供了這些數據,你可以完全相信他們的陳述。其他人提供完全無意義的陳述,這導致 dmidecode 正確報告已安裝 4x2gB ram,但容量為 4gB。

例如,我相信 dmidecode 幾乎總是(如果不是總是)會非常準確地告訴您有關已安裝 ram 的完全正確的資訊,但是 dmi 數據通常會包含有關容量的錯誤數據。

當我不得不處理這個問題時,我總是使用每棒報告作為權威,我總是讓它覆蓋關於實際容量的 dmidecode 數據,因為後者不是真實數據。

# can be true, false, totally off, or pure fiction re capacity
# the rest of the data is usually pretty good though
dmidecode -t 5 

# extremely accurate and reliable, per stick information. Trust it.
dmidecode -t 6 

# same as 5, might be right re maximum capacity, might not be
dmidecode -t 16 

# extremely accurate, can trust it, but can't learn max 
dmidecode -t 17 capacity.

基本上看主機板廠商,5和16使用的數據欄位是否填寫正確?我會給你一個例子,清楚地顯示他們不想填寫的欄位。

Handle 0x001A, DMI type 17, 27 bytes
Memory Device
       Array Handle: 0x0012
       Error Information Handle: Not Provided
       Total Width: 64 bits
       Data Width: 72 bits
       Size: 2048 MB
       Form Factor: DIMM
       Set: None
       Locator: DIMM3
       Bank Locator: BANK3
       Type: DDR2
       Type Detail: Synchronous
       Speed: 400 MHz
       Manufacturer: Manufacturer3
       Serial Number: SerNum3
       Asset Tag: AssetTagNum3
       Part Number: PartNum3

您可以通過dmi數據看到這一切,在/sys內部,未填寫的數據,供應商填寫的一半或填寫錯誤的數據。速度後的項目沒有填寫正確。我個人最喜歡的是這個,這在內部比你想像的要普遍得多:

[Field Name]: To be filled by O.E.M.

你會認為在這個時代會有一些東西可以真正告訴系統​​它是什麼,但遺憾的是事實並非如此。

我可以向您展示數百個證明此問題的機器 dmidecode 數據實例,但實際上您只需要查看一兩個。我傾向於認為更好的主機板製造商傾向於更好地填寫他們的 dmi 數據集,而低端的主機板往往不會這樣做,但沒有硬性規定。

作為基本規則,這是您可以從 dmidecode 和 ram 信任的資訊:

DMI type 5
# Almost nothing in there except some generic information
Error Detecting Method: 64-bit ECC
Error Correcting Capabilities::
               None
Associated Memory Slots: 4
Enabled Error Correcting Capabilities:
               None


DMI type 6
Socket Designation: DIMM3
Current Speed: 167 ns
Installed Size: 2048 MB (Double-bank Connection)
Enabled Size: 2048 MB (Double-bank Connection)
Error Status: OK # probably

DMI type 16
Number Of Devices: 4

DMI type 17
Data Width: 72 bits
Size: 2048 MB
Locator: DIMM0
Bank Locator: BANK0
Type: DDR2
Type Detail: Synchronous # usually anyway

來自 Gilles,在評論中:

dmidecode 可能低估最大容量的另一個原因是,在製造板時 X GB 棒還不存在(或者板製造商出於某種原因沒有費心對其進行測試),因此板將 Y GB 記錄為Y < X 的最大值,但是當 X GB 棒出現時,它們會起作用。

關鍵是要意識到 dmidecode 報告的記憶體陣列具有的最大容量不是計算出來的,它只是有人在為主機板創建 dmi 表時輸入的一些數據。我通常相信供應商主機板文件而不是 dmi 數據,但正如這張海報所發現的那樣,即使這樣也不可靠。

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