¿El sistema funciona lento? Si es así, su sistema estará vinculado a la memoria, CPU o E / S. Este post le mostrará una forma rápida de averiguar cuál de los tres es, lo que le permitirá realizar mejoras informadas en el rendimiento del sistema.
¿Memoria, computación (CPU) o E / S limitada?
Siempre que su sistema funciona lento, casi siempre se debe al componente más lento o la cadena de componentes en su sistema. Esto a veces puede ser generado por el software, pero a menudo, es el hardware el culpable.
A modo de ejemplo, si tiene un disco muy antiguo y lento, a modo de ejemplo, un disco giratorio de 5400 RPM aún algo común, a menudo denominado HDD o unidad de disco duro, ese disco puede ser el embotellamiento en su sistema.
Piense en ello como tuberías con agua corriendo a través de ellas. Imagine la memoria de su sistema, la unidad informática (su CPU o Unidad Central de Procesamiento, el chip / procesador principal de su sistema) y los discos (como parte del sistema de E / S o Entrada / Salida), todo como tuberías de agua. Ahora, imagine que los componentes más lentos son una tubería más pequeña y los componentes más rápidos son una tubería más grande. Si necesita transferir 10L a través de cada tubería, la tubería más lenta tomará mucho más tiempo que la más grande.
En Linux, los principales cuellos de botella son la memoria (RAM), la computación (CPU) o la E / S (operaciones de disco). En el caso de la memoria, la velocidad puede ser un factor, pero quedarse sin ella es un gran problema. Para la CPU, si tiene hardware más antiguo, cada núcleo de la CPU funciona mucho más lento y es factible que no haya suficientes. Para la E / S, el problema puede ser la lectura de discos duros lentos y las escrituras en disco excesivas.
Hay herramientas que puede usar que facilitan la detección de si un sistema está vinculado a la memoria, el cómputo (CPU) o la E / S. Todo lo que necesitas es htop y iotop, dos herramientas semigráficas, que se pueden instalar fácilmente en Linux.
Instalación de htop e iotop
Para instalar htop e iotop en su distribución de Linux basada en Debian / Apt (como Ubuntu y Mint), haga lo siguiente:
sudo apt install htop iotop
Para instalar htop e iotop en su distribución de Linux basada en RedHat / Yum (como RedHat y Fedora), haga lo siguiente:
sudo yum install htop iotop
CPU enlazado
Es fácil ver si un sistema está vinculado a la CPU o no. Simplemente escriba `htop` en la línea de comando y presione enter. Después, mire las coloridas barras de la CPU en la parte de arriba de la pantalla. Si su procesador tiene 16 hilos, habrá 16 barras.
La pregunta simple a responder es si están casi ‘llenos’ (cerca del 100%), o si hay suficiente espacio para moverse:
Si las barras son tan buenas como llenas, el sistema está claramente vinculado a la CPU. Tenga en cuenta además que las barras de memoria (Mem) y de intercambio (Swp) no están llenas de ninguna manera: esto no es un obstáculo de rendimiento relacionado con la memoria.
Para obtener un poco más de información y tendencias, a continuación, puede consultar el número ‘Promedio de carga’. Aunque este número es altamente arbitrario, un poco de familiaridad con su sistema y la comprensión general de que si alguno de estos tres números supera el doble de subprocesos en su sistema, el sistema está luchando por mantenerse al día, es muy importante.
El primer número promedio de carga es un promedio de 1 minuto, el siguiente es un promedio de 5 minutos y el último número es un promedio de 15 minutos. En esta circunstancia, la carga de 1 minuto es 270, que es casi 17 veces la cantidad de subprocesos: nuestro sistema está fuertemente vinculado a la CPU.
En conclusión, un número interesante para verificar es el número de tareas (y en menor medida subprocesos). Aunque las marcas de agua bajas y altas exactas dependen de las capacidades del hardware / máquina subyacente, si el número de tareas es excesivamente alto, su CPU puede estar cambiando de contexto (cambiando de procesar una tarea a otra) en gran medida.
Si desea obtener más información sobre lo que indican los distintos colores en htop, consulte Barras de colores en htop: ¿Qué significan?
Límite de memoria
Inmediatamente después de tener acceso a htop, es fácil ver si un sistema está vinculado a la memoria o no. Simplemente mire las barras de memoria (Mem) y de intercambio (Swp) mencionadas previamente.
Si la barra de memoria está absolutamente llena y, a modo de ejemplo, la barra de intercambio está llena al 50%, es casi seguro que el sistema se está intercambiando mucho. El intercambio es el procedimiento de intercambiar el contenido de la memoria principal con el disco (usando un archivo de intercambio especial o una partición de intercambio) debido a que está repleto y, en general, es muy lento. Una vez que un sistema se inicia y continúa intercambiando, se volverá prohibitivamente lento.
Es fácil ver cuándo comienza a quedarse sin memoria, puesto que la barra se llenará. A pesar de esto, el uso del espacio de intercambio a veces puede ser un poco ambiguo.
A modo de ejemplo, el 20% puede estar en uso, pero queda mucha memoria. Esto puede indicar que el sistema operativo ha movido algunas áreas de memoria de uso de baja frecuencia al disco para aprovechar al máximo la memoria principal. Como queda mucha memoria libre, esta situación está bien y no es motivo de preocupación.
Además hay una excepción a una barra de memoria que parece bastante llena, y es el almacenamiento en caché. Su sistema puede estar configurado para reservar x cantidad de memoria para el almacenamiento en caché.
Otra manera de chequear esto rápidamente es ejecutando free -g
en la línea de comando (o free -m
para máquinas con cantidades más pequeñas de memoria como una Raspberry Pi):
Esto es fácil de leer: 62 Gigabytes de memoria, 25 en uso, 12 libres y 24 asignados hoy en día a búferes y caché. El 32 disponible es un total aproximado de libre real (12) y lo que esté asignado a búferes y caché (24) menos lo que ya está en uso (no se muestra), o dicho de otra forma, 12 + 24 = 36 y 32 está habilitada, entonces Aproximadamente 4 gigabytes son utilizados por búferes y almacenamiento en caché.
Tenga en cuenta que además podemos ver cuánto espacio de intercambio se reservó (10 Gigabytes) y cuánto se está usando aquí: 0 hoy en día y, por eso, 10 gratis.
Límite de E / S
Digamos que está comprobando htop y ve esto:
El sistema parece ocupado, pero no lo suficientemente ocupado para que se considere vinculado a la CPU. La memoria usada / libre y las barras de intercambio además se ven bien. Echemos un vistazo a iotop a continuación. Para hacerlo, necesita utilizar sudo iotop
para comenzar iotop puesto que iotop necesita sudo.
Las dos barras superiores son las más útiles para analizar rápidamente si un sistema tiene problemas con el rendimiento del disco y, por eso, está limitado por E / S.
Aunque el número de M / s no es muy alto en términos de SSD moderno, leer y escribir constantemente varios megabytes por segundo en una unidad de disco duro lenta es una E / S bastante intensa.
Este número, cuando se observa por un tiempo, junto con la lista de procesos debajo (para ver quiénes son los principales usuarios), y la sección superior de la salida de htop (en términos de CPU y memoria) dan una buena idea general de si un El sistema está vinculado a la memoria, CPU o E / S.
Mitigación de problemas de rendimiento
Los cambios del sistema necesarios para mitigar los problemas de rendimiento son siempre específicos del sistema, así como de la situación específica experimentada. Algunos ejemplos:
Es el sistema Vinculado a disco / E / S? Puede tener sentido detener algunos servicios de registro de escritura pesada, actualizar el sistema de E / S (a modo de ejemplo, agregando una tarjeta SATA en una computadora vieja), para cambiar a un dispositivo de almacenamiento más rápido (como un disco basado en NVMe en lugar de un HDD), o simplemente para hallar un SSD más rápido.
Es el sistema Memoria / intercambio enlazado? A modo de ejemplo, puede tener sentido ejecutar menos máquinas virtuales, ejecutar procesos que consuman menos memoria o agregar más módulos de memoria de hardware físico.
Es el sistema Vinculado a la CPU? Utilice la lista de procesos inferior en htop para hallar el procedimiento que está acaparando la CPU. Inclusive puede terminarlo de forma directa desde htop usando la tecla F9.
Si el problema es la CPU en sí (dicho de otra forma, la CPU claramente no se mantiene al día con las tareas más básicas asociadas con el sistema), cambiar el hardware es un poco más complejo. Es necesario hallar una CPU más rápida, aún compatible con el zócalo de la placa base, e inclusive en ese caso, las mejoras de rendimiento pueden ser pequeñas. Puede que sea el momento de actualizar el sistema en general.
¿Más de un cuello de botella en el rendimiento?
Volviendo a nuestra analogía con la tubería de agua, tenga en cuenta que a veces un cuello de botella puede ser generado por una combinación de varios componentes.
A modo de ejemplo, si una tarjeta controladora de E / S antigua o barata necesita el 80% del tiempo de la CPU solo para procesar datos, y el disco adjunto es una unidad de disco duro lenta que se utiliza al 80% de sus capacidades, inclusive con el rendimiento del tarjeta de E / S más barata, entonces ambos están creando un obstáculo general que no se resolverá abordando ninguno de los dos. Ambos deberán corregirse antes de que el sistema vuelva a funcionar.
Terminando
Ya sea que sea un ingeniero de DevOps o un usuario de Linux de una computadora doméstica, saber cómo analizar rápidamente si su sistema tiene memoria, CPU o E / S enlazado lo ayudará a poner en práctica mejores cambios de software y hardware para atender el problema de rendimiento que está experimentando.