¿Qué es el tiempo de robo de CPU?

El tiempo de robo de CPU, también conocido como CPU robada, es el porcentaje de tiempo que una CPU virtual dentro de un servidor en la nube espera involuntariamente su tiempo de procesamiento en una CPU física.

En un entorno de nube, un hipervisor actúa como una interfaz entre el servidor físico y su entorno virtualizado. Esta capa de software se instala en el hardware físico y gestiona todas las tareas asignando tiempo de CPU a procesos como equipos virtuales (VM), operaciones de red, solicitudes de E/S de almacenamiento y más.

El tiempo de robo de CPU se produce cuando los procesos están listos para ser ejecutados por la CPU virtual, pero está esperando que el hipervisor le asigne una CPU física. Esto sucede porque el hipervisor está dando servicio a otro VM.

Tiempo de CPU en entornos virtuales

Los equipos virtuales comparten sus recursos —tales como RAM, disco duro, ciclos de CPU, etc.— con otros equipos virtuales del mismo host en un entorno virtual. Si hay cuatro VM idénticos con la misma carga y tamaño en un servidor físico, las matemáticas simples sugieren que cada equipo virtual debe obtener el 25% de los ciclos de CPU.

Sin embargo, el VM terminará consumiendo más de los ciclos asignados en la mayoría de los casos. En algunos casos raros, en los que no está recibiendo los ciclos de CPU asignados, el tiempo de robo aumentará.

Identificar y supervisar el tiempo de robo de CPU

Es casi imposible evitar cierta cantidad de tiempo de robo mientras se ejecuta un sistema como un VM en un entorno de nube. Esto se debe a que el equipo virtual comparte el servidor físico con otros.

El tiempo de robo del VM se puede ver ejecutando el comando top en el terminal Linux:

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

El comando top presenta el resumen del sistema junto con la lista de los procesos o hilos gestionados actualmente por el núcleo de Linux.

Como se resalta en la captura de pantalla anterior, el tiempo robado se etiqueta como st o %st. Si el valor del tiempo de robo es 20st, significa que el 20% del tiempo total del proceso se emplea esperando que se asigne una CPU física.

El valor máximo que st puede tener es 100,0. Este es el peor escenario, ya que la CPU virtual no hace más que esperar a que el hipervisor asigne una CPU física. Afortunadamente, esta situación es muy rara.

Causas del tiempo de robo de CPU

Hay dos causas principales de alto tiempo de robo de CPU:

  • Los procesos necesitan más que la CPU asignada

    Cuando se ejecutan procesos pesados en un VM, los ciclos de CPU asignados a éste pueden no ser suficientes para manejar la carga de trabajo.

  • El servidor físico está sobrecargado por equipos virtuales

    En este caso, los proveedores de servidores en la nube sobresuscriben el servidor físico con equipos virtuales. Esto hace imposible que la CPU física gestione los procesos.

Por desgracia, es difícil saber en cuál de los dos casos se encuentra una situación con sólo mirar el tiempo de robo. Además, hay otros factores a considerar. Si hay equipos virtuales idénticos con cargas de trabajo similares que se ejecutan en diferentes hosts, podría ser posible averiguar en qué caso se encuentra la situación.

Problemas con el alto tiempo de robo de CPU

Los VM que se ejecutan en un hipervisor con un tiempo de robo alto pueden causar problemas significativos. Entre estos se incluyen:

  • E/S lenta
  • Tiempo de carga de la página más lento
  • Tiempo de consulta de la base de datos más lento
  • Procesamiento de informes más lento
  • Aumento del tamaño de la cola de tareas asíncronas debido a la incapacidad de procesarlas rápidamente
  • Aumento del costo de infraestructura debido al uso de más servidores para manejar la misma carga

Se recomienda tener tolerancia cero hacia el tiempo de robo alto en un servidor. La CPU robada ralentiza los equipos. Incluso hace que se detengan por completo en circunstancias extremas.

Cuándo preocuparse

Si el tiempo de robo de CPU es inferior al 10%, entonces no hay de qué preocuparse. La aplicación debería funcionar sin problemas. Sin embargo, es probable que el VM se esté ejecutando más lento de lo esperado si el valor del tiempo de robo es superior al 10%. Es decir, si está por encima del valor normal durante unos 20-30 minutos. Si el tiempo de robo sigue siendo alto, indica una contención de CPU. Esto puede reducir el rendimiento de la aplicación.

Corregir el tiempo de robo de CPU elevado

Como se mencionó, en la mayoría de los casos el robo de CPU es causado por una mala asignación y recursos insuficientes que conducen a una CPU sobrecargada. Ahora veamos algunas posibles correcciones:

  • Si hay un aumento repentino en el tiempo de robo de CPU, la primera solución posible es terminar manualmente el VM y volver a iniciarlo con otro servidor físico. Sin embargo, esto solo será una solución temporal si la causa raíz es algún código lento e ineficiente en la aplicación.
  • En muchos casos, la sobreventa del servidor físico es la causa raíz del tiempo de robo de CPU. En este caso, los proveedores de servidores deben limitar la cantidad de potencia de procesamiento utilizada por cada VM.
  • Si los recursos de CPU asignados al equipo virtual no son suficientes para procesar las solicitudes, aumenta el tiempo de procesamiento o los núcleos del procesador.
  • Si no hay restricciones financieras, actualizar el VM es la forma más rápida y segura de resolver el problema desde su raíz.
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