2013-06-06 17 views
8

Come posso eseguire il benchmark di un processo in Linux? Ho bisogno di qualcosa come "top" e "time" messi insieme per un particolare nome di processo (è un programma multiprocesso a cui verranno dati molti PID)?Come monitorare un processo in Linux CPU, memoria e tempo

Inoltre mi piacerebbe avere una trama nel tempo di memoria e utilizzo della CPU per questi processi e non solo numeri finali.

Qualche idea?

risposta

7

seguito sono gli strumenti per il monitoraggio di un sistema Linux

  1. comandi di sistema come top, free -m, vmstat, iostat, iotop, sar, netstat, ecc Niente viene vicino a queste utility Linux quando si esegue il debug di un problema . Questi comandi ti danno un'immagine chiara che sta entrando nel tuo server
  2. SeaLion: Agent esegue tutti i comandi menzionati in # 1 (anche definiti dall'utente) e le uscite di questi comandi sono accessibili in una bella interfaccia web. Questo strumento è utile quando si esegue il debug su centinaia di server poiché l'installazione è chiara. E 'GRATIS
  3. Nagios: È la madre di tutti gli strumenti di monitoraggio/avviso.È molto personalizzazione ma molto difficile da configurare per i principianti. Ci sono insiemi di strumenti chiamati Nagios plugin che copre praticamente tutti i più importanti Linux le metriche
  4. Munin
  5. Server Density: un servizio a pagamento cloudbased che raccoglie importanti metriche Linux e offre agli utenti la capacità di scrivere propri plugin.
  6. Nuova reliquia: un altro servizio di monitoraggio ben noto.
  7. Zabbix
+0

MMonit è un must. Monit singolo è gratuito, il MMonit cluster è pagato. – erm3nda

13

Generalmente organizzo un semplice script per questo tipo di lavoro.

Dai un'occhiata alla documentazione del kernel per il filesystem proc (Google 'linux proc.txt').

La prima riga di /proc/stat (Sezione 1.8 in proc.txt) fornisce statistiche cumulative sull'utilizzo della CPU (ad esempio, utente, bello, sistema, inattivo, ...). Per ogni processo, il file /proc/$PID/stat (Tabella 1-4 in proc.txt) fornirà sia statistiche sull'utilizzo della CPU specifiche del processo che statistiche di utilizzo della memoria (vedere rss).

Se si google un po ', troverete un sacco di informazioni dettagliate su questi file e puntatori a librerie/app/frammenti di codice che possono aiutare a ottenere/derivare i valori necessari. Con questo in mente, mi concentrerò sulla strategia di alto livello.

Per le statistiche CPU, utilizzare il proprio linguaggio di script preferito per creare un file eseguibile che accetta un set di ID processo per il monitoraggio. A intervalli fissi (es: 1 secondo), eseguire il polling/calcolare i totali cumulativi per ciascun processo e il sistema nel suo insieme. Durante ogni intervallo di polling, scrivi tutti i risultati su una singola riga su stdout.

Per le statistiche della memoria, scrivere uno script simile, ma semplicemente registrare l'utilizzo della memoria per processo. La memoria è un po 'più facile in quanto otteniamo direttamente i valori istantanei.

Esegui questi script per la durata del test, passando il set di id dei processi che desideri monitorare e reindirizzando l'output in un file di registro.

./logcpu $(pidof foo) $(pidof bar) > cpustats 
./logmem $(pidof foo) $(pidof bar) > memstats 

Importare il contenuto di questi file in un foglio di calcolo (per alcune applicazioni questo è facile come copiare/incollare). Per la CPU, si stanno cercando valori istantanei ma hanno valori cumulativi, quindi è necessario eseguire qualche piccolo lavoro di calcolo per ricavare questi valori (è solo il delta 't (x + 1) - t (x)'). Naturalmente potresti avere il tuo cpu logger per scrivere il delta, ma trascorrerai un po 'più tempo in anticipo sulla sceneggiatura.

Infine, utilizzare il foglio di calcolo per generare una bella trama.

+0

apprezzare visto che/proc/$ PID contiene tutti questi dati di monitoraggio – Paul

Problemi correlati