Назад | Перейти на главную страницу

'free' и '/ proc / meminfo / report меньше общей памяти, чем' dmidecode '

У нас есть сервер в колокационном центре (настоящий физический сервер, а не виртуальная машина), на котором работает 64-битный Debian (uname -r: 3.16.0-4-amd64).

/proc/meminfoсообщает о 4 ГиБ общей памяти:

$ head -n 1 /proc/meminfo
MemTotal:        4051692 kB

free сообщает то же самое (я смотрел только total столбец; Я не говорю об использованных, бесплатных, общих, буферах, кешированных):

$ free -k
             total       used       free     shared    buffers     cached
Mem:       4051692    3867356     184336     220908      63948    1203596
-/+ buffers/cache:    2599812    1451880
Swap:     15728208     652540   15075668

И так делает dmesg | grep Memory:

$ dmesg | grep Memory
[    0.000000] Memory: 4034240K/4185236K available (5287K kernel code, 949K rwdata, 1836K rodata, 1208K init, 840K bss, 150996K reserved)

Но dmidecode сообщает 4 * 2 ГиБ = 8 ГиБ ОЗУ, если я правильно понимаю:

$ sudo dmidecode --type memory

# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0008, DMI type 5, 24 bytes
Memory Controller Information
    Error Detecting Method: 64-bit ECC
    Error Correcting Capabilities:
        Single-bit Error Correcting
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 4096 MB
    Maximum Total Memory Size: 16384 MB
    Supported Speeds:
        Other
    Supported Memory Types:
        DIMM
        SDRAM
    Memory Module Voltage: 3.3 V
    Associated Memory Slots: 4
        0x0009
        0x000A
        0x000B
        0x000C
    Enabled Error Correcting Capabilities:
        Single-bit Error Correcting

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM1A
    Bank Connections: 0 1
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 2048 MB (Single-bank Connection)
    Enabled Size: 2048 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM1B
    Bank Connections: 2 3
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 2048 MB (Single-bank Connection)
    Enabled Size: 2048 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000B, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM2A
    Bank Connections: 4 5
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 2048 MB (Single-bank Connection)
    Enabled Size: 2048 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000C, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM2B
    Bank Connections: 6 7
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 2048 MB (Single-bank Connection)
    Enabled Size: 2048 MB (Single-bank Connection)
    Error Status: OK

Handle 0x002A, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Single-bit ECC
    Maximum Capacity: 16 GB
    Error Information Handle: Not Provided
    Number Of Devices: 4

Handle 0x002C, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x002A
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1A
    Bank Locator: BANK0
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1333 MHz
    Manufacturer: Micron        
    Serial Number: 501C6FDC
    Asset Tag: AssetTagNum0
    Part Number: 9JSF25672AZ-1G4D1 
    Rank: Unknown

Handle 0x002E, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x002A
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1B
    Bank Locator: BANK1
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1333 MHz
    Manufacturer: Micron        
    Serial Number: 2A1C6FDC
    Asset Tag: AssetTagNum1
    Part Number: 9JSF25672AZ-1G4D1 
    Rank: Unknown

Handle 0x0030, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x002A
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM2A
    Bank Locator: BANK2
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1333 MHz
    Manufacturer: Micron        
    Serial Number: 511C6FDC
    Asset Tag: AssetTagNum2
    Part Number: 9JSF25672AZ-1G4D1 
    Rank: Unknown

Handle 0x0032, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x002A
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM2B
    Bank Locator: BANK3
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1333 MHz
    Manufacturer: Micron        
    Serial Number: 4B1C6FDC
    Asset Tag: AssetTagNum3
    Part Number: 9JSF25672AZ-1G4D1 
    Rank: Unknown

Что мне не хватает? Это сервер в центре размещения, поэтому, к сожалению, я не могу легко увидеть, что установлено физически.

Редактировать: man dmidecode говорит: «Чаще всего информация, содержащаяся в таблицах DMI, является неточной, неполной или просто неверной». Может быть, dmidecode просто сообщает неверные данные?

Изменить: это не дубликат Почему Linux странно сообщает о «свободной» памяти?. Этот вопрос касается свободной памяти и путаницы, связанной с удалением буферов и кеша. я не беспокоит свободная память, только общая память. Не позволяйте мне использовать free Команда вводит вас в заблуждение: я не использовал ее, чтобы смотреть на объем свободной памяти, только на объем общей памяти. Если кто-то все еще считает, что этот вопрос повторяется, объясните, почему, потому что я не понимаю.

Редактировать: dmidecode -t1 по просьбе Ленни

$ sudo dmidecode -t1
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: Supermicro
        Product Name: X8SIL
        Version: 0123456789
        Serial Number: 0123456789
        UUID: 49434D53-0200-9037-2500-379025009946
        Wake-up Type: Power Switch
        SKU Number: To Be Filled By O.E.M.
        Family: To Be Filled By O.E.M.

Руководство для этой материнской платы Supermicro X8SIL доступно по адресу: http://www.supermicro.com/manuals/motherboard/3420/MNL-1130.pdf

На странице 32 (также известной как 2-10) указано, что если используется небуферизованная (UDIMM) одноранговая память, максимальный поддерживаемый объем памяти будет только 4 ГБ при использовании модулей DIMM 1 ГБ и 8 ГБ с модулями DIMM 2 ГБ.

С двухранговыми модулями UDIMM максимальная емкость составит 16 ГБ.

Максимальный максимальный объем в 32 ГБ может быть достигнут только при использовании зарегистрированных (RDIMM) модулей памяти с четырьмя рангами, и при их использовании скорость шины памяти сильно снизится.

И немного погуглив по "Micron 9JSF25672AZ-1G4D1" привел меня сюда: https://www.compuram.biz/memory_module/mt9jsf25672az-1g4d1/micron.htm

Кажется, это подтверждает, что Micron Technology (MT) 9JSF25672AZ-1G4D1 действительно является небуферизованным одноранговым модулем памяти размером 2 ГБ.

На странице 34 (или 2-13) руководства указано, что при использовании только 4 ГБ оперативной памяти значительная ее часть будет выделена системным устройствам и не будет использоваться. Это может быть причиной по крайней мере части недостающей памяти с установленным 8 ГБ. К сожалению, в инструкции нет подробного описания распределения системных устройств в корпусе 8 ГБ.

@ roel-schroeven: Разница заключается в том, на что смотрят различные команды.

Такие команды, как «бесплатно», проверяют системную память, как сообщает ОС (ядро).

"dmidecode"команда просматривает таблицу DMI оборудования системы, как сообщает драйвер SMBIOS из системного BIOS - см. предыдущий вопрос о происхождении DMI.

Таким образом, dmidecode покажет, какое оборудование установлено, но не то, что обязательно используется ОС. Это может ввести в заблуждение, поскольку оно может включать, например, карты расширения, у которых нет драйвера ОС, но которые тем не менее присутствуют в списке оборудования. Кроме того, поскольку он показывает варианты обновления, это может еще больше запутать ситуацию.

Список BIOS не всегда может отображать правильную информацию (упомянутый вами отказ от ответственности "неточный, неполный или просто неправильный"), как, например, в случае с ОЗУ, в зависимости от настроек и типа доступного исправления ошибок, BIOS не будет уметь обнаруживать расширенную информацию, такую ​​как ошибки. В идеальном мире это должно привести к появлению такой информации, как «Состояние ошибки: недоступно», но это не так (пока).

Оказывается, один из модулей памяти неисправен, в результате чего система игнорирует тот и другой в том же канале.

Теперь у нас в офисе есть сервер, и мы видим, что действительно присутствует 4 модуля DIMM, каждый по 2 ГБ. Я протестировал модули один за другим и обнаружил, что один неисправный.

(Это не объясняет, почему dmidecode показывает «Статус ошибки: ОК» для всех четырех модулей. Я полагаю, это можно объяснить цитатой «Чаще всего информация, содержащаяся в таблицах DMI, является неточной, неполной или просто неверной». на странице руководства)