Funcionamiento del comando TOP en Linux
A la hora de realizar el mantenimiento y monitorización de un servidor GNU/Linux (o de nuestro propio ordenador) hay comandos que son de gran ayuda e importancia. El comando top nos ayuda a conocer los procesos de ejecución del sistema (y más cosas) en tiempo real y es una de las herramientas más importantes para un administrador. En este artículo vamos a ver cómo funciona el comando top para que conozcáis a fondo vuestro ordenador. Actualmente utilizo Linux Mint 17, pero vale para cualquier distribución.
Ejecutar el comando
Abrimos una consola y simplemente ejecutamos el comando:
top
Nos va a aparecer una interfaz en modo texto que se va a ir actualizando cada 3 segundos. Muestra un resumen del estado de nuestro sistema y la lista de procesos que se están ejecutando. La salida que obtengo en mi ordenador es la siguiente:
top - 11:36:06 up 1:03, 2 users, load average: 0,38, 0,31, 0,32
Tareas: 249 total, 2 ejecutar, 247 hibernar, 0 detener, 0 zombie
%Cpu(s): 1,1 usuario, 0,4 sist, 0,0 adecuado, 98,4 inact, 0,0 en espera, 0,0 hardw int, 0,0 softw int, 0,0 robar tiempo
KiB Mem: 16348032 total, 4008256 used, 12339776 free, 275200 buffers
KiB Swap: 16690172 total, 0 used, 16690172 free. 1255640 cached Mem
PID USUARIO PR NI VIRT RES SHR S %CPU %MEM HORA+ ORDEN
4436 mario 20 0 982792 154512 91896 S 3,0 0,9 0:56.36
spotify 4807 mario 20 0 902092 240028 74752 S 2,3 1,5 0:21.27 chrome
3072 mario 20 0 1138196 282700 110108 S 2,0 1,7 2:14.22 chrome
1608 root 20 0 404816 138800 55904 S 1,3 0,8 2:39.46 Xorg
2649 mario 20 0 1978388 258592 93712 S 1,0 1,6 2:06.50 cinnamon
4017 mario 20 0 1027028 355312 80784 S 1,0 2,2 1:24.25 chrome
2404 mario 9 -11 512236 12708 9988 S 0,7 0,1 0:17.32 pulseaudio
4879 mario 20 0 718964 52856 31332 S 0,7 0,3 0:02.09 chrome
2685 mario 20 0 2421212 119344 32568 S 0,3 0,7 0:16.68 dropbox
3206 mario 20 0 864884 168212 56048 S 0,3 1,0 0:43.57 chrome
4762 mario 20 0 622428 33680 23552 S 0,3 0,2 0:01.74 gnome-terminal
4849 root 20 0 0 0 0 S 0,3 0,0 0:00.09 kworker/1:2
1 root 20 0 33888 4368 2600 S 0,0 0,0 0:01.27 init
2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0,0 0,0 0:00.01 ksoftirqd/0
5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 R 0,0 0,0 0:01.99 rcu_sched
Análisis
Es importante entender la salida del comando. Precisamente para eso estoy escribiendo el artículo. Voy a hacer el análisis línea por línea y luego en cada columna.
1. Tiempo de actividad y carga media del sistema
top - 11:36:06 up 1:03, 2 users, load average: 0,38, 0,31, 0,32
En la primera línea nos muestra:
- Hora actual.
- Tiempo que ha estado el sistema encendido.
- Número de usuarios (mario y root).
- Carga media en intervalos de 5, 10 y 15 minutos respectivamente.
2. Tareas
Tareas: 249 total, 2 ejecutar, 247 hibernar, 0 detener, 0 zombie
La segunda línea muestra el total de tareas y procesos, los cuales pueden estar en diferentes estados. Yo lo tengo en castellano y la traducción es un poco pobre, así que lo explico en inglés:
- Running (ejecutar): procesos ejecutándose actualmente o preparados para ejecutarse.
- Sleeping (hibernar): procesos dormidos esperando que ocurra algo (depende del proceso) para ejecutarse.
- Stopped (detener): ejecución de proceso detenida.
- Zombie: el proceso no está siendo ejecutado. Estos procesos se quedan en este estado cuando el proceso que los ha iniciado muere (padre).
3. Estados de la CPU
%Cpu(s): 1,1 usuario, 0,4 sist, 0,0 adecuado, 98,4 inact, 0,0 en espera, 0,0 hardw int, 0,0 softw int, 0,0 robar tiempo
Esta línea nos muestra los porcentajes de uso del procesador diferenciado por el uso que se le de.
- us (usuario): tiempo de CPU de usuario.
- sy (sistema): tiempo de CPU del kernel.
- id (inactivo): tiempo de CPU en procesos inactivos.
- wa (en espera): tiempo de CPU en procesos en espera.
- hi (interrupciones de hardware): interrupciones de hardware.
- si (interrupciones de software): tiempo de CPU en interrupciones de software.
4. Memoria física
KiB Mem: 16348032 total, 4008256 used, 12339776 free, 275200 buffers
- Memoria total.
- Memoria utilizada.
- Memoria libre.
- Memoria utilizada por buffer.
5. Memoria virtual
KiB Swap: 16690172 total, 0 used, 16690172 free. 1255640 cached Mem
- Memoria total.
- Memoria usada.
- Memoria libre.
- Memoria en caché.
6. Columnas
Ahora vamos a ver las diferentes columnas que nos encontramos al ejecutar el comando.
PID USUARIO PR NI VIRT RES SHR S %CPU %MEM HORA+ ORDEN
4436 mario 20 0 982792 154512 91896 S 3,0 0,9 0:56.36 spotify
4807 mario 20 0 902092 240028 74752 S 2,3 1,5 0:21.27 chrome
3072 mario 20 0 1138196 282700 110108 S 2,0 1,7 2:14.22 chrome
1608 root 20 0 404816 138800 55904 S 1,3 0,8 2:39.46 Xorg
- PID: es el identificador de proceso. Cada proceso tiene un identificador único.
- USER (USUARIO): usuario propietario del proceso.
- PR: prioridad del proceso. Si pone RT es que se está ejecutando en tiempo real.
- NI: asigna la prioridad. Si tiene un valor bajo (hasta -20) quiere decir que tiene más prioridad que otro con valor alto (hasta 19).
- VIRT: cantidad de memoria virtual utilizada por el proceso.
- RES: cantidad de memoria RAM física que utiliza el proceso.
- SHR: memoria compartida.
- S (ESTADO): estado del proceso.
- %CPU: porcentaje de CPU utilizado desde la última actualización.
- %MEM: porcentaje de memoria física utilizada por el proceso desde la última actualización.
- TIME+ (HORA+): tiempo total de CPU que ha usado el proceso desde su inicio.
- COMMAND: comando utilizado para iniciar el proceso.
Para ver el manual con las distintas opciones de uso de este comando, podéis introducir por consola: man top
Esto ha sido todo por este tutorial. Espero que os haya servido de ayuda y, si tenéis alguna sugerencia sobre artículos con otros comandos, sólo tenéis que dejar un comentario.
¡Un saludo!