in

Come controllare l’utilizzo della memoria dal terminale Linux

Ci sono un sacco di modi per ottenere il basso sull’utilizzo della memoria all’interno del sistema Linux. In questo roundup, tratteremo i metodi della riga di comando più comunemente utilizzati: free, vmstatE top. Vedremo anche la lettura /proc/meminfo Direttamente.

Come Linux utilizza la RAM

LA RAM è una risorsa limitata che tutti i processi, come applicazioni e daemons, vogliono un pezzo di. C’è solo così tanto di esso disponibile. Il kernel arbitra i litigi di memoria e assegna la memoria razionata a tutti i processi affamati. È un po’ come un uccello madre con più becchi aperti puntati su di lei di quanto lei abbia il grub per.

La RAM inutilizzata viene sprecata RAM. Linux utilizza qualsiasi RAM di riserva per cose come lo spazio del buffer del file, per mantenere il computer in esecuzione a prestazioni ottimali. E ‘facile avere l’impressione che la RAM del sistema è stato utilizzato da qualche processo in fuga o perdita di memoria, ma questo è raramente il caso.

Di solito è solo il kernel tenacemente facendo il suo lavoro in background. Se ci sono altre richieste per la RAM che il kernel ha braccato per i propri dispositivi, rinuncia alla memoria istantaneamente, quindi non c’è alcun danno fatto.

Se il kernel decide che è più efficiente iniziare a utilizzare lo spazio di swap, lo mette in gioco anche. C’è molta confusione swappiness linux e quando il kernel inizierà a utilizzare swap. Non è vero che il swappiness imposta una soglia per l’utilizzo della RAM che attiva l’abilitazione dello scambio.

Ma ora, diamo un’occhiata alle diverse tecniche che è possibile utilizzare nella finestra del terminale per vedere l’utilizzo della RAM sul computer Linux.

Il comando gratuito

Le comando libero fornisce una tabella della RAM totale, utilizzata, gratuita, condivisa, buffer/cache e disponibile sul computer. Mostra anche la quantità totale di spazio di swap configurato e quanto viene utilizzato e disponibile.

Nel nostro esempio, useremo il -m (mebibyte). Tuttavia, è anche possibile utilizzare -b (byte), -k (kibibyte) o -g (gibibyte).

Digitiamo il seguente comando:

free -m

Le

Questo è l’output che otteniamo:

      total used free shared buff/cache available
Mem:   1987  901   95     80        990       811
Swap: 1521   651  869

Le Mem contiene le seguenti informazioni:

  • Totale: la quantità totale di RAM fisica del computer.
  • Utilizzato: la somma di Free-Buffers-Cache sottratta dalla quantità totale.
  • Gratuito: la quantità di memoria inutilizzata.
  • condiviso: Quantità di memoria utilizzata dal tmpfs dei file system.
  • Buff/cache: quantità di memoria utilizzata per i buffer e la cache. Questo può essere rilasciato rapidamente dal kernel, se necessario.
  • Disponibile: si tratta di una stima della memoria disponibile per soddisfare le richieste di memoria provenienti dalle applicazioni e da qualsiasi altro software operativo nel computer.

Le Swap contiene le seguenti informazioni:

  • Totale: la dimensione della partizione o del file di scambio.
  • Utilizzato: la quantità di spazio di scambio in uso.
  • Gratuito: la quantità di spazio di swap rimanente (inutilizzato).

È inoltre possibile utilizzare il seguente trucco nifty abbiamo ottimizzato da uno dei nostri lettori per vedere la percentuale di spazio di swap che viene utilizzato:

free -m | grep Swap | awk '{print ($3/$2)*100}'

Le

Correlati: Come utilizzare il comando gratuito su Linux

Il comando vmstat

È impossibile avere una buona comprensione del modo in cui la RAM viene utilizzata nella tua casella Linux senza un apprezzamento dello stato del tuo spazio di swap. RAM e swap space lavorano a stretto contatto.

È possibile utilizzare il vmstat per approfondire l’utilizzo dello spazio di scambio (o della memoria virtuale). Ti dà una relazione su una varietà di statistiche relative allo swap in base ai valori medi dall’ultimo riavvio.

Digitare quanto segue:

vmstat

Le

Questo è l’output senza il wrapping-around:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b    swpd    free  buff   cache   si  so    bi   bo    in   cs  us sy id wa st
3 0  671488  576084  51088  823876   1   7    53   62    99   14   4  1 95  0  0

Ci sono molti punti dati in quel rapporto, quindi li scomporremo:

  • Proc:
    • R: numero di processi “eseguibili”. Sono in esecuzione o in attesa per il loro prossimo burst time-sliced di cicli della CPU.
    • B: il numero di processi in modalità di sospensione ininterrotta. Questi non dormono, ma eseguono una chiamata di sistema di blocco. Non possono essere interrotti fino a quando non completano l’azione corrente. In genere, questo processo è un driver di dispositivo in attesa che una risorsa sia libera. Tutti gli interrupt in coda per tale processo vengono gestiti quando il processo riprende l’attività abituale.
  • Memoria:
    • swpd: la quantità di memoria virtuale utilizzata, ovvero la quantità di memoria scambiata.
    • Gratuito: la quantità di memoria inattiva (inutilizzata).
    • Buff: la quantità di memoria utilizzata come buffer.
    • Cache: la quantità di memoria utilizzata come cache.
  • Swap:
    • si: la quantità di memoria virtuale scambiata dallo spazio di scambio.
    • Così: la quantità di memoria virtuale scambiata per scambiare spazio.
  • IO:
    • Bi: blocchi in. Il numero di blocchi di dati utilizzati per scambiare la memoria virtuale alla RAM.
    • Bo: si blocca. Il numero di blocchi di dati utilizzati per scambiare la memoria virtuale dalla RAM e nello spazio di swap.
  • Sistema:
    • Pollici: numero di interrupt al secondo, incluso l’orologio.
    • Cs: numero di cambi di contesto al secondo. Un cambio di contesto è quando il kernel si scambia dall’elaborazione in modalità utente a quella di sistema.
  • Cpu: Questi valori sono tutte le percentuali del tempo totale della CPU:
    • Noi: tempo impiegato per l’esecuzione del codice utente (non kernel).
    • Sy: tempo impiegato per l’esecuzione del codice kernel.
    • Id: tempo trascorso inattivo.
    • Wa: tempo trascorso in attesa di in- o uscita.
    • San: il tempo in cui una macchina virtuale deve attendere il completamento della manutenzione di altre macchine virtuali prima di poter tornare e partecipare a questa macchina virtuale.

Correlati: Come utilizzare il comando vmstat su Linux

Il comando superiore

Le top Comando visualizza uno schermo ricco di informazioni. I valori vengono aggiornati ogni pochi secondi.

Per utilizzarlo, digitiamo quanto segue:

top

Le

È stato premuto il tasto “e”. In questo modo la visualizzazione è stata modificata in megabyte, che sono più facili da analizzare visivamente rispetto alle stringhe lunghe che rappresentano i byte. Nella parte superiore dello schermo sono presenti cinque righe di informazioni e un riquadro inferiore con colonne di dati.

Ecco le informazioni che troverai su ogni riga:

  • Linea uno: Il tempo, per quanto tempo il computer è stato in esecuzione, quante persone sono connessi e quale media di carico è stata negli ultimi uno, cinque e 15 minuti.
  • Linea due: Il numero di attività e i relativi stati: in esecuzione, interrotto, in stato di sospensione o zombie.
  • Linea tre: Informazioni sulla CPU (vedere la ripartizione dei campi sottostanti).
  • Linea quattro: La quantità totale di memoria fisica e la quantità libera, utilizzata, memorizzata nel buffer o memorizzata nella cache.
  • Linea cinque: Quantità totale di memoria di swap e quantità di memoria libera, utilizzata e disponibile (tenendo conto della memoria che dovrebbe essere recuperabile dalle cache).

I campi della CPU nella riga tre sono i seguenti:

  • Noi: Tempo che la CPU impiega l’esecuzione di processi per gli utenti nello spazio utente.
  • Sy: Tempo impiegato dalla CPU per l’esecuzione di processi di “kernel space” di sistema.
  • Ni: Tempo impiegato dalla CPU per l’esecuzione di processi con un valore di utilizzo manuale.
  • Id: Tempo di inattività della CPU.
  • Wa: Tempo che la CPU trascorre in attesa del completamento di I/O.
  • Ciao: Tempo impiegato dalla CPU per la manutenzione degli interrupt hardware.
  • si: Tempo impiegato dalla CPU per la manutenzione degli interrupt software.
  • st (rubare il tempo): Tempo di perdita della CPU a causa dell’esecuzione di macchine virtuali.

Potrebbe essere necessario premere i tasti freccia sinistra o destra per visualizzare tutte le colonne. I valori in ogni colonna sono descritti di seguito:The values in each column are described below:

  • Pid: ID processo.
  • Utente: Nome del proprietario del processo.
  • Pr: Priorità del processo.
  • Ni: Il bel valore del processo.
  • Virt: Memoria virtuale utilizzata dal processo.
  • Res: Memoria residente utilizzata dal processo.
  • Shr: Memoria condivisa utilizzata dal processo.
  • S: Stato del processo. (Vedere l’elenco dei valori che questo campo può assumere di seguito).
  • %CPU: La quota di tempo CPU utilizzata dal processo dall’ultimo aggiornamento.
  • %MEM: La quota di memoria fisica utilizzata.
  • ORARIO: Tempo CPU totale utilizzato dall’attività in centesimi di secondo.
  • Comando: Il nome del comando o la riga (nome e opzioni). (Questa colonna è fuori schermo a destra nell’immagine sopra.)

Lo stato visualizzato nella S può essere uno dei seguenti:

  • D: Sonno ininterrotto.
  • R: corsa.
  • S: Dormire.
  • T: Tracciato (arrestato).
  • Z: Zombie.

Premere Q per uscire top.

Lettura /proc/meminfo

Molti (e, molto probabilmente, la maggior parte) degli strumenti di Linux che riportano le statistiche di memoria recuperare le informazioni dallo pseudo file system /proc/meminfo. Possiamo usare il cat O less comandi per fare lo stesso.

Digitiamo quanto segue:

less /proc/meminfo

Le

È possibile visualizzare campi diversi a seconda del kernel in esecuzione e dell’architettura della CPU. Abbiamo ottenuto i seguenti risultati sulla nostra macchina virtuale:

MemTotal:          2035260 kB
MemFree:            919064 kB
MemAvailable:      1300932 kB
Buffers:             33528 kB
Cached:             457604 kB
SwapCached:          29732 kB
Active:             313360 kB
Inactive:           603276 kB
Active(anon):        74648 kB
Inactive(anon):     355004 kB
Active(file):       238712 kB
Inactive(file):     248272 kB
Unevictable:            16 kB
Mlocked:                16 kB
SwapTotal:         1557568 kB
SwapFree:           873024 kB
Dirty:                  80 kB
Writeback:               0 kB
AnonPages:          414100 kB
Mapped:              97436 kB
Shmem:                4148 kB
KReclaimable:        52932 kB
Slab:                94216 kB
SReclaimable:        52932 kB
SUnreclaim:          41284 kB
KernelStack:          9280 kB
PageTables:          45264 kB
NFS_Unstable:            0 kB
Bounce:                  0 kB
WritebackTmp:            0 kB
CommitLimit:       2575196 kB
Committed_AS:      5072192 kB
VmallocTotal:  34359738367 kB
VmallocUsed:         35712 kB
VmallocChunk:            0 kB
Percpu:                720 kB
HardwareCorrupted:       0 kB
AnonHugePages:           0 kB
ShmemHugePages:          0 kB
ShmemPmdMapped:          0 kB
CmaTotal:                0 kB
CmaFree:                 0 kB
HugePages_Total:         0
HugePages_Free:          0
HugePages_Rsvd:          0
HugePages_Surp:          0
Hugepagesize:         2048 kB
Hugetlb:                 0 kB
DirectMap4k:        180160 kB
DirectMap2M:       1916928 kB

Tutte le taglie sono in kibibyte salvo diversamente indicato. Ecco cosa significano tutti, insieme ad altri si potrebbe vedere a seconda della configurazione del computer e l’hardware:

  • MemTotale: RAM totale utilizzabile (a parte alcuni bit riservati e il codice binario del kernel).
  • MemFree: La somma di LowFree+HighFree. La quantità di RAM attualmente disponibile.
  • MemDisponibile: Memoria stimata disponibile per avviare nuove applicazioni, senza scambiare.
  • Buffer: Archiviazione temporanea per i blocchi del disco non elaborati. Ciò riduce l’uscita e il disco rigido. Velocizza inoltre l’accesso alle richieste successive per gli stessi dati perché è già in memoria.
  • Memorizzati nella cache: Le pagine memorizzate nella cache leggono dai file sul disco rigido (escluse le SwapCached).
  • SwapCached: Memoria che è stato scambiato e di nuovo in, e una copia rimane nello spazio di scambio.
  • Attivo: Memoria utilizzata di recente. Non è recuperato a meno che non sia assolutamente necessario.
  • Inattivo: Memoria utilizzata, ma non l’ultima volta. È un probabile candidato per la bonifica.
  • Attivo (anon): Memoria allocata ai file creati in un tmpfs pseudo-file system. I file anonimi non risiedono sul disco rigido.
  • Inattivo (anon): Quantità di anonimi, tmpfsE shmem memoria che è un candidato per lo sfratto (recupero della memoria).
  • Attivo (file): Quantità di memoria cache file in uso o utilizzata dal precedente ciclo di recupero della memoria.
  • Inattivo(file): Quantità di memoria cache file letta da un disco rigido candidato per il recupero.
  • Non modificabile: Quantità di memoria che deve essere modificabile, ma non perché è bloccata in memoria dai processi dello spazio utente.
  • Mlocked: Quantità totale di memoria non modificabile perché è bloccata da processi dello spazio utente.
  • HighTotal: Quantità totale di HighMem, utilizzata dai programmi dello spazio utente e dalla cache delle pagine. Il kernel può accedere a questa zona di memoria, ma è più lento per l’accesso rispetto a LowMem.
  • HighFree: Quantità di HighMem gratuito.
  • LowTotal: Quantità di LowMem, che è disponibile per tutti gli stessi usi di HighMem, ma anche per il kernel da utilizzare per i propri scopi.
  • BassoLibero: Quantità di LowMem gratuito.
  • CopiaMmap: Quantità di memoria mappata ai dati del file.
  • SwapTotal: Quantità totale di spazio di swap disponibile.
  • SwapFree: Quantità di spazio di swap attualmente inutilizzata.
  • Sporco: Quantità di memoria in attesa di essere riscritta sul disco.
  • Writeback: Memoria attivamente riscritta sul disco.
  • AnonPages: Pagine non supportate da file mappate in tabelle di pagine dello spazio utente.
  • Mappato: File (come le librerie) mappati in memoria.
  • Shmem: Quantità di memoria consumata in tmpfs pseudo-file system.
  • KReclaimable: Allocazioni di memoria kernel il kernel tenterà di recuperare se la richiesta di memoria è sufficientemente grave.
  • Lastra: Cache delle strutture di dati nel kernel.
  • Reclaimable: Importo di Slab memoria che potrebbe essere recuperata, ad esempio le cache.
  • SUnreclaim: Importo di Slab memoria che non può essere recuperata.
  • KernelStack: Quantità di memoria allocata agli stack del kernel.
  • Tabelle pagine: Quantità di memoria dedicata al livello più basso delle tabelle di pagine.
  • Elenchi rapidi: Poiché l’allocazione e l’eliminazione delle tabelle di pagina è un’operazione molto frequente, è fondamentale che sia il più rapido possibile. Pertanto, le pagine utilizzate per le tabelle di pagine vengono memorizzate nella cache in diversi elenchi denominati “elenchi rapidi”.
  • NFS_Unstable: File system di rete (NFS) che il server ha ricevuto, ma non ancora scritto su archiviazione non volatile.
  • Rimbalzo: Memoria utilizzata per i buffer di rimbalzo del dispositivo a blocchi. Un buffer di rimbalzo è posizionato in memoria abbastanza inbasso da consentito a un dispositivo di accedervi direttamente. I dati vengono quindi copiati nella pagina utente desiderata in HighMem.
  • WritebackTmp: Memoria utilizzata da File system nello spazio utente (FUSE) per buffer di writeback temporanei.
  • CommitLimit: Quantità totale di memoria attualmente disponibile per l’allocazione nel sistema.
  • Committed_AS: La quantità di memoria stimata per soddisfare tutte le richieste correnti. Se un programma richiede una certa RAM, la richiesta viene registrata, ma la RAM viene allocata solo una volta che il programma inizia a utilizzarlo. Viene inoltre allocato solo come richiesto, fino all’importo massimo prenotato dal programma. È possibile “allocare” più memoria di quella che può essere effettivamente recapitata. Se tutti i programmi cercano di incassare i loro chip RAM in una sola volta, il casinò di memoria potrebbe andare busto (e devono andare cap in mano ai finanzieri swap-spazio).
  • VmallocTotale: La dimensione totale del vmalloc nell’area della memoria.
  • VmallocUsed: Quantità di area vmalloc utilizzata. Dal momento che Linux 4.4, questo campo non è più calcolato, è hardcoded.
  • VmallocChunk: Il più grande blocco contiguo di un’area vmalloc gratuita.
  • HardwareCorrupted : Quantità di memoria contrassegnata come con problemi di danneggiamento della memoria fisica. Non verrà assegnato.
  • LazyFree: Quantità di memoria in MADV_FREE Stato. Quando un’applicazione imposta MADV_FREE una serie di pagine, questo indica che non li richiede più, e ora sono candidati al recupero. Il recupero effettivo potrebbe essere ritardato fino a quando non vi è una domanda sufficiente di memoria. Se l’applicazione inizia a scrivere nelle pagine, il recupero può essere annullato.
  • AnonHugePages: Pagine enormi non supportate da file mappate in tabelle di pagine dello spazio utente. Le pagine non supportate da file non provengono da un file del disco rigido.
  • ShmemHugePages: Quantità di memoria utilizzata dalla memoria condivisa (shmem) e pseudo-file system (tmpfs) assegnato con pagine enormi.
  • ShmemPmdMapped: Quantità di memoria condivisa mappata nello spazio utente con pagine enormi.
  • CmaTotale: Quantità di pagine CMA (Allocatore di memoria contigua). Questi vengono utilizzati da dispositivi che possono comunicare solo a aree contigue di memoria.
  • CmaFree: Quantità di pagine CMA (Contiguous Memory Allocator) gratuite.
  • HugePages_Total: Enorme dimensione piscina di pagina.
  • HugePages_Free: Numero di pagine enormi non allocate nel pool.
  • HugePages_Rsvd: Numero di pagine enormi riservate. L’impegno da allocare è stato preso, ma l’allocazione non è ancora avvenuta.
  • HugePages_Surp: Numero di pagine enormi nel pool al di sopra del valore di sistema definito.
  • Enormi dimensioni pagina: Dimensioni di pagine enormi.
  • DirectMap4k: Numero di byte di RAM mappati a pagine da 4 kB.
  • DirectMap4M: Numero di byte di RAM mappati a 4 pagine MB.
  • DirectMap2M: Numero di byte di RAM mappati a 2 pagine MB.
  • DirectMap1G: Numero di byte di RAM mappati a pagine da 2 GB.

Come al solito con Linux, c’è più di un modo per ottenere una rapida panoramica, e sempre almeno un modo per andare più in profondità nei dettagli.

Probabilmente userai free, topE vmstate regolarmente, e mantenere /proc/meminfo in riserva per quando è necessario fare un’immersione profonda per indagare su un particolare problema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *