GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere la percentuale di utilizzo della memoria con vmstat?

Quello che stai cercando è l'output di "free":

$ free
             total       used       free     shared    buffers     cached
Mem:        775556     759456      16100          0      22132     592484
-/+ buffers/cache:     144840     630716
Swap:       500344      21972     478372

Ecco un tour:

Questa è una scatola con 768 MB di RAM fisica e una partizione di swap da 500344 KB.

759456KB è "usato" (seconda colonna, riga superiore). Di questa memoria "usata", 23132KB sono buffer (5a colonna, riga superiore) e 592484KB (sesta colonna, riga superiore) sono cache, lasciando 144840KB (2a colonna, 2a riga) di memoria fisica utilizzata dai processi attivi.

Se consideri che la memoria utilizzata dai buffer e dalla cache potrebbe essere utilizzata per i processi, rimangono 630716 KB (3a colonna, 2a riga) di memoria fisica libera.

La partizione di swap, come ho detto, è 500344KB (1a colonna, riga inferiore). 21972KB (2a colonna, riga inferiore) del file di scambio sono in uso, lasciando 478372KB (3a colonna, riga inferiore) liberi.

Quindi, la tua definizione di % di memoria libera dipende dal fatto che tu stia contando i buffer e la cache o meno, e se stai contando lo swap o meno.

Questo dovrebbe darti abbastanza per continuare a calcolare una percentuale come ritieni opportuno.

Ecco l'output di top e free:

$ top -n1 | grep "used," ; free
Mem:    775556k total,   751472k used,    24084k free,    20776k buffers
Swap:   500344k total,    21972k used,   478372k free,   586648k cached

             total       used       free     shared    buffers     cached
Mem:        775556     751344      24212          0      20776     586648
-/+ buffers/cache:     143920     631636
Swap:       500344      21972     478372

Puoi vedere come top e free concordano (anche se con una piccola differenza:questa è una macchina multiutente e l'utilizzo della memoria dei programmi top e free si riflette lì).

Aggiungi una "-s" quando chiami vmstate e vedrai più o meno lo stesso output, solo in una forma diversa:

$ vmstat -s ; free
       775556  total memory
       759920  used memory
       674680  active memory
        18440  inactive memory
        15636  free memory
        21892  buffer memory
       594372  swap cache
       500344  total swap
        21972  used swap
       478372  free swap
       ... output truncated ...

             total       used       free     shared    buffers     cached
Mem:        775556     759920      15636          0      21892     594372
-/+ buffers/cache:     143656     631900
Swap:       500344      21972     478372

Puoi vedere che vmstat mostra tutti gli stessi numeri di free.


Ho la stessa domanda con te e trovo una formula

vmstat -s | awk  ' $0 ~ /total memory/ {total=$1 } $0 ~/free memory/ {free=$1} $0 ~/buffer memory/ {buffer=$1} $0 ~/cache/ {cache=$1} END{print (total-free-buffer-cache)/total*100}'

L'ho testato sulla versione vmstat da procps-ng 3.3.10 e vmstat da procps-ng 3.3.9


Linux
  1. Come ottenere statistiche di sistema con node.js

  2. Come ottenere l'utilizzo della CPU

  3. Come limitare l'utilizzo della memoria dell'applicazione?

  4. Come ridurre l'utilizzo della memoria ClamAV?

  5. Come viene riportato l'utilizzo della memoria in Linux?

Comando gratuito Linux (controlla l'utilizzo della memoria)

Come visualizzare l'utilizzo dello spazio su disco con Vizex in Linux

Come controllare l'utilizzo della memoria in Debian 10

Come interpretare l'utilizzo della memoria top/htop?

Come iniziare con Arch Linux

Come profilare l'utilizzo della memoria?