Inicio

sábado, 2 de septiembre de 2017

Monitoreo de procesos con "top"


top


Top, es un sencillo pero potente monitor de procesos que nos permite obtener una lectura en tiempo real de una cantidad diversa de información de nuestro GNU/Linux y del consumo de recursos que este esta llevando a cabo, entre las que se encuentran el consumo de memoria, de los CPUs, la cantidad de usuarios, etc.

Esta potente herramienta viene instalada por defecto en la mayoría de las distribuciones.

Sintaxis


La sintaxis de "top" trabaja de la siguiente manera:


Comando "top" y su interfaz en consola


Al ejecutar top en consola nos se nos imprime en pantalla la siguiente interfaz:

Analicemos paso a paso la información que nos proporciona.
Para esto, dividiremos el análisis en dos partes, donde la primera sera el encabezado de la interfaz que nos brinda información general y luego el analizaremos el cuerpo, que nos dará información mucho mas detallada.


Encabezado



La primera linea del encabezado nos muestra el tiempo de actividad y carga media del sistema:

-La hora actual: 18:22:49 
-Tiempo que ha estado el sistema encendido: up 13:40
-Numero de usuarios activos: 2 users, (root y cristian)
-Carga media en intervalos de 5, 10 y 15 minutos respectivamente: load average: 0,04, 0,10, 0,22

La segunda linea del encabezado nos muestra el total de tareas, procesos, y el estado de los procesos.

-Total de procesos: 230 total

-Total de procesos Running (en ejecución): 2 running

Es el numero de procesos ejecutándose actualmente o preparados para ejecutarse.

-Total de procesos sleeping (Dormidos): 299 sleeping

Es el numero de procesos dormidos esperando que ocurra algo (depende del proceso) para ejecutarse.

-Total de procesos stopped (detenidos): 0 stopped

Son los procesos cuya ejecución esta detenida.

-Total de procesos zombie: 0 zombie

Son los procesos que no está siendo ejecutado. Estos procesos se quedan en este estado cuando el proceso padre que los inicio muere.

Las lineas siguientes nos muestra los porcentajes de uso del procesador según el numero de núcleos.

%Cpu0
%Cpu1
%Cpu2
%Cpu3

Las ultimas dos lineas nos brindan información sobre las memorias de lectura y de intercambio SWAP respectivamente.

En el primer caso apreciamos el porcentaje de consumo de Memoria RAM (43.1%) sobre el tamaño de la memoria (7748M)

La misma lectura se hace sobre el ultimo indicador que pertenece a la memoria de intercambio SWAP.

En mi caso no tengo, por ello sus porcentaje y tamaño están en 0.

Cuerpo



Identifiquemos cada una de las columnas:

PID: es una abreviatura de "process ID" mejor conocido por "identificador de proceso". Cada proceso tiene un identificador único que es utilizado para realizar acciones sobre los procesos que identifica, como por ejemplo: matar un proceso.

USER: Identifica al usuario propietario del proceso.

PR: Es el numero de prioridad que se le da al proceso. Si nos indica RT es que se está ejecutando en tiempo real. 
El rango de prioridad disponible es de -20 a 20, siendo -20 la mayor prioridad y 20 la menor.

NI: Asigna la prioridad. Si tiene un valor bajo (hasta -20) quiere decir que tiene más prioridad que otro con valor alto (hasta 20).

VIRT: Es la cantidad de memoria virtual utilizada por el proceso.

RES: Es la cantidad de memoria RAM física que utiliza el proceso.

%CPU: Es el porcentaje de CPU utilizado desde la última actualización.

%MEM: Es el porcentaje de memoria física utilizada por el proceso desde la última actualización.

TIME+: Es el tiempo total de CPU que ha usado el proceso desde su inicio.

S (ESTADO): Nos indica el estado del proceso.

Preparado (R): El proceso está esperando a que el sistema operativo le asigne un tiempo de CPU.

Ejecutando (O): Sólo uno de los procesos preparados se está ejecutando en cada momento.

Suspendido (S): Un proceso se encuentra suspendido si no entra en el reparto de CPU, ya que se encuentra esperando algún tipo de evento (por ejemplo, la recepción de una señal software o hardware). En cuanto dicho evento se produce, el proceso pasa a formar parte del conjunto de procesos preparados.

Parado (T): Un proceso parado tampoco entra en el reparto de CPU, pero no porque se encuentre suspendido esperando algún evento. En este caso, sólo pasarán a estar preparados cuando reciban una señal determinada que les permita continuar.

Zombie (Z): Todo proceso al finalizar avisa a su proceso padre, para que éste elimine su entrada de la tabla de procesos. En el caso de que el padre, por algún motivo, no reciba esta comunicación no lo elimina de la tabla de procesos. En este caso, el proceso hijo queda en estado zombie, no está consumiendo CPU, pero sí continua consumiendo recursos del sistema.

COMMAND: Es el comando utilizado para iniciar el proceso.

Opciones de "top"


Top, también nos permite por medio de su sintaxis, hacer uso de opciones que nos van a dejar ser un pocos mas selectos en las peticiones realizadas.

"top -u usuario"

Muestra los procesos que están corriendo con ese usuario y sus valores

Procesos que pertenecen al usuario "root"


Procesos que pertenecen al usuario "cristian"


"top -p PID"

En esta opción indicamos el procesos que deseamos monitorear y se nos mostrara únicamente el proceso seleccionado y sus valores.


"top -n refrescar"

Refrescar es la cantidad de interacciones que va a tener el comando y luego se cerrara.

Por ejemplo: "top -n4" Se ejecutara top, refrescara las instancias de los procesos 4 veces y luego se cerrara.

"top -d numero"

Donde numero es el tiempo en segundos que va a esperar top para recargar la lista de procesos.

Opciones en ejecución

Dentro de "top" podemos interactuar con varias opciones. A continuación se exponen las mas relevantes a nivel usuario.
-N Ordena los procesos por PID
-A Ordena los procesos por aparición, primero se encuentran los mas nuevos
-P Ordena los procesos por uso de CPU, (esta opción inicia por default)
-M Ordena los procesos por memoria residente
-T Ordena los procesos por tiempo.

Espero que sea de utilidad
Saludos, Cristian.