Los 7 principales comandos de rendimiento de Linux para administradores de sistemas

Hay un puñado de comandos clave de Linux que los administradores de sistemas utilizan a diario para monitorear el rendimiento de sus equipos y servidores, depurar problemas de rendimiento, y predecir y evitar cuellos de botella.

En este artículo, veremos siete comandos que ayudarán a monitorear el uso de la CPU y la memoria, las operaciones de E/S del disco, la actividad de la red, la configuración de puertos, y mucho más. Estos comandos permiten identificar y terminar fácilmente los procesos que consumen más recursos de los esperados y causan problemas de rendimiento. También veremos más de cerca la sintaxis y varias opciones disponibles para que podamos entender mejor estos comandos.

Incluso si no eres un administrador del sistema, aprender estos comandos puede ayudarte a entender mejor lo que está sucediendo con tu equipo.

1. top

top es uno de los comandos más utilizados por los administradores del sistema. En un nivel muy alto, el comando muestra el tiempo de actividad del sistema, el uso de CPU, el número de hilos, el uso de memoria (total, utilizado, libre, etc.), una lista de procesos en ejecución y mucho más. La figura 1 muestra una captura de pantalla de la interfaz de usuario top, tomada en Ubuntu 18.04.

top UI on Ubuntu Fig. 1: UI top en Ubuntu

La figura 1 muestra que hay mucha información aquí, además de muchas opciones para filtrar la lista de tareas, terminar procesos, ordenar la lista y más. Por ejemplo, podemos ordenar la lista de tareas por las columnas %CPU o %MEM para averiguar fácilmente qué procesos consumen más CPU o más memoria. Utiliza estos comandos para ordenar las tareas por porcentaje de memoria o CPU:

top -o +%MEM
top -o +%CPU

La figura 2 muestra los procesos ordenados por el porcentaje de memoria utilizada en orden descendente.

Task area sorted by percentage of memory used Fig. 2: área de tareas ordenada por porcentaje de memoria utilizada

La clasificación por uso de CPU o consumo de memoria nos permite identificar los procesos que podrían estar causando problemas de rendimiento. De esta forma, podemos terminar fácilmente esos procesos desde la misma interfaz de usuario top.

2. vmstat

vmstat dice todo lo que necesitamos saber sobre la memoria virtual. El sistema comienza a utilizar la memoria virtual cuando se queda sin memoria física. Por lo tanto, la memoria virtual siempre será cero al principio. Junto con las estadísticas de memoria virtual, vmstat nos da mucha más información sobre procesos del sistema, interrupciones, operaciones de E/S de bloque, discos, paginación, programación de CPU y más.

La figura 3 muestra la salida de vmstat sin introducir ninguna opción. El comando es:

vmstat
vmstat output Fig. 3: salida de vmstat

Como puedes ver, no es tan densa como la UI top. Sin embargo, con unas pocas opciones, podemos obtener toda la información que necesitamos. Introducir la opción A nos da la información de memoria activa e inactiva, tal como se muestra en la figura 4. El comando es:

vmstat -a
vmstat -a output Fig. 4: salida de vmstat -a

Introducir la opción S nos dará toda la información que necesitamos sobre la programación de CPU, como se ve en la figura 5. El comando es:

vmstat -s
vmstat -s output Fig. 5: salida de vmstat -s

3. lsof

En Linux, todo depende de los archivos. Los adaptadores de red, e incluso cualquier accesorio USB que conectemos, se controlan mediante archivos. Por lo tanto, cualquier problema con el hardware o software en un equipo Linux tiene que ser depurado usando archivos. El comando lsof es útil para ver rápidamente la lista de archivos abiertos y procesos asociados.

La figura 6 muestra una lista truncada de la salida del comando lsof. Esta tabla nos da mucha información, incluyendo el comando utilizado para ejecutar el proceso que posee el archivo, el PID, el usuario que posee el proceso, el tipo y tamaño del archivo, y más.

lsof output Fig. 6: salida de lsof

Podemos utilizar varias opciones con el comando para filtrar los archivos para un usuario en particular o los archivos utilizados por un puerto determinado, y así sucesivamente. Esto incluye:

  • Comando para filtrar los archivos por propietario: lsof -u root
  • Comando para filtrar los archivos de procesos que escuchan un puerto determinado: lsof -i TCP:22

La figura 7 muestra la lista de archivos abiertos y propiedad del usuario root.

lsof with user filter Fig. 7: lsof con filtro de usuario

4. tcpdump

Para depurar problemas de red o comprobar el tráfico de cualquier aplicación o servicio específico en los equipos, utiliza el comando tcpdump. La figura 8 muestra una captura de pantalla de la salida del comando.

tcpdump output Fig. 8: salida de tcpdump

Como se ve en la captura de pantalla, tcpdump proporciona la IP de origen, la IP de destino, el tipo de protocolo utilizado, la cantidad de bytes transferidos y más. Esta información es útil cuando se intenta rastrear una llamada de red o comprobar si hay actividad de red inusual.

Este comando también es útil para comprobar si un paquete o servicio está haciendo llamadas a hosts o direcciones IP no autorizadas. Si es así, también comprueba si se comparten datos confidenciales no autorizados que no deberían compartirse o si se están descargando paquetes adicionales que podrían resultar en riesgos de seguridad.

tcpdump for port 443 Fig. 9: tcpdump para el puerto 443

5. netstat

El comando netstat se utiliza para identificar puertos abiertos, conexiones a direcciones IP externas y el estado de la conexión. La figura 10 muestra una captura de pantalla de la salida del comando.

netstat output Fig. 10: salida de netstat

El comando proporciona el protocolo utilizado, las direcciones IP locales y externas, y el estado de la conexión. Esto nos ayuda a averiguar si un proceso tiene todos sus puertos abiertos y si se están utilizando o no. Esto puede ayudar a depurar muchos problemas de red.

Este comando también ayuda a depurar posibles problemas de seguridad de la red. Se han reportado muchos casos de brechas en los que se ha abierto un puerto de red en la Internet pública, lo que lleva a un ataque. Por lo tanto, cada vez que instalamos o implementamos un nuevo servicio, debemos asegurarnos de que no haya puertos innecesariamente abiertos que puedan resultar en riesgos de seguridad.

Al utilizar netstat, también podemos comprobar la tabla de enrutamiento de red. La opción para hacerlo es nr, como se ilustra en la figura 11.

netstat -nr output Fig. 11: salida de netstat -nr

6. iostat

Como ya hemos mencionado, todo en un equipo Linux se controla mediante archivos. Estos se escriben en los discos conectados al equipo. Siempre que se ejecuta un proceso, este consume ancho de banda del disco. En otras palabras, cada proceso realiza un número de operaciones de E/S (entrada/salida) cada segundo. Y al igual que otros recursos, hay un límite para este ancho de banda.

iostat se utiliza para monitorear dicha actividad de E/S en todos los discos y particiones de un equipo. También proporciona la utilización de la CPU para tales operaciones. Al usar iostat , podemos decidir si necesitamos modificar la configuración del sistema para permitir operaciones de E/S mejores o equilibradas. La Figura 12 muestra la salida de iostat en un equipo Ubuntu 18.04.

iostat output Fig. 12: salida de iostat

Como puedes ver, la primera sección de la salida es el uso promedio de la CPU dividido en secciones. Esto incluye el espacio del usuario, el espacio del sistema, el robo de CPU, la inactividad de CPU y la espera de E/S. La columna %iowait nos indica si la CPU está perdiendo mucho tiempo esperando a que se completen las operaciones de E/S. Si el número es alto aquí, esto indicaría que la E/S es lenta o está siendo retenida en algún otro proceso.

La siguiente sección enumera todos los dispositivos conectados al equipo, las TPS (transferencias por segundo) correspondientes, los kilobytes de lectura y escritura, y mucho más. Estos números nos indicarán si se requiere un ajuste adicional para mejorar el rendimiento de E/S.

7. iotop

Al igual que usaríamos el comando top para monitorear procesos, podemos usar iotop para monitorear todos los hilos que están realizando operaciones de E/S y el ancho de banda que consumen.

iotop output Fig. 13: salida de iotop

La sección superior izquierda de esta tabla nos da la lectura total y real del disco, mientras que la sección superior derecha provee la escritura total y real del disco. Bajo estas secciones, tenemos una lista de hilos que se ejecutan en el equipo junto con el ID de hilo (TID), la prioridad del hilo, el propietario (usuario) del hilo, el ancho de banda de lectura y escritura del disco, el porcentaje de tiempo dedicado al intercambio, el porcentaje de tiempo dedicado a la espera de E/S, y el comando para el hilo.

Por otro lado, también notarás que no todos estos hilos realizan operaciones de E/S. Para filtrar la lista para mostrar solo esos hilos, utiliza la opción O u Only:

iotop -o

o

iotop --only

A continuación, la Figura 14 muestra la salida de estos comandos.

iotop -o output Fig. 14: salida de iotop -o

Este comando nos ayuda a ver la lista de hilos que ocupan demasiado ancho de banda de E/S y hacen que otros hilos esperen la E/S. Esto obstruye otros procesos o usuarios.

Was this article helpful?
Supervise su entorno Linux

Verifique el estado y la disponibilidad de sus servidores Linux para obtener un rendimiento óptimo con la herramienta de monitoreo de Linux de Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us