Comando TOP en Linux : ¿Cómo funciona?

En este artículo vamos a ver como funciona el comando TOP en Linux.

Este comando nos ayuda a comprender los procesos de ejecución del sistema (entre otras cosas) en tiempo casi real y se encuentra dentro de las utilidades más destacables para un gestor. ¡Vamos a descubrir como trabaja TOP!

Comando TOP en Linux

A partir de aquí encontrarás la explicación del comando, formas de uso, sintaxis correcta, etc.

Ejecución del comando

Abrimos una consola y sencillamente ejecutamos el comando:

top

Veremos una interfaz de trabajo en modo texto que se va a ir refrescando cada 3 segundos. Esta interfaz nos muestra un resumen del estado de nuestro sistema y la lista de procesos que estan funcionando. La salida (output) que obtengo en mi servidor es la siguiente:

top - 15:18:52 up 6 days, 19:20,  1 user,  load average: 0.00, 0.03, 0.05
Tasks: 135 total,   1 running, 133 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.4 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.2 si,  0.7 st
KiB Mem :  8008868 total,  5865980 free,  1114700 used,  1028188 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  5956412 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    9 root      20   0       0      0      0 S   0.3  0.0  54:09.42 rcu_sched
 3749 root      20   0  162252   6760   5092 S   0.3  0.1   0:00.34 sshd
 3794 root      20   0  113180   1576   1320 S   0.3  0.0   0:00.19 bash
 4118 root      20   0   62816  16808   2736 S   0.3  0.2   3:10.58 tailwatchd
 4248 root      20   0  160100   2228   1556 R   0.3  0.0   0:00.02 top
14217 root      20   0  587276  37856  29112 S   0.3  0.5   0:52.72 php-fpm
18905 mysql     20   0 1638776 179132   9116 S   0.3  2.2  50:59.11 mysqld
    1 root      20   0  191144   4108   2604 S   0.0  0.1   5:44.43 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.23 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:18.12 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S   0.0  0.0   0:04.05 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:01.77 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:01.45 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:03.78 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:20.37 ksoftirqd/1
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
   17 root      rt   0       0      0      0 S   0.0  0.0   0:01.95 watchdog/2
   18 root      rt   0       0      0      0 S   0.0  0.0   0:02.82 migration/2
   19 root      20   0       0      0      0 S   0.0  0.0   0:14.93 ksoftirqd/2
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H
   22 root      rt   0       0      0      0 S   0.0  0.0   0:01.42 watchdog/3
   23 root      rt   0       0      0      0 S   0.0  0.0   0:06.48 migration/3

Análisis

Es de vital importancia comprender la salida del comando.

1. Tiempo de funcionamiento y media de carga del sistema

En la primera línea nos muestra:

  • Hora de hoy.
  • El tiempo que ha estado el sistema encendido.
  • Número de individuos haciendo uso (root).
  • Además de mostrar el promedio de carga media en minutos.

2. Tareas

Tasks: 145 total,   1 running, 142 sleeping,   1 stopped,   1 zombie

La segunda línea nos muestra el total de tareas y procesos, los cuales tienen la posibilidad de estar en diferentes estados. Yo lo tengo en inglés pero perfectamente tu lo podrías tener en español:

  • Running: Son los procesos que están funcionando en estos instantes o que se encuentran preparados para ejecutarse.
  • Sleeping: Son los procesos dormidos aguardando que ocurra algo para ejecutarse.
  • Stopped: Son los procesos los cuales su ejecución ha sido detenida.
  • Zombie: Cuándo el proceso no esta en funcionamiento. Estos procesos se quedan en este estado cuando el desarrollo que los comenzó muere (padre).

3. Estados de la CPU

%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.3 st
  • us: tiempo de CPU de usuario.
  • sy: tiempo de  de CPU del kernel.
  • id: tiempo de CPU en procesos inactivos.
  • wa: tiempo de espera para los procesos de la CP.
  • hi: interrupciones de hardware.
  • si: tiempo de CPU empleado en interrupciones a nivel de software.

4. Memoria física

KiB Mem :  8008868 total,  5880240 free,  1097232 used,  1031396 buff/cache
  • Memoria total.
  • Memoria usada.
  • Memoria libre.
  • Memoria usada por buffer.

5. Memoria virtual

KiB Mem :  8008868 total,  5865364 free,  1112092 used,  1031412 buff/cache
  • Memoria total.
  • Memoria utilizada.
  • Memoria libre.
  • Memoria en archivos temporales.

6. Columnas

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    9 root      20   0       0      0      0 S   0.3  0.0  54:09.42 rcu_sched
 3749 root      20   0  162252   6760   5092 S   0.3  0.1   0:00.34 sshd
 3794 root      20   0  113180   1576   1320 S   0.3  0.0   0:00.19 bash
 4118 root      20   0   62816  16808   2736 S   0.3  0.2   3:10.58 tailwatchd
 4248 root      20   0  160100   2228   1556 R   0.3  0.0   0:00.02 top
14217 root      20   0  587276  37856  29112 S   0.3  0.5   0:52.72 php-fpm
18905 mysql     20   0 1638776 179132   9116 S   0.3  2.2  50:59.11 mysqld
    1 root      20   0  191144   4108   2604 S   0.0  0.1   5:44.43 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.23 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:18.12 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S   0.0  0.0   0:04.05 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:01.77 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:01.45 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:03.78 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:20.37 ksoftirqd/1
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
   17 root      rt   0       0      0      0 S   0.0  0.0   0:01.95 watchdog/2
   18 root      rt   0       0      0      0 S   0.0  0.0   0:02.82 migration/2
   19 root      20   0       0      0      0 S   0.0  0.0   0:14.93 ksoftirqd/2
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H
   22 root      rt   0       0      0      0 S   0.0  0.0   0:01.42 watchdog/3
   23 root      rt   0       0      0      0 S   0.0  0.0   0:06.48 migration/3
  • PID: es el identificador de desarrollo. Cada desarrollo tiene un identificador exclusivo.
  • USER (USUARIO): usuario dueño del desarrollo.
  • PR: prioridad del desarrollo. Si pone RT es que se está corriendo en el mismo instante.
  • NI: asigna la prioridad. Si tiene un valor bajo (hasta -20) significa que tiene más prioridad que otro con valor prominente (hasta 19).
  • VIRT: proporción de memoria virtual usada por el desarrollo.
  • RES: proporción de memoria RAM física que usa el desarrollo.
  • SHR: memoria compartida.
  • S (ESTADO): estado del desarrollo.
  • %CPU: porcentaje de CPU central de procesamiento usado desde la más reciente renovación.
  • %MEM: porcentaje de memoria física usada por el desarrollo desde la más reciente renovación.
  • TIME+ (HORA+): tiempo total de CPU de procesamiento que ha utilizado el desarrollo desde su inicio.
  • COMMAND: comando usado para comenzar el desarrollo.

Comando TOP Linux

¿Este artículo acerca del comando TOP en Linux te ha sido de utilidad? En ese caso una valoración o un comentario vendría muy pero que muy bien.