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.
MMonit è un must. Monit singolo è gratuito, il MMonit cluster è pagato. – erm3nda