¿Cómo puedo rastrear y registrar el uso de CPU y memoria en una Mac?

Sé que puedo utilizar el Monitor de actividad (así como un montón de aplicaciones de terceros) para supervisar el uso de la RAM y la CPU en mi Mac. Sin embargo, quiero capturar un registro en una cantidad de tiempo para que pueda comparar el uso entre los procesos sin tener que tomar capturas de pantalla, etc Algo similar a la consola, como este:

Process A (5:22 - 5:32) 5:22:01: 2.2% CPU, 5 Threads, 111.1MB Real Mem 5:22:03: 2.1% CPU, 4 Threads, 90.4MB Real Mem ... 

¿Cómo puedo lograr esto?

Esto podría no muy bien la marca, pero prueba esto:

 sar -o ~/output.sar 10 10 

Que reúne 10 conjuntos de métricas a intervalos de 10 segundos. A continuación, puede extraer información útil del archivo de salida (aunque esté aún en ejecución), por ejemplo, esto le permitirá obtener la actividad del disco para el intervalo muestreado:

 sar -d -f ~/output.sar 

Hacer un man sar para averiguar qué otras opciones hay.

Editar:

sar no hace memoria así que esto le conseguirá la memoria libre en su sistema en intervalos de diez segundos:

 vm_stat 10 | awk 'NR>2 {gsub("K","000");print ($1+$4)/256000}' 

Puede redirigirlo a un archivo.

Si necesitas mas información, por favor pregunta.

Puede registrar la CPU y el uso de memoria de los procesos, aunque no el conteo de hilos, con el programa Python Syrupy .

Syrupy es una secuencia de comandos de Python que toma regularmente instantáneas de la memoria y la carga de la CPU de uno o más procesos en ejecución, con el fin de crear dinámicamente un perfil de su uso de los recursos del sistema.

Jarabe trabaja por uno de dos modos. En el primer modo (predeterminado), supervisa el uso de recursos de un proceso resultante de la ejecución de un comando especificado por el usuario (que puede ser cualquier combinación arbitrariamente compleja de programas y argumentos que se pueden invocar desde un terminal de shell). En el segundo modo, Syrupy supervisa el uso de recursos de los procesos de ejecución externos que cumplen los criterios especificados por el usuario: un número PID (IDentificador de proceso) o una cadena de comandos que coincida con un patrón de expresión regular.

En cualquier caso, la supervisión del uso de recursos del sistema se basa en llamadas repetidas a la orden de sistema ps .

Para su caso de uso, registrando cada proceso en ejecución, creo que este comando funcionaría:

 syrupy.py --poll-command='.*' 

Puede utilizar top datos de top y de tubería en awk o grep para leer la información específica que necesita.

Compruébelo aquí; http://ss64.com/osx/top.html

top es en realidad la herramienta subyacente en la que Activity Monitor se basa.