Comprendi facilmente l'utilizzo della RAM di Linux con Smem

0
76
fatmawati achmad zaenuri/Shutterstock

L'utilizzo della memoria di Linux può essere difficile da interpretare e da capire. Con smem è facile scoprire quale memoria sta utilizzando un processo e quali processi stanno utilizzando di più.

Utilizzo della memoria

Linux ti offre molti modi per controllare cosa sta succedendo con la RAM del tuo computer. Il problema è che la gestione della memoria è una sfida complicata per il tuo sistema operativo. Deve destreggiarsi tra RAM fisica, RAM virtuale sotto forma di spazio di scambio e le richieste dei diversi tipi di processi in esecuzione in qualsiasi momento.

RELATEDDi quanta RAM ha bisogno il tuo computer per i giochi per PC?

I processi consumano RAM mentre si caricano in memoria. Quindi richiedono più RAM in modo da avere spazio per eseguire qualsiasi attività per cui sono progettati. Alcuni processi hanno un impatto minimo sulla RAM, altri richiedono molta memoria.

Il kernel e il resto del sistema operativo, il tuo ambiente desktop e ogni applicazione o sessione della riga di comando che esegui chiedono a gran voce una parte della quantità finita di RAM installata nel tuo computer. Alcuni processi generano altri processi. Alcuni processi condividono la RAM con altri processi.

RELATED Come controllare l'utilizzo della memoria dal terminale Linux

Cercando di decifrare tutto questo e di trovare una risposta semplice alla domanda “Quanta RAM utilizza questo programma o processo?” può essere una sfida sorprendente. La granularità è ottima e ha il suo posto ma, allo stesso modo, l'eccesso di informazioni può essere un impedimento.

Pubblicità

Ad esempio, l'utilizzo di cat per sbirciare nello pseudo filesystem /proc/meminfo ha restituito 50 righe di output su la macchina usata per ricercare questo articolo. Da dove inizi?

cat /proc/meminfo

E alcune utility Linux danno risposte diverse. Sulla nostra macchina di prova, avevamo un'istanza di meno esecuzione, che aveva un ID processo di 2183.

Possiamo usare l'utilità pmap con l'opzione -x (estesa) per avere un quadro completo dell'utilizzo della memoria di un processo. Lo useremo con l'ID di processo della nostra istanza di less:

pmap -x 2183

In fondo all'output, otteniamo un totale per Resident Set Size, che è la quantità di RAM principale utilizzata.

Abbiamo quindi utilizzato l'utilità ps con l'opzione -o (output), selezionato la colonna RSS e l'abbiamo passata ID processo della stessa istanza di less:

ps -o rss 2183

Otteniamo un risultato diverso. Questa è una decisione progettuale da parte degli autori di ps. Questo è dalla pagina man di ps:

I campi SIZE e RSS non contano alcune parti di un processo incluse le tabelle delle pagine, lo stack del kernel, struct thread_info e struct task_struct. Di solito si tratta di almeno 20 KiB di memoria che è sempre residente. SIZE è la dimensione virtuale del processo (codice+dati+stack). Pubblicità

Gli autori di altre utility hanno le proprie opinioni su come misurare l'utilizzo della RAM.

L'RSS, l'USS e il PSS< /h2>

La dimensione del set residente (RSS) è la quantità di RAM allocata a un processo, escluso lo spazio di scambio, ma inclusa la RAM richiesta dalle librerie condivise utilizzate dal processo.

RELATEDPerché è positivo che la RAM del computer sia piena

RSS quasi sempre segnala in modo eccessivo l'utilizzo della RAM. Se due o più processi utilizzano una o più librerie condivise, RSS aggiungerà semplicemente l'utilizzo della RAM di ciascuna libreria al conteggio dell'utilizzo della RAM per ciascuno di questi processi. Oltre all'inesattezza, c'è una certa ironia in questo. Le librerie condivise significano che ogni processo non ha bisogno di caricare la propria istanza privata di una libreria. Se la libreria è già in memoria, la condividerà e ridurrà il sovraccarico della RAM.

Il Proportional Set Size cerca di risolvere questo problema dividendo la quantità di memoria condivisa tra i processi che la condividono. Se sono presenti quattro processi che condividono una parte della memoria, PSS segnala che il 25% della RAM condivisa viene utilizzato da ciascuno di questi processi. Questa è un'approssimazione, ma assomiglia più a ciò che sta succedendo rispetto all'immagine che RSS dipinge.

La dimensione del set univoco è la quantità di RAM che viene utilizzata esclusivamente da un processo, indipendentemente dal fatto che venga consumata direttamente dal processo o utilizzata dalle librerie utilizzate esclusivamente dal processo. Ancora una volta, ignora lo spazio di scambio. È interessato solo alla RAM fisica genuina.

USS e PSS sono termini e concetti proposti da Matt Mackall, l'autore di smem.

L'utility smem

L'utility smem riporta la memoria utilizzata da processi, utenti, mappatura oa livello di sistema. Su tutte le distribuzioni che abbiamo testato, è richiesta l'installazione. Per installarlo su Ubuntu, usa questo comando:

sudo apt install smem

Per installare smem su Fedora devi digitare:

sudo dnf install smem

Per installare smem su Manjaro usa:

sudo pacman -Sy smem

Pubblicità

L'utilizzo di smem senza opzioni ti dà un elenco di i processi che utilizzano la RAM.

smem

Nella finestra del terminale viene visualizzata una tabella di informazioni.

Le colonne sono:

  • PID : l'ID del processo che sta utilizzando la memoria.
  • Utente: il nome utente dell'utente proprietario del processo.
  • Comando: la riga di comando che ha avviato il processo.
  • Scambia: quanto spazio di scambio sta utilizzando il processo.
  • USS: la dimensione unica del set.
  • PSS: il set proporzionale Taglia.
  • RSS: la dimensione del set residente.

Per vedere le taglie espresse come percentuali, usa l'opzione -p (percentuale) .

smem -p

Le dimensioni in byte sono state sostituite con percentuali.

Per vedere le figure rese in una forma più umana, usa -k ( abbreviare) opzione. Questo riduce le cifre e aggiunge indicatori di unità.

smem -k

Invece dei byte grezzi, le dimensioni sono mostrate in megabyte, gigabyte e così via.

Pubblicità

Per aggiungere una riga di totali, utilizzare l'opzione -t (totali).

smem -k -t

L'ultima riga dell'output mostra i totali per ciascuna colonna.

Perfezionamento del rapporto

Puoi chiedere a smem di segnalare l'utilizzo della memoria da parte degli utenti, la mappatura (librerie) o l'intero sistema. Per filtrare l'output in base all'utente, utilizzare l'opzione -u (utente). Nota che se vuoi vedere qualcosa di più del tuo utilizzo, devi eseguire smem con sudo .

smem -u sudo smem -u

Come puoi vedere, l'output viene deformato per nomi utente più lunghi di otto caratteri.

Per vedere l'utilizzo mappato alle librerie che sono in uso, indipendentemente da quali processi stanno usando le librerie, né da quali utenti possiedono quei processi, usa l'opzione -m (mappatura).

smem -m -k -t

Abbiamo anche chiesto valori leggibili dall'uomo e un totale.

Per vedere l'utilizzo della memoria a livello di sistema, utilizzare l'opzione -w (a livello di sistema).

smem -w -k -t

Reporting su un singolo programma

Con un po' di magia da riga di comando, possiamo creare report su un singolo programma e tutti i suoi sottoprocessi. Convogliamo l'output da smem a tail e chiediamo a tail di mostrare solo l'ultima riga. Diremo alle PMI di utilizzare valori leggibili dall'uomo e di fornire un totale. Il totale sarà l'ultima riga e questa sarà la coda della riga per noi.

Pubblicità

Useremo l'opzione -c (colonne) con smem e gli diremo quali colonne vogliamo includere nel nostro output. Lo limiteremo alla colonna Dimensioni set proporzionali. L'opzione -P (filtro di processo) ci consente di fornire una stringa di ricerca a smem . Verranno incluse solo le righe di output corrispondenti.

smem -c pss -P firefox -k -t | tail -n 1

Questo è un modo semplice e veloce per trovare il consumo di RAM di un programma e dei suoi processi figlio.

Generazione di grafici

Puoi passare le opzioni –pie o –bar per fare in modo che smem generi grafici. Va detto che con troppe categorie i grafici diventano rapidamente incomprensibili, ma possono essere utili per una rapida panoramica visiva.

Il formato del comando è:

smem –pie name -s uss

Il grafico a torta viene visualizzato nella propria finestra del visualizzatore.

Per vedere altri grafici, usa pss o rss invece di uss. Per vedere un grafico a barre, usa –bar invece di –pie.

Pubblicità

Affinché funzioni, devi avere installato Python, insieme alla libreria matplotlib. Questi erano già installati sulle distribuzioni Ubuntu, Fedora e Manjaro che abbiamo testato.

Le cose buone arrivano in piccoli pacchetti

Lo smem utility ha qualche asso nella manica e sei incoraggiato a dare un'occhiata alla sua pagina man. Il suo repertorio principale è quello che abbiamo delineato qui ed è un piccolo grande strumento da avere nella cassetta degli strumenti della CLI.

RELAZIONATO: 37 Importante Comandi Linux che dovresti conoscere

LEGGI SUCCESSIVO

  • › Smetti di spegnere il tuo PC Windows
  • › Come pulire la porta di ricarica del tuo iPhone
  • › Ricordando VRML: il metaverso del 1995
  • › Cosa fa “BB” Significa, e come lo uso?
  • › Come aggiungere più porte Ethernet al router
  • › 6 suggerimenti per creare grafici Microsoft Excel che si distinguono