Il decodificatore di tabelle DMI è uno strumento da riga di comando per i sistemi Linux. Viene comunemente utilizzato per tradurre la tabella DMI di una macchina (System Management BIOS o SMBIOS) in un formato leggibile dall'uomo. Questo strumento consente di visualizzare informazioni aggiuntive sulla configurazione hardware di un sistema e fornisce anche informazioni non direttamente correlate alla build corrente. È possibile trovare informazioni come la quantità massima di memoria supportata o il tipo di CPU più veloce supportato utilizzando alcuni indicatori chiave.
Applicazione pratica
Da un punto di vista pratico, potresti imbatterti in situazioni in cui è necessario un numero di serie o un'informazione hardware chiave durante la risoluzione dei problemi. Ai miei tempi come ingegnere dello storage, mi sono imbattuto in più istanze in cui un cliente acquistava un server di edizione virtuale e poi provava a eseguire enormi quantità di backup dei dati o replica su questa macchina. A seconda delle dimensioni dei lavori, a volte sovraccaricano la memoria inclusa e superano lo spazio di scambio. A sua volta, questo problema farebbe sì che Killer Out-of-Memory (OOM) abbia una giornata campale con il sistema. Quindi, invece di cercare le specifiche hardware in un manuale, potrei usare dmidecode
per afferrare queste informazioni.
Il guasto
Prima di tutto, tutte le seguenti informazioni possono essere trovate nelle pagine man dello strumento eseguendo man dmidecode
. Sentiti libero di seguirlo. Al livello più elementare, ogni record ha uno dei seguenti (come elencato nella pagina man):
Handle - Si tratta di un identificatore univoco, che consente ai record di fare riferimento a vicenda. Ad esempio, i record del processore di solito fanno riferimento a record di memoria cache utilizzando i relativi handle.
Tipo - La specifica SMBIOS definisce diversi tipi di elementi di cui un computer può essere composto. Ad esempio, il tipo 2 si riferisce a "Informazioni sulla scheda di base".
Size - Ogni record ha un'intestazione di 4 byte (2 per l'handle, 1 per il tipo, 1 per la dimensione), il resto viene utilizzato dai dati del record. Questo valore non tiene conto delle stringhe di testo (queste sono poste alla fine del record), quindi la lunghezza effettiva di un record può essere (ed è spesso) maggiore del valore visualizzato
Valore decodificato - Le informazioni presentate ovviamente dipendono dal tipo di record. Qui impariamo il produttore, il modello, la versione e il numero di serie della scheda.
Puoi vedere un elenco di esempio qui:
Ci sono molte opzioni che possono essere utilizzate per creare un output più preciso. Non li tratterò tutti qui, ma sono presentati chiaramente utilizzando la pagina man. Quello di cui parlerò sono i codici di tipo DMI inclusi nel comando per rendere rapidamente accessibili informazioni specifiche. Tornando al mio esempio precedente, ricorderai che di routine abbiamo avuto problemi con gli errori OOM. Per raccogliere informazioni sulla configurazione della memoria di un sistema, puoi utilizzare il seguente comando:
$ dmidecode -t x
dove x
è uguale al codice di tipo numerico che desideri raccogliere. Per questo esempio, i codici 5, 6, 16 e 17 sarebbero tutti utili da raccogliere. Vedi il grafico completo della pagina man di seguito per tutti i codici di tipo disponibili:
Scorciatoie
Le parole chiave possono essere utilizzate con il --type
flag per inserire tutti i codici di tipo associati nel comando. Dall'esempio seguente, puoi vedere che tutte le informazioni associate all'utilizzo dei codici di tipo numerico 16 e 17 sono fornite:
$ dmidecode --type memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Handle 0x0003, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 32 GB
Error Information Handle: Not Provided
Number Of Devices: 2
Handle 0x0004, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: SODIMM
Set: None
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2133 MT/s
Manufacturer: Samsung
Serial Number: 00000000
Asset Tag: None
Part Number: M471A1K43BB1-CRC
Rank: 1
Configured Memory Speed: 2133 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Handle 0x0005, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: SODIMM
Set: None
Locator: ChannelB-DIMM0
Bank Locator: BANK 2
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2133 MT/s
Manufacturer: SK Hynix
Serial Number: 2A7E0BA5
Asset Tag: None
Part Number: HMA81GS6AFR8N-UH
Rank: 1
Configured Memory Speed: 2133 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Puoi vedere qui le informazioni associate all'utilizzo dei codici tipo 5, 6, 16 e 17.
Concludi
Spero che questo rapido riassunto dello strumento DMI Decoder sia stato utile. Facci sapere quando hai usato questo comando o ne hai avuto bisogno. Si spera che ora tu abbia una strategia o un punto di riferimento migliore per il prossimo problema hardware in cui ti imbatti.
[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]