У нас есть сервер в колокационном центре (настоящий физический сервер, а не виртуальная машина), на котором работает 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, является неточной, неполной или просто неверной». на странице руководства)