2009-04-30 16 views
5

Sto eseguendo uno script di shell per eseguire un'applicazione C++, che misura le prestazioni di un API. Posso catturare la latenza (tempo impiegato per restituire un valore per un dato insieme di parametri) dell'API, ma desidero anche catturare l'utilizzo della CPU e della memoria insieme a intervalli di dire 5-10 secondi.Acquisizione dinamica di CPU e memoria

c'è un modo per farlo senza influire troppo sulle prestazioni del sistema e anche all'interno dello stesso script? ho trovato molti esempi in cui si può fare al di fuori (indipendentemente) dallo script che stiamo eseguendo; ma non quello in cui possiamo fare all'interno dello stesso copione.

+0

Eventuali duplicati di [? Come posso ottenere l'utilizzo della CPU e della memoria di un unico processo su Linux (Ubuntu)] (http://stackoverflow.com/questions/1221555/ how-can-i-get-the-cpu-usage-and-memory-usage-of-a-single-process-on-linux-ubunt) –

+0

http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even- sebbene-è-molto-più-nuovo-e-ah ;-) –

risposta

2

Suggerisco di utilizzare il comando 'time' e anche il comando 'vmstat'. Il primo fornirà l'utilizzo della CPU dell'esecuzione eseguibile e del dump secondario della CPU/memoria/I/O del sistema (cioè una volta al secondo).

Esempio:

time dd if=/dev/zero bs=1K of=/dev/null count=1024000 
1024000+0 records in 
1024000+0 records out 
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s 
0.218u 0.519s 0:00.73 98.6%  0+0k 0+0io 0pf+0w <== that's time result 
+0

potresti fornire un esempio? Ho provato lo stesso all'interno della shell, ma si aspetta che il processo si risolva e ho più istanze della chiamata in esecuzione nello stesso script ... scritte una riga dopo l'altra. – gagneet

+0

Ho aggiunto un esempio, penso che dovrai raccogliere l'output e sommarlo manualmente. Un altro suggerimento per fare tutte le corse in uno script e fare 'tempo' per questo. – Drakosha

Problemi correlati