Los clientes suelen preguntar sobre el tiempo de robo de CPU (CPU steal time). Especialmente aquellos que usan las CPU de manera intensiva y para quienes es un criterio clave de rendimiento. Existen bastantes diferencias en la configuración y el comportamiento de las CPU y los núcleos entre entornos físicos y virtuales. Incluso entre proveedores de la nube existen diferencias de configuración que dificultan una comparación directa a simple vista. Por esta razón, pensamos que sería útil ofrecer una breve descripción general de nuestra configuración y lógica de asignación de CPU para los clientes, así como explicar las fuentes más comunes de tiempo de robo de CPU.
Así que, en primer lugar, para aquellos que no estén familiarizados con el concepto, el tiempo de robo de CPU es el tiempo que su CPU virtual dentro de su servidor en la nube tiene que esperar a la CPU física real mientras el hipervisor está ocupado usándola para otras cosas (como otras máquinas virtuales/servidores en la nube). Este es un gran artículo sobre el tiempo de robo de CPU que vale la pena leer.
Un poco de información sobre nuestra configuración de CPU
Lo primero que hay que entender se refiere a la forma en que asignamos los núcleos entre las máquinas virtuales en cada nodo de computación físico que aloja su computación. Las CPU y sus núcleos en CloudSigma se comparten. En otras palabras, no vinculamos el servidor en la nube de un cliente a núcleos específicos. El tiempo de CPU se asigna de forma dinámica mediante el planificador del nodo de computación físico y todo se comparte. Creemos que esto ofrece una serie de beneficios al proporcionar un rendimiento más confiable de manera integral, al permitir que el nodo de computación realice ajustes de asignación sensatos sobre la marcha para equilibrar la carga.
En combinación con esto, utilizamos Grupos de Control (cgroups para abreviar) para garantizar suficiente tiempo de CPU para cada uno de los servidores en la nube de acuerdo con los recursos que haya establecido a través del tamaño del servidor. Al final, el planificador decide qué hacer con los recursos restantes y los cgroups. También vale la pena señalar que reservamos un conjunto de núcleos específicos para que estén fuera del rango de asignación para las cargas de trabajo de computación de los clientes. Usamos estos núcleos para ejecutar el sistema operativo del host físico. En particular, reservamos núcleos adicionales para el procesamiento de operaciones de red y almacenamiento. Todo esto tiene como objetivo aumentar la estabilidad de la máquina en general. Además, ayuda a ofrecer niveles de rendimiento confiables a lo largo del tiempo, independientemente de la carga de otros clientes para usted como cliente.
Las fuentes del tiempo de robo de CPU en un entorno virtualizado
A diferencia de un entorno físico, existen múltiples fuentes y situaciones en las que puede experimentar tiempo de robo de CPU. Esto se debe a que las cosas son más complejas en un entorno virtualizado multiinquilino. No todas ellas representan realmente una situación en la que no esté recibiendo el tiempo de CPU que debería; de hecho, en muchos casos a menudo puede absorber ciclos de CPU de repuesto más allá de su tamaño asignado, pero esa no es una situación en la que vería tiempo de robo de CPU. Las tres situaciones más comunes se detallan a continuación.
Su servidor en la nube está sobrecargado
¡Suele pasar! Todos quieren usar una capacidad lo más cercana al máximo de lo que están pagando; sin embargo, si la CPU asignada a su servidor en la nube virtual no es suficiente para procesar la carga de trabajo, puede experimentar tiempo de robo de CPU a medida que las tareas se acumulan y se ponen en cola dentro de la CPU virtual. Si esta es la causa raíz del tiempo de robo de CPU, entonces la solución es cambiar el tamaño del servidor en la nube. Si se trata de una sobrecarga temporal, puede dejar las cosas como están de forma segura. Verá desaparecer el tiempo de robo de CPU cuando disminuya su carga.
El servidor físico que aloja su servidor en la nube está sobrecargado
Si hay una sobrecarga del host, en este caso se trata de un fallo por nuestra parte. Es poco común, pero puede suceder. En este caso, utilizamos la migración en vivo para migrar sin interrupciones las máquinas virtuales a otros nodos de computación físicos para volver a reducir los niveles de carga a niveles normales. Por lo general, mantenemos los hosts muy por debajo de la carga completa. Por lo tanto, si continúa observando esto durante un período prolongado, comuníquese con nosotros. Nuestro soporte gratuito las 24 horas, los 7 días de la semana, puede verificar el host físico en el que se encuentra. Si no hay sobrecarga, es poco probable que sea la causa raíz de su tiempo de robo de CPU.
Estás utilizando un tamaño de núcleo virtual más pequeño
En CloudSigma te damos la posibilidad de definir el tamaño del núcleo virtual para aprovechar, por ejemplo, tener más hilos de CPU de núcleos virtuales más pequeños para cualquier tamaño de servidor en la nube. El servidor en la nube dentro del sistema operativo siempre verá el tamaño del núcleo como el tamaño físico completo.
Si el núcleo físico es de 2.6GHz pero tu VM es de 4GHz y tiene dos núcleos, cada núcleo virtual será de 2GHz. Así que siempre verás tiempo de robo (steal time). De hecho, eso se debe a que recibes una cantidad prorrateada del núcleo total y no el tamaño completo debido a que el tamaño del núcleo virtual es más pequeño. Por lo tanto, siempre debes ajustar cualquier cálculo del tiempo de robo de CPU para tener en cuenta un tamaño de núcleo virtual más pequeño si realmente estás usando eso. Para evitar esto, puedes usar el tamaño de núcleo completo por núcleo. Puedes hacer esto expandiendo el tamaño del núcleo virtual al tamaño de núcleo de CPU completo (por ejemplo, Intel v4 2.6GHz).
Conclusión
El tiempo de robo de CPU en la nube es un poco más complejo que en los entornos físicos tradicionales de un solo inquilino. Sin embargo, definitivamente sigue existiendo. Sin embargo, el reporte del tiempo de robo de CPU por parte de los sistemas operativos no se ha ajustado a las diferentes condiciones. Esto significa que puedes obtener falsos positivos. Cuando encuentras tiempo de robo de CPU, generalmente significa que se está produciendo una limitación de recursos. Esperamos que esta publicación te ayude a identificar rápidamente la causa raíz y garantizar un funcionamiento continuo y sin problemas.
¡Feliz computación!
Robert
Comentarios
Aún no hay comentarios. Sea el primero.