GNU/Linux >> Tutoriales Linux >  >> Linux

Introducción a la supervisión y el ajuste del rendimiento de Linux

Este es el primer artículo de nuestra nueva serie sobre supervisión y ajuste del rendimiento de Linux.

Los administradores de sistemas Linux deben ser competentes en la supervisión y el ajuste del rendimiento de Linux. Este artículo brinda una descripción general de alto nivel sobre cómo debemos abordar la supervisión y el ajuste del rendimiento en Linux, y los diversos subsistemas (y métricas de rendimiento) que deben monitorearse.

Para identificar los cuellos de botella del sistema y encontrar soluciones para solucionarlos, debe comprender cómo funcionan varios componentes de Linux. Por ejemplo, cómo el kernel da preferencia a un proceso de Linux sobre otros utilizando valores agradables, cómo se manejan las interrupciones de E/S, cómo funciona la gestión de la memoria, cómo funciona el sistema de archivos de Linux, cómo se implementa la capa de red en Linux, etc. ,

Tenga en cuenta que comprender cómo funcionan varios componentes (o subsistemas) no es lo mismo que saber qué comando ejecutar para obtener un resultado determinado. Por ejemplo, es posible que sepa que el comando "tiempo de actividad" o "superior" proporciona el "promedio de carga". Pero, si no sabe lo que significa y cómo funciona el subsistema de la CPU (o proceso), es posible que no pueda entenderlo correctamente. Comprender los subsistemas es una tarea continua, que aprenderá constantemente todo el tiempo.

En un nivel muy alto, los siguientes son los cuatro subsistemas que deben monitorearse.

  • CPU
  • Memoria
  • E/S
  • Red

1. procesador

Debe comprender las cuatro métricas críticas de rendimiento para la CPU:cambio de contexto, cola de ejecución, utilización de la CPU y promedio de carga.

Cambio de contexto

  • Cuando la CPU cambia de un proceso (o subproceso) a otro, se denomina cambio de contexto.
  • Cuando ocurre un cambio de proceso, el kernel almacena el estado actual de la CPU (de un proceso o subproceso) en la memoria.
  • Kernel también recupera el estado previamente almacenado (de un proceso o subproceso) de la memoria y lo coloca en la CPU.
  • El cambio de contexto es muy esencial para la multitarea de la CPU.
  • Sin embargo, un nivel más alto de cambio de contexto puede causar problemas de rendimiento.

Cola de ejecución

  • La cola de ejecución indica el número total de procesos activos en la cola actual para la CPU.
  • Cuando la CPU está lista para ejecutar un proceso, lo toma de la cola de ejecución según la prioridad del proceso.
  • Tenga en cuenta que los procesos que están en estado de suspensión o en estado de espera de E/S no están en la cola de ejecución.
  • Por lo tanto, una mayor cantidad de procesos en la cola de ejecución puede causar problemas de rendimiento.

Utilización de CPU

  • Esto indica la cantidad de CPU que se está utilizando actualmente.
  • Esto es bastante sencillo y puede ver la utilización de la CPU desde el comando superior.
  • Uso del 100 % de la CPU significa que el sistema está completamente cargado.
  • Por lo tanto, un porcentaje más alto de utilización de la CPU provocará problemas de rendimiento.

Promedio de carga

  • Esto indica la carga de CPU promedio durante un período de tiempo específico.
  • En Linux, se muestra el promedio de carga de los últimos 1, 5 y 15 minutos. Esto es útil para ver si la carga general del sistema aumenta o disminuye.
  • Por ejemplo, un promedio de carga de "0,75 1,70 2,10" indica que la carga del sistema está disminuyendo. 0.75 es el promedio de carga en el último minuto. 1.70 es el promedio de carga en los últimos 5 minutos. 2.10 es el promedio de carga en los últimos 15 minutos.
  • Tenga en cuenta que este promedio de carga se calcula combinando el número total de procesos en la cola y el número total de procesos en el estado de tarea ininterrumpible.

2. Red

  • Una buena comprensión de los conceptos de TCP/IP es útil al analizar cualquier problema de red. Discutiremos más sobre esto en futuros artículos.
  • Para las interfaces de red, debe monitorear la cantidad total de paquetes (y bytes) recibidos/enviados a través de la interfaz, la cantidad de paquetes perdidos, etc.,

3. E/S

  • Espera de E/S es la cantidad de tiempo que la CPU está esperando para E/S. Si ve una espera de E/S alta constante en su sistema, indica un problema en el subsistema del disco.
  • También debe supervisar las lecturas por segundo y las escrituras por segundo. Esto se mide en bloques. es decir, número de bloques de lectura/escritura por segundo. Estos también se conocen como bi y bo (bloquear y bloquear).
  • tps indica el total de transacciones por segundo, que es la suma de rtps (transacciones de lectura por segundo) y wtps (transacciones de escritura por segundo).

4. Memoria

  • Como sabes, la RAM es tu memoria física. Si tiene 4 GB de RAM instalados en su sistema, tiene 4 GB de memoria física.
  • Memoria virtual =espacio de intercambio disponible en el disco + memoria física. La memoria virtual contiene espacio de usuario y espacio de kernel.
  • Usar un sistema de 32 bits o de 64 bits marca una gran diferencia a la hora de determinar cuánta memoria puede utilizar un proceso.
  • En un sistema de 32 bits, un proceso solo puede acceder a un máximo de 4 GB de memoria virtual. En un sistema de 64 bits no existe tal limitación.
  • La memoria RAM no utilizada será utilizada como caché del sistema de archivos por el kernel.
  • El sistema Linux se intercambiará cuando necesite más memoria. es decir, cuando necesita más memoria que la memoria física. Cuando se intercambia, escribe las páginas de memoria menos utilizadas desde la memoria física al espacio de intercambio en el disco.
  • Muchos intercambios pueden causar problemas de rendimiento, ya que el disco es mucho más lento que la memoria física y se necesita tiempo para intercambiar las páginas de memoria de la RAM al disco.

Todos los 4 subsistemas anteriores están interrelacionados. El hecho de que vea un alto nivel de lecturas/segundo, escrituras/segundo o espera de E/S no significa que el problema esté ahí con el subsistema de E/S. También depende de lo que esté haciendo la aplicación. En la mayoría de los casos, el problema de rendimiento puede deberse a la aplicación que se ejecuta en el sistema Linux.

Recuerde la regla 80/20:el 80 % de la mejora del rendimiento proviene de la optimización de la aplicación y el 20 % restante proviene de la optimización de los componentes de la infraestructura.

Hay varias herramientas disponibles para monitorear el rendimiento del sistema Linux. Por ejemplo:top, free, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, iozone, etc. Hablaremos más sobre estas herramientas y cómo usarlas en los próximos artículos de esta serie.

El siguiente es el enfoque de 4 pasos para identificar y resolver un problema de rendimiento.

  • Paso 1:comprender (y reproducir) el problema: La mitad del problema se resuelve cuando entiendes claramente cuál es el problema. Antes de intentar resolver el problema de rendimiento, primero trabaje en definir claramente el problema. Cuanto más tiempo dedique a comprender y definir el problema, obtendrá suficientes detalles para buscar las respuestas en el lugar correcto. Si es posible, intente reproducir el problema, o al menos simule una situación que crea que se parece mucho al problema. Esto lo ayudará más tarde a validar la solución que encontró para solucionar el problema de rendimiento.
  • Paso 2:monitorear y recopilar datos: Después de definir claramente el problema, supervise el sistema e intente recopilar la mayor cantidad de datos posible en varios subsistemas. Según estos datos, cree una lista de posibles problemas.
  • Paso 3:eliminar y reducir los problemas: Después de tener una lista de posibles problemas, profundice en cada uno de ellos y elimine los que no sean problemas. Redúzcalo aún más para ver si se trata de un problema de aplicación o de infraestructura. Profundice más y redúzcalo a un componente específico. Por ejemplo, si se trata de un problema de infraestructura, redúzcalo e identifique el subsistema que está causando el problema. Si se trata de un problema del subsistema de E/S, redúzcalo a una partición específica, grupo RAID, LUN o disco. Básicamente, sigue profundizando hasta que encuentres la causa raíz del problema.
  • Paso 4:un cambio a la vez: Una vez que se haya reducido a una pequeña lista de posibles problemas, no intente realizar varios cambios a la vez. Si realiza varios cambios, no sabrá cuál solucionó el problema original. Múltiples cambios a la vez también pueden causar nuevos problemas, que estarás persiguiendo en lugar de solucionar el problema original. Entonces, haga un cambio a la vez y vea si soluciona el problema original.

En los próximos artículos de la serie de rendimiento, discutiremos más sobre cómo monitorear y abordar los problemas de rendimiento en el subsistema de CPU, memoria, E/S y red utilizando varias herramientas de monitoreo de rendimiento de Linux.


Linux
  1. MySQL:ajuste y optimización del rendimiento

  2. 24 ejemplos de iostat, vmstat y mpstat para la supervisión del rendimiento de Linux

  3. Las 25 mejores herramientas de depuración y supervisión del rendimiento de Linux

  4. Introducción a las interrupciones de Linux y CPU SMP Affinity

  5. Configuración y ajuste de OpenVAS en Kali Linux

Una colección de utilidades para simplificar la resolución de problemas de la red Linux y el ajuste del rendimiento

Instale la herramienta de monitoreo de rendimiento de NetData en Linux

Una introducción a las métricas y la supervisión del rendimiento de Prometheus

Una introducción al hashing y las sumas de verificación en Linux

3 consejos para mejorar el rendimiento de los procesos de Linux con prioridad y afinidad

Cómo crear una carga de CPU del 100 % en un sistema Linux