Come posso monitorare l'utilizzo della memoria?

233

Ho usato top per vedere l'utilizzo della memoria al momento. Ma vorrei monitorare l'utilizzo della memoria per un periodo di tempo. E.g avvia il monitoraggio e poi esegue alcuni comandi, e interrompe definitivamente il monitoraggio e vede quanta memoria è stata usata durante il periodo.

Come posso farlo su Ubuntu Server?

Credo che potrei avviare un cronjob ogni 5 secondi circa e richiamare un comando che registra l'utilizzo della memoria corrente in un file di testo. Ma quale comando dovrei usare per ottenere l'attuale utilizzo della memoria in un formato che è facile da registrare in un file di testo?

    
posta Jonas 26.10.2010 - 18:50

10 risposte

287

Raccomando di combinare le risposte precedenti

watch -n 5 free -m

Nota che a Linux piace utilizzare qualsiasi memoria aggiuntiva per blocchi del disco rigido della cache . Quindi non vuoi guardare solo il Mem gratuito. Vuoi esaminare la colonna free della riga -/+ buffers/cache: . Questo mostra quanta memoria è disponibile per le applicazioni. Quindi ho appena eseguito free -m e ho ottenuto questo:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

So che sto utilizzando 1528 MB e ho 2170 MB gratis.

Nota: per interrompere questo ciclo watch puoi semplicemente premere Ctrl + C .

    
risposta data Justin Force 26.10.2010 - 19:40
191

Penso che htop sia la soluzione migliore.

  • sudo apt-get install htop

In questo modo noterai quali programmi stanno utilizzando la maggior parte della RAM. e puoi facilmente terminarne uno se vuoi. Ecco uno screenshot!

    
risposta data Alvar 18.05.2012 - 02:11
38

Se stai cercando una bella ripartizione della memoria utilizzata da ogni processo in esecuzione, allora ti consiglio di provare ps_mem.py (trovato qui su pixelbeat.org).

Lo so nei commenti sopra, hai detto di volere uno snapshot di una riga da gratuito , ma ho pensato che altri potrebbero trovare utile questo.

Esempio di output:

[email protected]:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

L'unica parte che non mi piace è il fatto che lo script afferma di richiedere i privilegi di root. Non ho ancora avuto l'opportunità di vedere esattamente perché questo è il caso.

    
risposta data Jason Mock 02.10.2015 - 01:47
21

Utilizza il comando gratuito . Ad esempio, questa è l'uscita di free -m :

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ restituirà solo la seconda riga:

-/+ buffers/cache:        947       1064
    
risposta data Isaiah 26.10.2010 - 19:19
9

watch potrebbe essere utile. Prova watch -n 5 free per monitorare l'utilizzo della memoria con aggiornamenti ogni cinque secondi.

    
risposta data mgunes 26.10.2010 - 19:27
4

Per il monitoraggio visivo dell'utilizzo complessivo della RAM, se usi Byobu , manterrà l'utilizzo della memoria in basso a destra -angolo della mano del terminale e verrà eseguito mentre si è in qualsiasi sessione del terminale.

Come puoi vedere dallo screenshot, la mia macchina virtuale ha un tempo di funzionamento di 1h3m, carico 0,00, ha un processore a 2,8 GHz (virtuale) e 994 MB (21%) della RAM disponibile sul sistema.

    
risposta data bafromca 19.01.2015 - 21:09
3

Puoi farlo usando cat /proc/meminfo .

    
risposta data Amir 16.04.2016 - 21:15
3

Soluzione a linea singola e output:

free -m | grep "Mem:"

Ecco un esempio dell'output atteso:

    
risposta data Tim 27.09.2016 - 15:30
1

Vorrei usare Cacti . In questo modo il tuo utilizzo della memoria sarà tracciato per un periodo di tempo e sarai in grado di verificare l'utilizzo del tuo browser web.

    
risposta data Matt 26.10.2010 - 20:01
1

Monitoraggio dell'uso della memoria

Sono più in linea con uno dei post precedenti che citava Cacti come un ottimo modo per monitorare l'utilizzo della memoria. Tuttavia, dal momento che sembra che il cactus non sia più popolare nel mainstream, esiste un'applicazione grafica alternativa chiamata Graphite.

La grafite è relativamente facile da installare su un server ubuntu e per installarlo, puoi controlla questo link per le procedure di installazione facili da seguire.

Dopo aver installato la grafite, ora è possibile inviare metriche di memoria ad esso, a qualsiasi intervallo desiderato; ogni 5 secondi, ogni minuto, ogni ora ... ecc.

Per rappresentare graficamente le metriche della memoria, come già suggerito nei post precedenti, puoi scrivere il tuo script usando gli strumenti di sistema per raccogliere le informazioni necessarie sulla memoria. Oppure, puoi usare un plugin snmp pre-scritto che farà tutto il lavoro per te.

Se desideri scrivere il tuo script di memoria, sarà saggio assicurarsi di tenere conto della memoria bufferizzata e memorizzata nella cache durante il calcolo della memoria utilizzata, altrimenti finirai col raccogliere dati falsi.

Se si desidera utilizzare un plugin snmp che esegue già tutti i calcoli necessari, ecco un collegamento a uno che funziona piuttosto bene: checkMemoryviaSNMP .

Vantaggi di SNMP:

Ho installato snmp su tutti i nodi remoti che monito. Ciò mi consente di monitorare tutti i miei sistemi da un server centrale (i) , senza dover copiare o inserire un plug-in sui nodi remoti.

Contro SNMP:

Dovresti assicurarti che snmp agent sia installato su ciascuno dei nodi remoti su cui desideri monitorare la memoria. Tuttavia, questa installazione sarà un affare una tantum. Se stai utilizzando strumenti di automazione come chef o fantoccio o strumenti simili nel tuo ambiente, allora questo non è affatto un problema.

Configurazione dell'agent SNMP sui nodi remoti:

Dopo che l'agente snmp è stato installato, semplicemente vi il file /etc/snmpd/snmpd.conf e aggiungi questa linea ad esso:

rocommunity  (specify-a-community-string-aka-password-here)

Quindi riavvia l'agente snmpd, con:

/etc/init.d/snmpd restart

Quindi, sul tuo server centrale, dal quale dovrai invece monitorare tutti gli altri server, puoi eseguire il seguente comando:

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ].  System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].

real    0m0.23s
user    0m0.03s
sys     0m0.02s
    
risposta data SimplisticSpeed 22.10.2016 - 17:32

Leggi altre domande sui tag