2009-04-30 14 views
5

Estoy ejecutando un script de shell para ejecutar una aplicación de C++, que mide el rendimiento de una API. Puedo capturar la latencia (el tiempo necesario para devolver un valor para un conjunto dado de parámetros) de la API, pero también deseo capturar el uso de la CPU y la memoria junto a intervalos de, digamos, 5-10 segundos.Captura de CPU y uso de memoria de forma dinámica

¿hay alguna manera de hacer esto sin afectar demasiado el rendimiento del sistema y también dentro del mismo script? He encontrado muchos ejemplos donde uno puede hacer afuera (independientemente) del script que estamos ejecutando; pero no uno donde podamos hacer dentro del mismo script.

+0

duplicado posible de [? ¿Cómo puedo obtener el uso de la CPU y uso de memoria de un solo proceso en Linux (Ubuntu)] (http://stackoverflow.com/questions/1221555/ how-can-i-get-the-cpu-usage-and-memory-usage-of-one-process-on-linux-ubunt) –

+0

http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even- though-its-much-new-and-ha ;-) –

Respuesta

2

Sugiero utilizar el comando 'time' y también el comando 'vmstat'. El primero dará al CPU el uso de ejecución ejecutable y segundo - periódico (es decir, una vez por segundo) volcado de CPU/memoria/IO del sistema.

Ejemplo:

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

¿Podría darnos un ejemplo? Intenté lo mismo dentro del intérprete de órdenes, pero espera que el proceso termine y tengo varias instancias de la llamada ejecutándose en el mismo script ... escrita una línea después de la otra. – gagneet

+0

Agregué un ejemplo, creo que tendrá que recopilar la salida y sumarla manualmente. Otra sugerencia para hacer todas las ejecuciones en un script y hacer 'time' para ello. – Drakosha

Cuestiones relacionadas