Memoria

Comandi per gestire la memoria di Linux

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

Rileva l'hardware usando dmidecode

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

Tra le altre informazioni, questo strumento riporta dati dettagliati sui componenti di sistema installati come processore, scheda di base e RAM. Le informazioni si basano sulla Desktop Management Interface (DMI) [1], che è un framework che classifica i singoli componenti su un desktop, notebook o server astraendo questi componenti dal software che li gestisce [2]. L'opzione --tipo di memoria si riferisce ai dispositivi di memoria. Per altre classi DMI dai un'occhiata alla pagina di manuale di dmidecode.

# dmidecode --type memory
# dmidecode 2.12
SMBIOS 2.7 presente.
Gestire 0x0007, tipo DMI 16, 23 byte
Array di memoria fisica
Posizione: scheda di sistema o scheda madre
Utilizzo: memoria di sistema
Tipo di correzione degli errori: nessuno
Capacità massima: 16 GB
Gestione delle informazioni sull'errore: non fornita Provide
Numero di dispositivi: 1
Gestire 0x0008, tipo DMI 17, 34 byte
Dispositivo di memoria
Maniglia matrice: 0x0007
Gestione delle informazioni sull'errore: non fornita Provide
Larghezza totale: 64 bit
Larghezza dati: 64 bit
Dimensione: 8192 MB
Fattore di forma: SODIMM
Imposta: Nessuno
Localizzatore: CanaleA-DIMM0
Localizzatore banca: BANCA 0
Tipo: DDR3
Tipo di dettaglio: sincrono
Velocità: 1600 MHz
Produttore: Samsung
Numero di serie: 25252105
Etichetta risorsa: nessuna
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 di bordo è 16G, il che significa che può essere estesa con un secondo modulo 8G.

Informazioni grafiche sulla memoria

Nel caso tu preferisca un'interfaccia grafica per recuperare queste informazioni gli strumenti Hardinfo [3] e Hardware Lister (versione GTK+) [4] potrebbero interessarti. 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 mostra le informazioni sulla memoria su un'installazione di Xubuntu.

Quanta memoria è attualmente disponibile

A volte, less is more. Sulla riga di comando le informazioni relative alla memoria sono disponibili tramite il tasto gratuito comando. Su Debian GNU/Linux, Ubuntu e Linux Mint questo programma fa parte del pacchetto procps [5]. La Figura 2 mostra l'output in una finestra di terminale.

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

In figura 3 l'output è mostrato in megabyte utilizzando l'opzione -m. Il sistema ha 4G di RAM mentre 725M 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 Linux. Per mostrare questi dettagli emettere il contenuto del file /proc/meminfo usando il gatto utilità in un terminale:

$ cat /proc/meminfo
MemTotale: 7888704 kB
MemFree: 302852 kB
MemDisponibile: 448824 kB
Buffer: 17828 kB
Memorizzato nella cache: 326104 kB
Scambia nella cache: 69592 kB
Attivo: 2497184 kB
Inattivo: 650912 kB
Attivo (anon): 2338748 kB
Inattivo (anon): 525316 kB
Attivo (file): 158436 kB
Inattivo (file): 125596 kB
Inevitabile: 64 kB
Bloccato: 64 kB
SwapTotale: 16150524 kB
SwapFree: 15668480 kB
Sporco: 3008 kB
Riscrittura: 0 kB
AnonPages: 2774656 kB
Mappato: 4414752 kB
Shmem: 59900 kB
Lastra: 130216 kB
SRivendibile: 61748 kB
Sunreclaim: 68468 kB
Stack di kernel: 7328 kB
Tabelle di pagina: 42844 kB
NFS_Unstable: 0 kB
Rimbalzo: 0 kB
WritebackTmp: 0 kB
Limite di impegno: 20094876 kB
Impegnato_AS: 10344988 kB
VmallocTotale: 34359738367 kB
VmallocUsato: 367296 kB
VmallocChunk: 34359345768 kB
Hardware danneggiato: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Dimensioni enormi: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

Per ulteriori informazioni statistiche sull'utilizzo della CPU, sulla memoria e sui processi, puoi 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 tuo sistema Linux usa il ps comando. Di solito, l'output è ordinato in ordine alfabetico. Ma il ps il comando può fare molto di più. Usando le opzioni aux --sort -rss l'output dell'elenco dei processi è ordinato in base all'utilizzo della memoria in ordine dall'alto verso il basso. La Figura 4 mostra i processi che hanno la più alta richiesta di memoria. L'output è ordinato in base alla sesta colonna intitolata RSS che abbrevia la dimensione del set residente. Il valore è dato in kilobyte.

I comandi ps, pstree e htop sono strettamente correlati in termini di informazioni visualizzate da questi strumenti. Tutti e due pstree e htop visualizzare un grafico per visualizzare le dipendenze del processo. htop agisce come una versione interattiva che 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 in base al loro specifico utilizzo della memoria (5a colonna).

Trovare processi che utilizzano memoria di swap

Più processi vengono avviati, più memoria viene utilizzata contemporaneamente. Non appena il sistema Linux esaurisce le pagine di memoria inutilizzate, il kernel Linux decide di scambiare le pagine di memoria sul disco utilizzando il metodo LRU (Meno utilizzo recente. Per rispondere alla domanda, quali processi utilizzano la memoria di scambio e quanta ne viene utilizzata in particolare, puoi dare un'occhiata all'output del programma principale. Nel 2016, Erik Ljungstrom ha pubblicato una breve descrizione di come recuperare tali informazioni ed estendere questa colonna all'output di top [6]. La Figura 6 mostra questo output su un sistema che ha molte pagine di memoria nella RAM rimaste e non usa 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 scambio per processo [7]. Anche 7 anni dopo e già descritto come obsoleto, lo script è ancora ottimo 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 recuperare i dati completi):

# ./scambiare.sh
PID=1 - Scambio utilizzato: 0 - (systemd )
PID=2 - Swap utilizzato: 0 - (kthreadd )
PID=3 - Scambio utilizzato: 0 - (ksoftirqd/0 )
PID=5 - Scambio utilizzato: 0 - (kworker/0:0H )
PID=6 - Scambio utilizzato: 0 - (kworker/u16:0 )
PID=7 - Swap utilizzato: 0 - (rcu_sched )
PID=8 - Scambio utilizzato: 0 - (rcu_bh )
PID=9 - Swap utilizzato: 0 - (migrazione/0 )
PID=10 - Swap utilizzato: 0 - (watchdog/0 )
PID=11 - Swap utilizzato: 0 - (watchdog/1 )
PID=12 - Swap utilizzato: 0 - (migrazione/1 )
PID=13 - Scambio utilizzato: 0 - (ksoftirqd/1 )
PID=15 - Scambio utilizzato: 0 - (kworker/1:0H )
PID=16 - Swap utilizzato: 0 - (watchdog/2 )
PID=17 - Swap utilizzato: 0 - (migrazione/2 )
PID=18 - Scambio utilizzato: 0 - (ksoftirqd/2 )
PID=20 - Scambio utilizzato: 0 - (kworker/2:0H )

#

Conclusione

La casella degli strumenti di Linux contiene un elenco infinito di programmi disponibili per aiutarti ad analizzare l'utilizzo della memoria del tuo sistema Linux. Abbiamo appena dato una breve occhiata - dai dati grezzi alle informazioni preelaborate - c'è tutto. Basta conoscere i tuoi strumenti. Per familiarizzare con loro prenditi un po' di tempo e gioca con loro.

Questa è la seconda parte della serie sulla gestione della memoria del kernel Linux.  La prima parte tratta di Swap Memory, nella terza parte di questa serie parleremo di come ottimizzare l'utilizzo della memoria. Ciò includerà la gestione dei ramdisk e dei file di scambio compressi.

Link e riferimenti

Serie Linux per la gestione della memoria

Ringraziamenti

L'autore desidera ringraziare Mandy Neumeyer e Gerold Rupprecht per il loro supporto durante la preparazione di questo articolo.

Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...