Comandi per gestire la memoria di Linux

Comandi per gestire la memoria di Linux
I sistemi UNIX/Linux contengono uno strumento di riga di comando per quasi tutto. Ciò include anche programmi per gestire la memoria. In questo articolo ti mostriamo una selezione di comandi che sono abbastanza utili per te come utente Linux.

Rileva l'hardware utilizzando DMIDECODE

Il rilevamento di hardware automatico è sempre stato un po 'come una lotteria, ma negli ultimi anni è migliorato negli ultimi anni in quanto molti produttori documentano i loro prodotti in modo più dettagliato e hanno informazioni specifiche disponibili anche online. Per scoprire le informazioni hardware relative alla RAM installata nella macchina, utilizzare il dmidecode Comando (pacchetto per Debian GNU/Linux, Ubuntu e Linux Mint: DmIdeCode).

Tra le altre informazioni, questo strumento riporta dati dettagliati sui componenti del sistema installati come il processore, il battiscopa e la RAM. Le informazioni si basano sull'interfaccia di gestione desktop (DMI) [1], che è un framework che classifica i singoli componenti su un desktop, un notebook o un server astrattando questi componenti dal software che li gestisce [2]. L'opzione --digitare la memoria si riferisce ai dispositivi di memoria. Per altre lezioni DMI dai un'occhiata alla pagina manuale di dmidecode.

# dmidecode -Titype Memory
# DMIDECODE 2.12
Smbios 2.7 presente.
Gestire 0x0007, DMI Tipo 16, 23 byte
Array di memoria fisica
Posizione: scheda di sistema o scheda madre
Usa: memoria di sistema
Tipo di correzione dell'errore: nessuno
Capacità massima: 16 GB
Gestione delle informazioni di errore: non fornito
Numero di dispositivi: 1
Gestire 0x0008, DMI Tipo 17, 34 byte
Dispositivo di memoria
MANORE ARRAY: 0x0007
Gestione delle informazioni di errore: non fornito
Larghezza totale: 64 bit
Larghezza dei dati: 64 bit
Dimensione: 8192 MB
Fattore di forma: SODIMM
Set: nessuno
Localizzatore: Channela-Dimm0
Localizzatore bancario: banca 0
Tipo: DDR3
Dettaglio del tipo: sincrono
Velocità: 1600 MHz
Produttore: Samsung
Numero di serie: 25252105
Tag di risorsa: nessuno
Numero parte: M471B1G73DB0-YK0
Rango: sconosciuto
Velocità di clock configurata: 1600 MHz

Questa macchina è attualmente dotata di RAM DDR3 8G con una velocità di clock configurata di 1600 MHz. Come puoi vedere, la capacità massima disponibile della RAM a bordo è 16G, il che significa che può essere estesa da un secondo modulo da 8G.

Informazioni grafiche sulla memoria

Nel caso in cui si preferisca un'interfaccia grafica per recuperare queste informazioni, gli strumenti hardinfo [3] e hardware Lister (versione GTK+) [4] potrebbero essere di interesse per te. Su Debian GNU/Linux, Ubuntu e Linux Mint questi programmi sono disponibili tramite i pacchetti Hardinfo e LSHW-GTK. La Figura 2 mostra l'interfaccia utente di HardInfo che visualizza le informazioni sulla memoria su un'installazione Xubuntu.

Quanta memoria è attualmente disponibile

A volte, meno è di più. Sulla linea di comando le informazioni relative alla memoria sono disponibili tramite il gratuito comando. Su Debian GNU/Linux, Ubuntu e Linux Mint questo programma fa parte del pacchetto Procps [5]. La Figura 2 mostra l'uscita in una finestra del terminale.

Come selezione delle ulteriori opzioni, gratuito Accetta vari parametri come:

  • -B (-Bytetes): Mostra l'output come byte
  • -K (-Kilo): Mostra l'output come kilobyte
  • -m (--mega): Mostra l'output come megabyte
  • -g (--giga): Mostra l'output come gigabytes
  • --Tera: Mostra l'output come terabytes
  • -H (--Human): Mostra l'output in formato leggibile dall'uomo

Nella Figura 3 l'uscita è mostrata in megabyte usando l'opzione -m. Il sistema ha 4G di RAM mentre 725 m sono attualmente in uso.

Informazioni sulla memoria dal punto di vista del kernel Linux

Gli strumenti sopra menzionati si basano su informazioni grezze conservate nel filesystem proc del kernel Linux. Per mostrare questi dettagli, output il contenuto del file /Proc/Meminfo usando il gatto utilità in un terminale:

$ Cat /Proc /Meminfo
Memtotal: 7888704 KB
Memfree: 302852 KB
Memavalibile: 448824 KB
Buffer: 17828 KB
Cached: 326104 KB
Swapcached: 69592 KB
Attivo: 2497184 KB
Inattivo: 650912 KB
Active (ANON): 2338748 KB
Inattivo (Anon): 525316 KB
Active (File): 158436 KB
Inattivo (file): 125596 KB
Inevitabile: 64 kb
Mlocato: 64 kb
Swaptatal: 16150524 KB
SWAPFREE: 15668480 KB
Sporco: 3008 kb
Writeback: 0 kb
AnonPages: 2774656 KB
Mappato: 4414752 KB
Shmem: 59900 KB
Slaba: 130216 KB
SRECLIOMABLE: 61748 KB
SunReclaim: 68468 KB
Kernelstack: 7328 KB
Pagetables: 42844 KB
Nfs_unstable: 0 kb
Rimbalzo: 0 kb
Writebacktmp: 0 kb
Commitlimit: 20094876 KB
Commit_as: 10344988 KB
Vmalloctotal: 34359738367 KB
VMALLOCUSED: 367296 KB
VMALLocChunk: 34359345768 KB
Hardwarecorupted: 0 kb
Anonhugepages: 0 kb
Enormepages_total: 0
Enormepages_free: 0
Enormepages_rsvd: 0
EnormiPages_Surp: 0
EnormiPageSize: 2048 KB
Directmap4k: 78448 KB
DirectMap2M: 2756608 KB
DirectMap1g: 5242880 KB
$

Per ulteriori informazioni statistiche sull'utilizzo, la memoria e i processi della CPU potresti dare un'occhiata agli strumenti vmstat, E iostat (Pacchetti Debian Procps e Sysstat).

Lavorare con i processi - PS, Htop e PSTREE

Per mostrare i processi attivi del sistema Linux utilizzare il ps comando. Di solito, l'output è ordinato in ordine alfabetico. Ma il ps Il comando può fare molto di più. Utilizzo delle opzioni AUX --ordina -rss L'output dell'elenco dei processi è ordinato dal loro utilizzo della memoria in un ordine dall'alto verso il basso. La Figura 4 mostra i processi che hanno la più alta domanda di memoria. L'output è ordinato dalla sesta colonna intitolata RSS che abbrevia la dimensione del set di residenti. Il valore è dato in kilobyte.

I comandi PS, pstree E htop sono strettamente correlati in termini di informazioni che questi strumenti vengono visualizzati. Entrambi pstree E htop Visualizza un grafico per visualizzare le dipendenze del processo. htop funge da versione interattiva che ti consente di scorrere l'elenco dei processi su e giù. La Figura 5 mostra htop Su un sistema desktop con una selezione di processi ordinati per uso specifico della memoria (5a colonna).

Trovare processi che usano la memoria di swap

Più processi vengono lanciati, più memoria è in uso contemporaneamente. Non appena il sistema Linux si esaurisce da pagine di memoria inutilizzate, il kernel Linux decide di scambiare pagine di memoria sul disco utilizzando il metodo LRU (. Per rispondere alla domanda, quali processi usano la memoria di scambio e quanto viene utilizzato in particolare, è possibile dare un'occhiata all'output del programma superiore. Nel 2016, Erik Ljungstrom ha pubblicato una breve descrizione di come recuperare tali informazioni ed estendere questa colonna all'output della parte superiore [6]. La Figura 6 mostra questo output su un sistema che ha molte pagine di memoria in RAM a sinistra e non utilizza lo swap, attualmente.

Inoltre, nel 2011 ha già pubblicato uno script bash che valuta le informazioni dal file system proc per visualizzare l'utilizzo del processo di swap per processo [7]. Anche 7 anni dopo e già descritto come obsoleto, lo script è ancora eccellente e mostra come automatizzare le attività su un sistema Linux. Ecco perché siamo certi che sia utile mostrarlo qui ancora una volta.

L'output dello script è il seguente (esegui come radice utente il recupero dei dati completi):

# ./scambio.sh
PID = 1 - scambio usato: 0 - (SystemD)
PID = 2 - scambio usato: 0 - (KThredd)
PID = 3 - scambio usato: 0 - (ksoftirqd/0)
PID = 5 - scambio usato: 0 - (kworker/0: 0h)
PID = 6 - scambio usato: 0 - (kworker/u16: 0)
PID = 7 - scambio usato: 0 - (RCU_SCHED)
PID = 8 - scambio usato: 0 - (rcu_bh)
PID = 9 - scambio usato: 0 - (migrazione/0)
PID = 10 - scambio usato: 0 - (watchdog/0)
PID = 11 - scambio usato: 0 - (watchdog/1)
PID = 12 - scambio usato: 0 - (migrazione/1)
PID = 13 - scambio usato: 0 - (ksoftirqd/1)
PID = 15 - scambio usato: 0 - (kworker/1: 0h)
PID = 16 - scambio usato: 0 - (watchdog/2)
PID = 17 - scambio usato: 0 - (migrazione/2)
PID = 18 - scambio usato: 0 - (ksoftirqd/2)
PID = 20 - scambio usato: 0 - (kworker/2: 0h)
..
#

Conclusione

La cassetta degli attrezzi Linux contiene un elenco infinito di programmi disponibili per aiutarti ad analizzare l'utilizzo della memoria del tuo sistema Linux. Abbiamo appena avuto un breve sguardo - dai dati grezzi alle informazioni preelaborate - tutto è lì. Conosci solo i tuoi strumenti. Per familiarizzare con loro, prenditi un po 'di tempo e gioca con loro.

Questa è la parte 2 della serie sulla gestione della memoria del kernel di Linux. La parte 1 discute la memoria di swap, nella terza parte di questa serie discuteremo di come ottimizzare l'uso della memoria. Ciò includerà la gestione dei Ramdisks e i file di swap compressi.

Collegamenti e riferimenti

  • [1] DMI alla Task Force di gestione distribuita (DMTF)
  • [2] DMI a Wikipedia
  • [3] hardinfo
  • [4] LSHW-GTK (pacchetto Debian per allungamento)
  • [5] Procps (pacchetto Debian per allungamento)
  • [6] Erik Ljungstrom: scopri cosa sta usando il tuo scambio
  • [7] Erik Ljungstrom: Swap Usage - 5 anni dopo

Serie di gestione della memoria Linux

  • Parte 1: Gestione della memoria del kernel Linux: spazio di scambio
  • Parte 2: comandi per gestire la memoria di Linux
  • Parte 3: ottimizzazione dell'utilizzo della memoria Linux

Riconoscimenti

L'autore desidera ringraziare Mandy Neumeyer e Gerold Rupprecht per il loro supporto mentre prepara questo articolo.