Monitorizar procesos en OSX
De vez en cuando nuestro felino favorito, empieza a notarse lento y pesado. Para investigar que es lo que está pasando en nuestro sistema, podemos optar por el conjunto de herramientas Unix de «toda la vida», especialmente el comando top, o bien hacer uso de la herramienta gráfica «Monitor de actividad» que encontraremos en Aplicaciones/Utilidades/Monitor de Actividad. Ambas utilidades, nos ofrecerán cumplida información acerca de lo que pasa con los procesos de nuestro sistema, pero seremos nosotros los que tendremos que encontrar la anomalía.
Top
Gracias a la información ofrecida por este comando, presente en otros Unix y en Linux, podemos conocer alguna información relativa al estado general del sistema, como por ejemplo el uso de la CPU, los niveles de carga o cuanta memoria RAM tenemos disponible. Además, de una forma más pormenorizada, nos dirá cual de los procesos activos, está consumiendo más recursos tanto de CPU como de memoria entre otros parámetros.
A simple vista, sobre todo si no estas acostumbrado a manejarte con esta herramienta, te puede parecer un poco caótica, pero pronto esta percepción cambiará 🙂
En la primera parte de top, nos ofrece una información «global» del sistema:
Esta información es la siguiente:
- Número de procesos: Nos indica el número de procesos activos en el sistema, así como el número de hilos nacidos de estos.
- Promedio de carga: El promedio de carga (Load average) es una métrica que se obtiene del número de procesos que están esperando y encolados. Si vemos aqui un numero alto, nos indica que muchos procesos están a la espera de ejecutarse, lo que suele indicar que el sistema está por debajo de capacidad que necesitamos, o bien que alguno de los procesos está haciéndole trabajar más de la cuenta. Estos tres números serían: la carga actual y los promedios de los últimos 5 y 15 minutos.
- Librerías compartidas: Tamaño de código y segmentos de datos.
- Regiones de memoria: Total de regiones de memoria y varios usos de esta.
- Memoria física (RAM): Uso de la memoria RAM. Está dividida en memoria compartida, activa, inactiva, usada y libre. El parámetro de «RAM libre» es este último y generalmente se puede exprimir algo de la memoria inactiva. La memoria usada es la suma de los tres primeros.
- Memoria virtual: El uso de parte del disco que se dedica a simular RAM, cuando el sistema se encuentra escaso de ella. Si tenemos memoria suficiente, no deberíamos hacer uso de memoria virtual, por lo que un uso frecuente y grande, puede ser indicador que la RAM es insuficiente.
- Red: Esta información nos ofrece la suma de todos los datos (en paquetes) han atravesado todos los interfaces de red tanto de entrada como de salida.
- Discos: Nos ofrece información acerca del volumen de lecturas y escrituras de datos en disco.
Con toda esta información, tendremos una imagen general, como comentaba antes, pero si lo que necesitamos es identificar al «culpable», en la segunda parte de top contamos con toda esta valiosísima información:
Es necesario maximizar la ventana para poder ver el resto de las columnas (o hacerla más grande). Podemos ordenar esta información si pulsamos la letra «o» (de Order) seguido del indicador de cada columna. Las principales columnas son:
- PID: Identificador de proceso. Es un número que indica el identificador de proceso que identifica al proceso. (ole yo xD)
- COMMAND: Nos dice el nombre del comando de ese proceso. Un programa puede lanzar varios procesos y estos a su vez otros más. Si matas al proceso padre, el resto de procesos caerán (al menos deberían) con el.
- %CPU: Nos indica el porcentaje de CPU empleada por este proceso. Un proceso que esté ocupando el 100% sería el culpable de que el sistema vaya lento. Esto no es necesariamente malo. Simplemente nos dice qué proceso está acaparando el micro y por lo tanto está ralentizando al resto del sistema. Debemos ser nosotros los que veamos si este uso intensivo es normal o no.
- TIME: Nos indica el tiempo de ejecución. Es decir, el tiempo real que ese programa se está ejecutando, con respecto al tiempo que veríamos cronómetro en mano, por decirlo de una forma sencilla.
- #TH: Número de Threats o Hilos en ese proceso y los que están activos. Esto es un parámetro muy útil en caso de que estemos investigando un servidor de aplicaciones o de ficheros, por ejemplo.
- #RSIZE: El uso de memoria RAM que está haciendo el proceso.
- USER: El usuario propietario de este proceso.
En algunas condiciones, podemos necesitar saber otros parámetros, por lo que recomiendo, como siempre, la atenta lectura del manual de top. Si nos instalamos el comando desde los MacPorts, tendremos un top más similar al de Linux.
Monitor de actividad
Si lo tuyo es el modo gráfico, usando la utilidad de serie en nuestro OSX «Monitor de Actividad», tendremos una información similar a la de ofrecida por top, pero con un interfaz un poco más agradable.
A partir de esta pantalla principal, podemos ver el listado de procesos un poco más simplificado que en top, pero con el identificador de proceso, el nombre del mismo, el porcentaje de CPU, los subprocesos o threats derivados del mismo, el uso de RAM, si el proceso usa o no 64 bits y el tamaño de memoria virtual que usa (no necesariamente de paginación en disco).
En la parte inferior, tenemos la información global relativa al uso de CPUs, la memoria del sistema, la actividad del disco, el uso del disco y de la red.
Una de las cosas más interesantes de «Monitor de actividad«, además de ofrecernos la información que acabamos de ver, es la de mostrarnos información relativa a cada proceso para que podamos investigar que función de ese proceso está haciendo uso intensivo de los recursos.
Por ejemplo, en caso de que un plugin esté haciendo de las suyas, deberemos seleccionar el proceso, pulsar sobre «Inspeccionar» en la parte superior izquierda y nos presentará esta ventana:
Además de esta información de cada uno de los procesos, podemos ir un poco más allá. Si apretamos en el botón «Muestra», nos enseñará la siguiente información de muestreo:
Con esta información, podemos saber cual de las librerías, funciones, plugins, etc. está provocando un uso anómalo de la CPU por ejemplo, o ver simplemente cosas que no deberían estar ahí (hola bichos!! :D)
Espero que te sea de utilidad 🙂
Saludos,