La monitorización de la carga es una de las tareas más críticas, especialmente si se trata de servidores. No sólo te da una idea de cómo se están utilizando los recursos de tu sistema, sino que también te ayuda a diagnosticar problemas relacionados con el rendimiento. En este artículo discutiremos cómo realizar la monitorización de la carga en Linux utilizando la herramienta atop.
Nota: todos los ejemplos utilizados en el artículo han sido probados en Ubuntu 14.04.
Atop
Según su página man, la herramienta de línea de comandos atop es un monitor interactivo para ver la carga en un sistema Linux. Muestra cómo están ocupados los recursos de hardware de tu sistema, incluyendo la cpu, la memoria, el disco y la red, todo ello desde el punto de vista del rendimiento. No sólo esto, sino que también muestra qué procesos son responsables de la carga indicada.
Nota: la carga de disco se muestra si por proceso “storage accounting” está activo en el kernel o si se ha instalado el parche del kernel “cnt”. Del mismo modo, la carga de red sólo se muestra por proceso si se ha instalado el parche del kernel “cnt”.
Descarga e instalación
Los usuarios de sistemas basados en Debian (como Mint y Ubuntu) pueden descargar e instalar la herramienta mediante el siguiente comando:
sudoapt-get install atop
Los que estén en otras distribuciones de Linux pueden utilizar sus respectivas herramientas de gestión de paquetes. Por ejemplo, yum en el caso de Red Hat. También se puede descargar la herramienta desde su página web oficial.
Salida de Atop
Una vez instalada, puedes ejecutar la herramienta ejecutando el siguiente comando desde la línea de comandos:
sudo atop
Aquí está la salida de ejemplo:
Como puedes ver, es mucha información que se divide a grandes rasgos en dos partes: Nivel de sistema y Nivel de proceso. La primera consiste en las siguientes líneas de salida:
PRC: Esta línea contiene el tiempo total de CPU consumido en modo sistema (‘sys’) y en modo usuario (‘user’), el número total de procesos presentes en este momento (‘#proc’), el número total de hilos presentes en este momento en estado ‘running’ (‘#trun’), “durmiendo interrumpible” (“#tslpi”) y “durmiendo ininterrumpible” (“#tslpu”), el número de procesos zombis (“#zombie”), el número de llamadas al sistema de clones (“clones”), y el número de procesos que terminaron durante el intervalo (“#exit”, que muestra “?’ si no se utiliza la contabilidad de procesos).
CPU: Esta línea contiene el porcentaje de tiempo de CPU gastado en modo kernel por todos los procesos activos (‘sys’), en modo usuario (‘user’) para todos los procesos activos (incluyendo los procesos que se ejecutan con un valor nice mayor que cero), para el manejo de interrupciones (‘irq’) incluyendo softirq, así como el porcentaje de tiempo de cpu no utilizado mientras ningún proceso estaba esperando la E/S del disco (‘idle’) y mientras al menos un proceso estaba esperando la E/S del disco (‘wait’). En el caso de un sistema multiprocesador, se muestra una línea adicional para cada procesador individual (con ‘cpu’ en minúsculas), ordenada por actividad.
CPL: Esta línea contiene información sobre la carga de la CPU: el número de hilos que están disponibles para ejecutarse en una CPU (es decir, parte de la cola de ejecución) o que están esperando la E/S del disco, el número de cambios de contexto (‘csw’), el número de interrupciones atendidas (‘intr’) y el número de CPUs disponibles.
MEM: Esta línea contiene información relacionada con el consumo de memoria – la cantidad total de memoria física (‘tot’), la cantidad de memoria que está actualmente libre (‘free’), la cantidad de memoria en uso como caché de páginas (‘cache’), la cantidad de memoria dentro de la caché de páginas que tiene que ser vaciada al disco (‘dirty’), la cantidad de memoria utilizada para los metadatos del sistema de archivos (‘buff’) y la cantidad de memoria que está siendo utilizada para los mallocs del núcleo (‘slab’).
SWP: Esta línea contiene la cantidad total de espacio de intercambio en el disco (‘tot’) y la cantidad de espacio de intercambio libre (‘free’), el espacio de memoria virtual comprometido (‘vmcom’), y el límite máximo del espacio comprometido (‘vmlim’)
DSK: Esta línea contiene información relacionada con la utilización del disco – la porción de tiempo que la unidad estuvo ocupada manejando peticiones (‘busy’), el número de peticiones de lectura emitidas (‘read’), el número de peticiones de escritura emitidas (‘write’), el número de KiBytes por lectura (‘KiB/r’), el número de KiBytes por escritura (‘KiB/w’), el número de MiBytes por segundo de rendimiento para las lecturas (“MBr/s”), el número de MiBytes por segundo de rendimiento para las escrituras (“MBw/s”), la profundidad media de la cola (“avq”) y el número medio de milisegundos que necesita una solicitud (“avio”) para la búsqueda, la latencia y la transferencia de datos.
NET
: Esta es la información relacionada con la utilización de la Red (TCP/IP) – se muestra una línea para la actividad de la capa de transporte (TCP y UDP), una línea para la capa IP, y una línea por interfaz activa.A la información a nivel de sistema le sigue la información a nivel de proceso, que como su nombre indica detalla la información relacionada con los procesos de los que ha cambiado la utilización de recursos durante el último intervalo (el intervalo por defecto es de 10 segundos).
Un punto importante que vale la pena mencionar es que atop utiliza colores (rojo, cian y más) para indicar la criticidad del consumo de recursos a nivel de sistema. Por ejemplo, cuando un recurso supera su porcentaje de ocupación crítica, toda la línea de la pantalla se colorea de ROJO.
Nota
: consulte la página man del comando para obtener más detalles sobre la salida del comando.Comandos interactivos
Puedes controlar la salida del comando atop desde el teclado. Por ejemplo, presione m para mostrar la salida relacionada con la memoria, d para la salida relacionada con el disco, n para la salida relacionada con la red, v para varias características del proceso, c para la línea de comandos del proceso, etc.
Aquí está la captura de pantalla de la información a nivel de proceso producida por el comando atop cuando se presionó c:
Como puede ver, la línea de comandos del proceso se muestra en la salida.
Conclusión
Atop es un comando de monitorización de carga muy útil en Linux que no sólo proporciona una gran cantidad de información sobre los recursos del sistema, sino también varias formas de personalizar y controlar su salida. Se recomienda revisar la página man del comando para aprender más sobre él.