Come controllare l’utilizzo della memoria in Linux
Come faccio a controllare l’utilizzo della memoria in Linux usando le opzioni della riga di comando e della GUI?
Abbiamo RAM fisica come 16 GB e memoria di swap. La memoria swap non è altro che spazio su disco che consente al computer Linux di eseguire più applicazioni contemporaneamente di quelle che si inseriscono nella memoria di sistema (RAM). Questa pagina spiega vari comandi per controllare l’utilizzo della memoria e l’utilizzo in Linux utilizzando strumenti da riga di comando e GUI.
Comandi per controllare l’utilizzo della memoria in Linux
Il sistema Linux deve funzionare a un livello ottimale. La memoria gioca un ruolo critico in un sistema Linux. Uno sviluppatore o sysadmin esperto deve conoscere la quantità totale di libero e utilizzato fisico, compresa la memoria di swap nel server. Sarebbe meglio se tenessi d’occhio anche i buffer e le cache utilizzate dal kernel.
Il file /proc/meminfo
Il file /proc/meminfo riporta statistiche sull’utilizzo della memoria su Linux. Usa il comando cat command / less command o il comando grep command / eep come segue sulla tua Linux box:cat /proc/meminfo
more /proc/meminfo
Ogni riga del file /proc/meminfo consiste in un nome di parametro, seguito da due punti, il valore del parametro e un’unità di misura opzionale. Ad esempio,”kB”.
Comprensione dei parametri di utilizzo della memoria
Parametro | Descrizione |
---|---|
MemTotal | RAM utilizzabile totale (cioè, ram fisica meno alcuni bit riservati e il codice binario del kernel). |
Mefree | La somma di LowFree + HighFree. |
MemAvailable | (da Linux 3.14) Una stima di quanta memoria è disponibile per l’avvio di nuove applicazioni, senza scambiare. |
Buffer | Memoria relativamente temporanea per blocchi di disco raw che non dovrebbero diventare enormemente grandi (20 MB o giù di lì). |
Cache in memoria | per i file letti dal disco (la cache della pagina). Non include SwapCached. |
SwapCached | La memoria che una volta è stata scambiata, viene scambiata di nuovo ma è ancora nel file di swap. |
Memoria attiva | che è stata utilizzata più di recente e di solito non recuperata a meno che non sia assolutamente necessario. |
Memoria inattiva | che è stata utilizzata meno di recente. È più idoneo per essere recuperato per altri scopi. |
HighTotal | Importo totale di highmem. Highmem è tutta la memoria sopra ~860 MB di memoria fisica. Aree Highmem sono per l’uso da parte di programmi di spazio utente, o per la cache di pagina. Il kernel deve usare trucchi per accedere a questa memoria, rendendo più lento l’accesso rispetto a lowmem. |
HighFree | Quantità di highmem gratuito. |
LowFree | Quantità di lowmem gratuito. |
SwapTotal | Quantità totale di spazio di swap disponibile. |
SwapFree | Quantità di spazio di swap attualmente inutilizzato. |
Dirty | Memoria che è in attesa di essere scritta sul disco. |
Writeback | Memoria che viene attivamente riscritta sul disco. |
AnonPages | Pagine non supportate da file mappate in tabelle di pagine dello spazio utente. |
Mappato | File che sono stati mappati in memoria(con mmap (2)), come le librerie. |
Shmem | Quantità di memoria consumata nei filesystem tmpfs(5). |
KReclaimable | Allocazioni del kernel che il kernel tenterà di recuperare sotto pressione della memoria. Include SReclaimable (sotto) e altre allocazioni dirette con uno shrinker. |
Slab | Cache delle strutture dati nel kernel. (Vedi slabinfo (5).) |
SReclaimable | Parte di Slab, che potrebbe essere recuperata, come le cache. |
SUnreclaim | Parte della lastra, che non può essere recuperata sulla pressione della memoria. |
KernelStack | Quantità di memoria allocata agli stack del kernel. |
PageTables | Quantità di memoria dedicata al livello più basso delle tabelle di pagina. |
NFS_Unstable | Pagine NFS inviate al server, ma non ancora impegnate nello storage stabile. |
Bounce | Memoria utilizzata per il dispositivo a blocchi “bounce buffer”. |
WritebackTmp | Memoria utilizzata da FUSE per buffer di writeback temporanei. |
CommitLimit | Questa è la quantità totale di memoria attualmente disponibile da allocare sul sistema, espressa in kilobyte. Questo limite viene rispettato solo se è abilitata la contabilità strict overcommit (modalità 2 in / proc/sys/vm / overcommit_memory). Il limite viene calcolato secondo la formula descritta in / proc/sys/vm / overcommit_memory. |
Committed_AS | La quantità di memoria attualmente allocata sul sistema. La memoria impegnata è una somma di tutta la memoria che è stata allocata dai processi, anche se non è stata ancora “utilizzata” da loro. Un processo che alloca 1 GB di memoria (usando malloc(3) o simile), ma tocca solo 300 MB di quella memoria apparirà come usando solo 300 MB di memoria anche se ha lo spazio degli indirizzi allocato per l’intero 1 GB. Questo 1GB è memoria che è stata “impegnata” dalla VM e può essere utilizzata in qualsiasi momento dall’applicazione di allocazione. Con strict overcommit abilitato sul sistema (modalità 2 in / proc/sys/vm / overcommit_memory), le allocazioni che supererebbero il CommitLimit non saranno consentite. Questo è utile se è necessario garantire che i processi non falliscano a causa della mancanza di memoria una volta che la memoria è stata allocata con successo. |
VmallocTotal | Dimensione totale dell’area di memoria vmalloc. |
VmallocUsed | Quantità di area vmalloc utilizzata. Da Linux 4.4, questo campo non è più calcolato ed è codificato come 0. Vedi / proc / vmallocinfo. |
VmallocChunk | Più grande blocco contiguo di area vmalloc che è libero. Da Linux 4.4, questo campo non è più calcolato ed è codificato come 0. Vedi / proc / vmallocinfo. |
LazyFree | Mostra la quantità di memoria contrassegnata da madvise (2) MADV_FREE. |
AnonHugePages | Pagine enormi non supportate da file mappate in tabelle di pagine dello spazio utente. |
ShmemHugePages | Memoria utilizzata dalla memoria condivisa (shmem) e tmpfs(5) allocata con pagine enormi |
ShmemPmdMapped | Memoria condivisa mappata nello spazio utente con pagine enormi. |
CmaTotal | Totale CMA (Contiguous Memory Allocator) pagine. |
CmaFree | CMA libero (Contiguous Memory Allocator) pagine. |
HugePages_Total | La dimensione del pool di pagine enormi. |
HugePages_Free | Il numero di pagine enormi nel pool che non sono ancora allocate. |
HugePages_Rsvd | Questo è il numero di pagine enormi per le quali è stato effettuato un impegno di allocazione dal pool, ma non è stata ancora effettuata alcuna allocazione. Queste pagine enormi riservati garantiscono che un’applicazione sarà in grado di allocare una pagina enorme dal pool di pagine enormi in tempo di guasto. |
HugePages_Surap | Questo è il numero di pagine enormi nel pool sopra il valore in /proc/sys/vm/nr_hugepages. Il numero massimo di pagine enormi in eccesso è controllato da / proc/sys/vm / nr_overcommit_hugepages. |
Hugepagesize | La dimensione di pagine enormi. |
DirectMap4k | Numero di byte di RAM mappati linearmente dal kernel in pagine da 4kB. |
DirectMap4M | Numero di byte di RAM mappati linearmente dal kernel in pagine da 4 MB. |
DirectMap2M | Numero di byte di RAM mappati linearmente dal kernel in pagine da 2 MB. |
DirectMap1G | x86 con CONFIG_X86_64 e CONFIG_X86_DIRECT_GBPAGES abilitati. |
Possiamo filtrare il file usando il comando grep o il comandogreep come segue:grep -E --color 'Mem|Cache|Swap' /proc/meminfo
Utilizzo del comando libero per controllare l’utilizzo della memoria usata e libera
L’output di /proc/meminfo è potente ma non facile da usare. Quindi, dobbiamo usare il comando libero. Il comando libero mostra la quantità di memoria libera e utilizzata nel sistema Linux. Per esempio:free
Vuoi vedere l’output leggibile dall’uomo? Provare:free -h
free --human
Campione uscite:
total used free shared buff/cache availableMem: 94Gi 15Gi 672Mi 428Mi 78Gi 77GiSwap: 0B 0B 0B
Colonna | Descrizione |
---|---|
totale | Totale di memoria installata |
usato | memoria Utilizzata (calcolato come totale – libero – buffer – cache) |
gratis | memoria Inutilizzata (MemFree e SwapFree in /proc/meminfo) |
condiviso | Memoria utilizzata per lo più da tmpfs (Shmem in /proc/meminfo) |
buffer | Memoria utilizzata dal kernel buffer (buffer in /proc/meminfo) |
cache | Memoria utilizzata dalla cache della pagina e lastre (memorizzate nella cache e SReclaimable in / proc / meminfo) |
buff / cache | Somma di buffer e cache |
disponibile | Stima della quantità di memoria disponibile per l’avvio di nuove applicazioni, senza scambio. |
Siamo in grado di ripetere la stampa libera uscita di comando ogni N secondi. Ad esempio, stampare l’output ogni 5 secondi e uscire dopo dieci ripetizioni (conteggi) sullo schermo:free -s 5 -c 10
Possiamo controllare l’uscita del comando libero come segue:free
free -k
free -g
free -m
Opzione | visualizzare l’output in |
---|---|
-b, –byte | |
–chilo | kilobyte |
–mega | megabyte |
–giga | gigabyte |
–tera | terabyte |
–peta | petabyte |
-k, –kibi | kibibytes |
-m, –mebi | mebibytes |
-g, –gibi | gibibyte |
–tebi | tb |
–pebi | pebibytes |
vmstat comando
Il vmstat comando è potente, e mostra le informazioni su Linux hardware, come:
- Processi
- Memoria
- Paging
- Blocco IO
- Trappole
- Dischi
- CPU attività di
Aprire il terminale e digitare il seguente comando:vmstat
sessione di Esempio dal mio Ubuntu Linux desktop:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 11434840 2567516 10238916 0 0 26 75 142 55 13 5 82 0 0
Passare-w per vedere vasta output su schermo:vmstat -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 11405404 2567988 10324528 0 0 26 75 142 58 13 5 82 0 0
Campo | Descrizione |
---|---|
swpd | la quantità di memoria virtuale utilizzata. |
libero | la quantità di memoria inattiva. |
buff | la quantità di memoria utilizzata come buffer. |
cache | la quantità di memoria utilizzata come cache. |
inact | la quantità di memoria inattiva. (- un’opzione) |
attivo | la quantità di memoria attiva. (- un’opzione) |
si | Quantità di memoria scambiata dal disco (/s). |
quindi | Quantità di memoria scambiata su disco (/s). |
comando top e htop
I comandi top e htop forniscono una visualizzazione dinamica in tempo reale di un sistema Linux in esecuzione. Questo include informazioni su:
- Nessun annuncio e tracciamento
- Guide approfondite per sviluppatori e amministratori di sistema su Opensourceflare
- Unisciti a my Patreon per supportare i creatori di contenuti indipendenti e iniziare a leggere le ultime guide:
- Come impostare Redis sentinel cluster su Ubuntu o Debian Linux
- Come Impostare le Chiavi SSH Con YubiKey come l’autenticazione a due fattori (U2F/FIDO2)
- Come impostare Mariadb Galera cluster su Ubuntu o Debian Linux
- Un podman tutorial per principianti – parte I (Linux contenitori senza finestra Mobile e in daemonless modalità)
- Come proteggere Linux contro rogue periferiche USB utilizzando USBGuard
- Se il tuo dominio non è l’invio di e-mail, impostare le seguenti impostazioni DNS per evitare di phishing e spoofing
- Utilizzo hardware e CPU
- Uptime Linux
- Utilizzo memoria e swap
- Processi di sistema e altro ancora
Si prega di notare che htop non è installato per impostazione predefinita. Ma è possibile installarlo su CentOS, Debian, Ubuntu e altri sistemi operativi facilmente.
Eseguire il seguente comando:top
htop
Segnala l’utilizzo della memoria con la memoria condivisa divisa proporzionalmente
Lo strumento smem riporta:
- Utilizzo della memoria fisica tenendo conto delle pagine di memoria condivise. La memoria non condivisa viene segnalata come USS (Unique Set Size).
- La memoria condivisa viene divisa equamente tra i processi che condividono tale memoria.
- La memoria non condivisa (USS) più la proporzione di memoria condivisa di un processo viene riportata come PSS (Proportional Set Size).
- USS e PSS includono solo l’utilizzo della memoria fisica. Non includono la memoria che è stata scambiata su disco.
- La memoria può essere segnalata da un processo, da un utente, mappando o a livello di sistema. Sono disponibili sia la modalità testo che l’output grafico.
si può installare smem utilizzando il comando apt/apt-get comando su Linux Debian/Ubuntu:sudo apt install smem
Esecuzione come segue:smem
# show whole system #
smem -w
# show meme usage about specifc user #
smem -u vivek
smem -u nginx
# get help #
man smem
smem --help
User Count Swap USS PSS RSS vivek 139 0 7593240 8210344 13017360
Controllare l’utilizzo della memoria in Linux utilizzando la GUI
Monitor di Sistema è una GUI di Linux app che mostra quali programmi sono in esecuzione e quanto tempo processore, memoria e spazio su disco vengono utilizzati. Possiamo aprire il monitor di sistema dalla panoramica delle attività. Premere il tasto Super sulla tastiera. È possibile visualizzare le finestre e le applicazioni nella panoramica. Si può anche solo iniziare a digitare per cercare le applicazioni, come Monitor di sistema. La scheda Risorse indica la quantità di memoria (RAM) del computer utilizzata. Per verificare quali processi utilizzano più memoria: fare clic sulla scheda Processi. Fare clic sull’intestazione della colonna Memoria per ordinare i processi in base all’utilizzo della memoria.
Vedere la documentazione per maggiori informazioni.
Riassumendo
Hai imparato come trovare l’utilizzo della memoria Linux (RAM) su Linux usando gli strumenti GUI e CLI.
feed RSS ➔ email newsletter Settimanale ➔
Categoria | Elenco di Unix e Linux comandi |
---|---|
Download manager | wget |
Documentazione | guida • mandb • uomo • pinfo |
spazio su Disco analizzatori | df • duf • ncdu • pydf |
la Gestione dei File | cat • cp • meno • mkdir • più • di albero |
Firewall | Alpino Mura • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop apps | Skype • Spotify • VLC 3 |
Moderni servizi di pubblica utilità | bat • exa |
Utility di Rete | NetHogs • scavi • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Gestore di Pacchetti | apk • apt |
Processi di Gestione | bg • chroot • cron • disconoscere • fg • sguardi • gtop • iotop • lavori • killall • uccidere • pidof • pstree • pwdx • tempo • vtop |
Ricerca | ag • grep • whereis • che |
i comandi incorporati della Shell | compgen • echo • printf |
l’elaborazione del Testo | taglio • rev |
Informazioni Utente | gruppi • id • lastcomm • ultimo * lid / libuser-lid * logname * membri * utenti * whoami * who * w |
Per maggiori informazioni clicca qui 20.04 |