'free' und '/ proc / meminfo / melden weniger Gesamtspeicher als' dmidecode '

7

Wir haben einen Server in einem Colocationszentrum (ein realer physischer Server, kein VM), 64-Bit Debian ( uname -r: 3.16.0-4-amd64).

/proc/meminfomeldet ungefähr 4 GiB Gesamtspeicher:

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

freemeldet dasselbe (ich habe nur die totalSpalte angesehen; ich spreche nicht von gebraucht, kostenlos, geteilt, Puffer, zwischengespeichert):

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

Und so auch 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)

Aber dmidecode meldet 4 * 2 GiB = 8 GiB RAM, wenn ich es richtig verstehe:

$ 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

Was vermisse ich? Es ist ein Server in einem Colocation Center, daher kann ich leider nicht leicht erkennen, was physisch installiert ist.

Bearbeiten: man dmidecodesagt "Meistens sind die in den DMI-Tabellen enthaltenen Informationen ungenau, unvollständig oder einfach falsch." Vielleicht meldet dmidecode einfach falsche Daten?

Bearbeiten: Dies ist kein Duplikat von Warum meldet Linux seltsamerweise "freien" Speicher? . Bei dieser Frage geht es um freien Speicher und um Verwirrung, die durch Puffer und Cache entsteht. Ich mache mir keine Sorgen um freien Speicher, sondern nur um den Gesamtspeicher. Lassen Sie sich von meiner Verwendung des freeBefehls nicht täuschen: Ich habe ihn nicht verwendet, um die Menge an freiem Speicher zu überprüfen, sondern nur die Menge an Gesamtspeicher. Wenn jemand diese Frage immer noch für ein Duplikat hält, erklären Sie mir bitte, warum, weil ich sie nicht verstehe.

Bearbeiten: dmidecode -t1wie von Lenniey angefordert

$ 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.
Roel Schroeven
quelle
2
Ja, sieht auf jeden Fall aus wie 4x2GiB-DIMMs. Welche Distribution wird ausgeführt (insbesondere handelt es sich um einen 32-Bit- oder 64-Bit-Kernel)?
mjturner
1
Mögliches Duplikat von Warum meldet Linux seltsamerweise "freien" Speicher?
Sum1sAdmin
1
Mögliche Dinge, die überprüft werden müssen, sind /proc/cmdlineein mem=Boot-Parameter, der den Speicher einschränken könnte, oder wenn Sie ein Multi-CPU-Socket-System haben, in dem nicht alle Sockets belegt sind. Dann kann der Speicher in Speicherbänken installiert werden, die für die fehlende CPU reserviert sind, oder Ihr BIOS wurde für die Speicherspiegelung konfiguriert .
HBruijn
1
@ Sum1sAdmin: Entschuldigung, ich verstehe nicht. Diese verknüpfte Frage handelt von freiem Speicher, Puffern und Cache. Davon spreche ich nicht. Ich spreche von der allerersten Zahl in der Ausgabe von free, die die Gesamtspeichermenge im System anzeigt, nicht den freien Speicher. Oder anders ausgedrückt: head -n 1 /proc/meminfogibt MemTotal: 4051692 kB. Hat nichts mit freiem Speicher oder Speicher zu tun, der von Puffern und Cache belegt wird.
Roel Schroeven
1
@kasperd deshalb habe ich gefragt dmidecode -t1, das Board unterstützt 32 GB ECC / 16 GB ungepuffert mit 4 Steckplätzen. Seltsam ...
Lenniey

Antworten:

1

Das Handbuch für dieses Supermicro X8SIL-Motherboard finden Sie unter: http://www.supermicro.com/manuals/motherboard/3420/MNL-1130.pdf

Auf Seite 32 (auch bekannt als 2-10) wird angegeben, dass bei Verwendung von UDIMM-Speicher (Unbuffered) mit einem Rang die maximal unterstützte Speichermenge nur 4 GB beträgt, wenn 1-GB-DIMMs und 8 GB mit 2-GB-DIMMs verwendet werden.

Bei UDIMMs mit zwei Rängen beträgt die maximale Kapazität 16 GB.

Die endgültige maximale Kapazität von 32 GB kann nur mit registrierten (RDIMM) Quad-Rank-Speichermodulen erreicht werden, und die Speicherbusgeschwindigkeit wird bei Verwendung beeinträchtigt.

Und ein bisschen googeln auf "Micron 9JSF25672AZ-1G4D1" brachte mich hierher: https://www.compuram.biz/memory_module/mt9jsf25672az-1g4d1/micron.htm

Es scheint zu bestätigen, dass Micron Technology (MT) 9JSF25672AZ-1G4D1 tatsächlich ein ungepuffertes Single-Rank-Speichermodul mit einer Größe von 2 GB ist.

Auf Seite 34 (oder 2-13) des Handbuchs wird angegeben, dass bei Verwendung von nur 4 GB RAM ein erheblicher Teil davon Systemgeräten zugewiesen und nicht verwendet werden kann. Dies könnte zumindest einen Teil des fehlenden Speichers mit 8 GB ausmachen. Leider beschreibt das Handbuch die Systemgerätezuordnungen im 8-GB-Fall nicht im Detail.

telcoM
quelle
0

Es stellt sich heraus, dass eines der Speichermodule fehlerhaft ist, was dazu führt, dass das System das eine und das andere im selben Kanal ignoriert.

Wir haben jetzt den Server in unserem Büro und sehen, dass wirklich 4 DIMM-Module mit jeweils 2 GB vorhanden sind. Ich habe die Module einzeln getestet und festgestellt, dass es ein fehlerhaftes gibt.

(Das erklärt nicht, warum dmidecode für alle vier Module "Fehlerstatus: OK" anzeigt. Ich nehme an, dass dies durch das Zitat "Meistens sind die in den DMI-Tabellen enthaltenen Informationen ungenau, unvollständig oder einfach falsch" erklärt werden kann. in der Manpage)

Roel Schroeven
quelle
0

@ roel-schroeven: Der Unterschied ergibt sich aus dem, was die verschiedenen Befehle sehen.

Befehle wie "frei" überprüfen den Systemspeicher, wie vom Betriebssystem (Kernel) gemeldet.

Der Befehl " dmidecode " zeigt die DMI-Tabelle der Systemhardware an, die vom SMBIOS-Treiber im System-BIOS gemeldet wurde - siehe vorherige Frage zum DMI-Ursprung .

Daher zeigt dmidecode an, welche Hardware installiert ist, jedoch nicht, was vom Betriebssystem unbedingt verwendet wird. Dies kann irreführend sein, da es beispielsweise Erweiterungskarten enthält, die keinen Betriebssystemtreiber haben, aber dennoch in der Hardwareliste enthalten sind. Da Upgrade-Optionen angezeigt werden, kann dies die Situation weiter verwirren.

Die BIOS-Liste kann nicht immer die richtigen Informationen anzeigen (der von Ihnen erwähnte "ungenaue, unvollständige oder einfach falsche" Haftungsausschluss), wie dies beispielsweise beim RAM der Fall ist. Abhängig von der Einrichtung und der Art der verfügbaren Fehlerkorrektur wird das BIOS dies nicht tun in der Lage sein, erweiterte Informationen wie Fehler zu erkennen. In einer idealen Welt sollte dies zu Informationen wie "Fehlerstatus: Nicht verfügbar" führen, aber (noch) nicht.

sarlacii
quelle
Ja, aber das lässt noch zwei Fragen offen. (1) Was kann dazu führen, dass installierter RAM nicht verwendet wird? RAM benötigt keinen Treiber. Eine Möglichkeit: Der RAM ist fehlerhaft. Vielleicht andere, ich weiß es nicht. (2) (eher eine Beobachtung als eine Frage) "Das BIOS kann keine erweiterten Informationen wie Fehler erkennen." Ein Teil des Systems weiß, dass 4 Module installiert sind (wie durch dmidecode belegt), und ein Teil des Systems weiß, dass nur 2 Module können verwendet werden (wie durch free () belegt und im BIOS angezeigt), da es ein Problem mit den anderen 2 gibt. Aber anscheinend gibt es keine Möglichkeit, diese Informationen abzurufen.
Roel Schroeven
Sie haben Recht mit (1) der RAM ist fehlerhaft. Das Erkennen, dass der Steckplatz verwendet wird, unterscheidet sich von der tatsächlichen Funktionsweise. Ich hatte RAM, das nicht richtig eingesetzt war, nachdem der Server an das Rechenzentrum geliefert wurde - zu viele Unebenheiten. Das System erkennt, dass der Steckplatz belegt ist, verwendet ihn jedoch nicht. Ich musste entfernen, neu setzen, und dann war es in Ordnung. Es kann auch ein elektronischer Fehler auftreten, der die Verwendung verhindert, jedoch keine Erkennung. Versuchen Sie, es zu entfernen und erneut einzusetzen, andernfalls entsorgen Sie es. Gut laufen!
Sarlacii