Cómo corregir el uso elevado de la CPU

Ya sea que una aplicación se esté ejecutando en un servidor o un equipo local, monitorear el uso de la CPU y la carga de la CPU es esencial para optimizar el rendimiento. Si bien el uso y la carga de la CPU pueden sonar similares, en realidad son bastante diferentes.

Este artículo explicará las diferencias entre estas dos métricas importantes, cómo supervisar la carga de la CPU con comandos comunes, el impacto de la carga elevada de la CPU y cómo controlarla para mejorar el rendimiento del sistema.

Utilización de la CPU vs. Carga de la CPU

La utilización de la CPU es el porcentaje de trabajo que la CPU está manejando para gestionar tareas. La carga de la CPU es una medida de cuántos procesos se están ejecutando o esperando a ser ejecutados por la CPU.

Los comandos como uptime o top proporcionan el valor de los promedios de carga de la CPU. Es decir proveen el número medio de hilos que usan o solicitan utilizar la CPU durante los últimos 1, 5 y 15 minutos. Los promedios de carga alta indican que la CPU está sobrecargada con demasiados procesos. Por ejemplo, una CPU con un promedio de carga de 1 se está ejecutando a plena capacidad. Una CPU completamente inactiva tiene un valor de carga de 0.

Sin embargo, esta métrica aumenta con los núcleos de CPU. Cuantos más núcleos se instalen en el sistema, más tareas puede manejar en paralelo.

Por ejemplo, el promedio de carga acumulada para una CPU con 4 núcleos será de 4. Esto se debe a que cada núcleo puede manejar un valor de carga de 1. En este escenario, incluso si uno de los núcleos se ejecuta al 100% de su capacidad, la CPU solo se cargaría con una cuarta parte de su carga potencial.

Si la carga es mayor que el número de núcleos instalados, los procesos comenzarían a ponerse en cola para usar la CPU.

Monitorear la carga de la CPU

Como se indicó, la carga de la CPU se promedia durante los períodos de 1, 5 y 15 minutos anteriores. Sin embargo, hay otras métricas que nos ayudan a identificar la carga de la CPU. Estas incluyen:

  • Tiempo de inactividad: el tiempo de inactividad está inversamente relacionado con la carga de la CPU. Cuando aumenta el tiempo de inactividad, disminuye la carga de la CPU y viceversa.
  • Tiempos del usuario y el sistema: estos indican directamente la carga de la CPU. Básicamente, la suma de los tiempos del usuario, el sistema e inactividad es igual al 100% del tiempo o la carga de la CPU. Los valores más altos de los tiempos del usuario y el sistema indican una mayor carga de la CPU.
  • Tiempo de espera o tiempo de espera de E/S: se refiere a instancias en las que la CPU está inactiva y esperando a que se complete una E/S. Esto aumenta la carga de la CPU, ya que más procesos esperan a la CPU mientras ésta espera a que se complete la E/S.
  • Tiempo robado: porcentaje de tiempo que una CPU virtual espera involuntariamente un proceso de CPU mientras el hipervisor presta servicio a otra CPU virtual.

Efectos de una carga de CPU alta

Una carga de CPU alta no suele afectar negativamente el rendimiento de un sistema, siempre y cuando no ocurra a largo plazo. Sin embargo, ejecutar una CPU al 100% de su capacidad durante períodos prolongados puede tener un impacto leve o grave en el rendimiento del sistema.

A continuación se enumeran algunos de los posibles problemas:

  • El sistema podría congelarse o dejar de responder, lo que provocaría un reinicio no programado.
  • Es posible que varios programas y aplicaciones que utilizan mucha CPU tarden más tiempo del esperado en iniciarse o que no puedan abrirse al mismo tiempo.
  • Las aplicaciones —o incluso todo el sistema— pueden llegar a ser extremadamente lentas y empezar a retrasarse.
  • Cuando un sistema está funcionando a plena capacidad, comienza a sobrecalentarse. Esto afecta su rendimiento. Para mejorar la potencia de procesamiento de un sistema, ajusta la velocidad del ventilador de la CPU. Podemos configurar la velocidad del ventilador en la configuración del BIOS.

Identificar y solucionar los problemas relacionados con una carga de CPU alta

Diferentes comandos ayudan a observar la carga del sistema durante diferentes períodos. Generalmente es mejor tener un número bajo, ya que un número más alto indica que el equipo está sobrecargado.

La siguiente sección cubrirá algunos de los comandos que facilitan el seguimiento de los promedios de carga de la CPU.

Usar el comando top

El comando top muestra las estadísticas dinámicas de un sistema Linux en ejecución en tiempo real. Es uno de los comandos más utilizados para monitorear el rendimiento del sistema. La primera mitad de la salida del comando top contiene métricas importantes del sistema. La segunda parte muestra estadísticas sobre una lista de procesos que se actualizan de forma automática y que están siendo gestionados actualmente por el kernel de Linux.

Al ejecutar el comando top, se creará una salida similar a la que se muestra en la siguiente figura:

Fig 1: Output of the top command Fig 1: salida del comando top

La primera línea de esta salida muestra el tiempo de actividad, el número total de usuarios activos conectados al sistema y los promedios de carga de la CPU durante los últimos 1, 5 y 15 minutos.

Por ejemplo, la salida anterior muestra los promedios de carga como 0,13, 0,40 y 0,21. Para interpretar correctamente estos números, es importante saber cuántos núcleos tiene la CPU. La salida anterior es de un equipo con un solo núcleo, por lo que el promedio de carga está dentro del límite aceptable. Esto se debe a que todos los promedios de carga son inferiores a 1,0. Incluso si hay un pico en el intervalo de 1 y 5 minutos, no debería haber un problema siempre y cuando el promedio de carga del intervalo de 15 minutos esté dentro del límite.

Usar el comando uptime

El comando uptime también es útil para ver el promedio de carga del sistema. Este comando muestra el tiempo actual del sistema, el tiempo de actividad del equipo, el número de usuarios que han iniciado sesión actualmente en el sistema y los promedios de carga de los últimos 1, 5 y 15 minutos.

Al ejecutar el comando uptime, se generará una salida similar a la que se muestra a continuación:

Fig 2: Output of the uptime command Fig 2: salida del comando uptime

La salida anterior es muy similar a la primera línea de la salida del comando top. Los promedios de carga se muestran en el mismo formato y el valor de los promedios de carga es 0,53, 0,56 y 0,24. Dado que esta es la salida de un equipo con un solo núcleo, los promedios de carga siguen estando por debajo del límite. Esto se debe a que están por debajo de 1,0. Este valor siempre se ajusta según el número de núcleos del sistema.

Usar el comando ps

El comando ps es una herramienta flexible y ampliamente utilizada para identificar los procesos que se ejecutan en el sistema y el número de recursos que utilizan para ejecutarse. Este comando puede mostrar diferentes salidas de acuerdo con varias opciones.

Al ejecutar el comando ps, se generará una salida como la que se muestra a continuación:

Fig 3: Output of the ps command Fig 3: salida del comando ps

Esta salida muestra información básica sobre los procesos en ejecución, pero se puede personalizar con las opciones proporcionadas por el comando ps para obtener más detalles.

Por ejemplo, podemos ver y ordenar qué procesos están usando más CPU ejecutando el siguiente comando:

Esto dará como resultado una salida como la que se muestra a continuación:

ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Fig 4: The top 10 most CPU-consuming processes Fig 4: los 10 principales procesos que consumen más CPU

El comando ps no muestra los promedios de carga del sistema. Se utiliza para solucionar la causa y encontrar los procesos que están causando la carga elevada de la CPU. Pongamos un ejemplo. Si un proceso está utilizando el 100% de la CPU, los otros procesos tendrán que esperar a la CPU y esto aumentará su carga.

Este comando también ayuda a identificar los procesos que se están generando de forma repetitiva o que están en un estado zombie.

Corregir la carga elevada de la CPU

A continuación se presentan algunas correcciones comunes para reducir la carga elevada de la CPU:

  • Terminar o reiniciar procesos: a menudo, hay solo uno o dos procesos que aumentan la carga de la CPU. Por ejemplo, un proceso podría estar en un estado ininterrumpido y aumentar la carga de la CPU manteniendo a todos los demás procesos en espera. Lo primero que se debe hacer cuando la CPU se sobrecarga es identificar cualquier proceso de este tipo para terminarlo o reiniciarlo.
  • Actualizar aplicaciones y controladores del sistema: los controladores y aplicaciones obsoletos también pueden aumentar la carga de la CPU, ya que no pueden realizar eficazmente las operaciones de E/S. La mejor manera de evitar este problema es asegurarse de que todo el sistema está actualizado.
  • Reinstalar o degradar aplicaciones: a veces, simplemente reinstalar una aplicación que estaba aumentando la carga de la CPU puede resolver el problema. Si no es así, cambiar la aplicación a una versión anterior o inferior puede mejorar el rendimiento.
  • Reiniciar el sistema: si nada más parece funcionar y puedes cubrir los gastos, reiniciar el sistema puede resolver el problema. Cabe señalar que no siempre es posible, especialmente si el sistema es un servidor que no se puede apagar.
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