2.7.4.3.- top: una variante dinámica de ps

Si queremos saber cuanto tiempo de CPU consumen varios procesos los unos respectos a los otros o si quiere descubrir rápidamente qué procesos consumen más tiempo de CPU, disponemos de una herramienta llamada top que están pensada para ello.

top_1

Información que muestra el comando top en una consola bash.

Se trata de un programa en modo de texto, aunque también lo podemos ejecutar en un xterm o ventana similar.

top_xterm

Información que muestra el comando top en una consola xterm.

También tiene variantes GUI, como kpm y gnome-system-monitor. Por defecto top ordena sus entradas por el uso de CPU, actualizando los datos mostrados cada pocos segundos. Esto lo convierte en una herramienta que nos ayuda a localizar procesos descontrolados en sistemas que por lo demás no tienen mucha carga. Estos procesos casi siempre aparecen en la primera o segunda posición y consumen un tiempo de la CPU fuera de lo normal. Debemos acostumbrarnos con los objetivos y los hábitos normales de los programas que se ejecutan en su sistema para realizar estas detecciones; las necesidades legítimas de los distintos programas varían tanto que es imposible ofrecer una regla sencilla para juzgar cuando un proceso consume demasiado tiempo de CPU.

Como muchos comandos de Linux, top acepta varias opciones. A continuación listamos las más útiles:

  • -d retardo.- Esta opción especifica el retardo entre actualizaciones que, normalmente, es de 5 segundos.
  • -p pid.- .-Si deseamos monitorizar procesos específicos, puede listarlos utilizando esta opción. Necesitara las PID, que se puedan obtener mediante ps, tal y como vimos anteriormente. Podemos especificar hasta 20 PID utilizando esta opción varias veces, una para cada PID.top_2
  • -n iter.- Podemos decirle a top que nos muestre un número concreto de actualizaciones (iter) y que, luego, se cierre (normalmente top sigue actualizándose hasta el cierre del programa).
  • -b.- Esta opción permite el modo por lotes, en el que top no emplea los comando normales de actualización de la pantalla. Podría utilizarlo para registrar en un fichero el uso de CPU de los programas indicados, por ejemplo.

Con top cuando está en ejecución, podemos introducir cualquiera de los comandos de una única letra, que son:

  • h o ? .- Este atajo del teclado nos muestra la ayuda.top_help
  • k .- Podemos destruir un proceso con este comando. El programa top nos pedirá un número de PID, si se puede destruir, el proceso lo destruirá (en breve comentaremos otras maneras de destruir un proceso).

    Notese que encima de la columna de títulos aparece el cursor para introducir el PID a destruir.

    Notese que encima de la columna de títulos aparece el cursor para introducir el PID a destruir.

  • q .- Esta opción sale de top
  • r .- Este comando nos permite cambiar la prioridad de un proceso. Tendrá que introducir el número de PID y un nuevo valor para la prioridad (un valor positivo la reducirá y uno negativo la incrementará, suponiendo que partimos de la prioridad por defecto, 0)

    Encima de la línea de títulos aparece el prompt para ingresar la prioridad.

    Encima de la línea de títulos aparece el prompt para ingresar la prioridad.

  • s .- Este comando cambia la velocidad de actualización de los datos mostrados. Se introduce la velocidad en segundos.

    Encima de la barra de títulos aparece el prompt que nos pide la velocidad (en segundos).

    Encima de la barra de títulos aparece el prompt que nos pide la velocidad (en segundos).

  • P .- Este comando hace que los datos mostrados se ordenen por el uso de la CPU, que es la configuración por defecto.
  • M .- Este comando ordena los datos mostrados por el uso de la memoria."ObservamosPara ver los demás comandos consulte la página man de top.

Uno de los datos que proporciona top es la carga media, que es una medida de la demanda del tiempo de CPU por parte de las aplicaciones.

Vemos tres estimaciones de carga que corresponde a la carga media actual y a dos medidas actuales.

Vemos tres estimaciones de carga que corresponde a la carga media actual y a dos medidas actuales.

Un sistema en el que los programas no demandan tiempo de CPU posee una carga media de 0. Un sistema con un programa que ejecuta tareas que hacen uso intensivo de la CPU tiene una carga media de 1.

Las cargas medias superiores indican que hay programas que compiten por el tiempo de la CPU. También podemos averiguar la carga media actual a través del comando uptime, que muestra la carga media junto con información sobre el tiempo que lleva el ordenador en ejecución.

uptime

 La carga media puede ser útil para detectar procesos descontrolados. Por ejemplo, si un sistema suele tener una carga media de 0,3 pero, de repente, se sitúa en una carga de 2,5, puede que un par de procesos que están acaparando la CPU se hayan colgado, es decir, que no respondan. A veces los procesos colgados no son los que consumen necesariamente mucho tiempo de CPU. Podemos utilizar top para localizar estos procesos y, si fuera necesario, destruirlos.