Gestión dinámica de recursos de próxima generación


Las máquinas virtuales N4 , impulsadas por procesadores Intel Xeon de quinta generación y Titanium , utilizan la gestión dinámica de recursos de próxima generación para impulsar la rentabilidad al hacer un mejor uso de los recursos físicos disponibles en las máquinas host, y también utilizan un programador de CPU personalizado y una migración en vivo consciente del rendimiento para equilibrar las necesidades de rendimiento de la carga de trabajo con los recursos disponibles. Estas son las mismas tecnologías que utilizan los servicios de Búsqueda de Google, Google Ads, Google Maps y YouTube para ejecutar sus cargas de trabajo sensibles a la latencia de manera eficiente.

La gestión dinámica de recursos de próxima generación también tiene una mejor afinidad con NUMA, una predicción más precisa de los requisitos de recursos y un reequilibrio más rápido mediante la migración en vivo teniendo en cuenta el rendimiento.

Cómo funciona la gestión dinámica de recursos

Las CPU virtuales (vCPU) se implementan como subprocesos programados para ejecutarse bajo demanda como cualquier otro subproceso en un host. Cuando la vCPU tiene trabajo que hacer, el trabajo se asigna a una CPU física disponible en la que se ejecutará hasta que vuelva a entrar en modo de suspensión. De manera similar, la RAM virtual se asigna a páginas de host físicas mediante tablas de páginas que se completan cuando se accede por primera vez a una página física de invitado. Esta asignación permanece fija hasta que la máquina virtual indica que ya no se necesita una página física de invitado.

La administración dinámica de recursos permite a Compute Engine utilizar mejor las CPU físicas disponibles al programar las VM en los servidores en función de la demanda de recursos y programar los subprocesos de vCPU en las CPU físicas de manera que se minimice el tiempo de espera. En la mayoría de los casos, podemos hacer esto sin problemas, por lo que Google Cloud Puede ejecutar máquinas virtuales de manera más eficiente en menos servidores.

Componentes de la gestión dinámica de recursos.

Compute Engine utiliza las siguientes tecnologías para la gestión dinámica de recursos:

Servidores físicos más grandes y eficientes

El número de núcleos y la densidad de RAM han aumentado constantemente, de modo que ahora los servidores host tienen muchos más recursos que cualquier VM individual. Google compara continuamente nuevo hardware y busca plataformas que sean rentables y funcionen bien para la más amplia variedad de cargas de trabajo y servicios en la nube, lo que le permitirá aprovechar las tecnologías más nuevas cuando estén disponibles.

Colocación inteligente de máquinas virtuales

El sistema de gestión de clústeres de Google observa la CPU, la RAM, el ancho de banda de la memoria y otras demandas de recursos de las máquinas virtuales que se ejecutan en un servidor físico. Utiliza esta información para predecir cómo funcionará una máquina virtual recién agregada en ese servidor. Luego busca en miles de servidores para encontrar la mejor ubicación para agregar una VM. Estas observaciones garantizan que cuando se coloca una nueva máquina virtual, sea compatible con sus vecinas y sea poco probable que experimente interferencias de esas instancias.

Migración en vivo teniendo en cuenta el rendimiento

Después de colocar las VM en un host, Compute Engine monitorea continuamente el rendimiento de las VM y los tiempos de espera. Si aumentan las demandas de recursos de las máquinas virtuales, Compute Engine puede utilizar la migración en vivo para trasladar de forma transparente las cargas de trabajo a otros hosts en el centro de datos. La política de migración en vivo se guía por un enfoque predictivo que le da a Compute Engine tiempo para cambiar la carga, a menudo antes de que las máquinas virtuales experimenten cualquier tiempo de espera.

Programador de CPU del hipervisor

El programador de CPU del hipervisor asigna dinámicamente la CPU y la memoria virtuales a la CPU y la memoria físicas del servidor host según demanda. Esta gestión dinámica impulsa la rentabilidad en las máquinas virtuales al hacer un mejor uso de los recursos físicos. El uso eficiente de los recursos significa que Compute Engine puede ejecutar máquinas virtuales de manera más eficiente en menos servidores, lo que permite Google Cloud para trasladar los ahorros a los usuarios.

Gestión dinámica de recursos de primera generación.

E2 fue la primera serie de máquinas virtuales que ofreció gestión dinámica de recursos mediante un dispositivo de globo de memoria virtio.

Dispositivo de globo de memoria Virtio con máquinas virtuales E2

La expansión de la memoria es un mecanismo de interfaz entre el anfitrión y el invitado para ajustar dinámicamente el tamaño de la memoria reservada para el invitado. E2 utiliza un dispositivo de globo de memoria virtio para implementar el globo de memoria. A través del dispositivo de globo de memoria virtio, un host puede solicitar explícitamente a un invitado que proporcione una cierta cantidad de páginas de memoria libres (también llamado inflado de globo de memoria) y reclamar la memoria para que el host pueda usar la memoria libre para otras máquinas virtuales. Del mismo modo, el dispositivo de globo de memoria virtio puede devolver páginas de memoria al huésped desinflando el globo de memoria. Las máquinas virtuales E2 son la única familia de máquinas que utiliza el dispositivo de globo de memoria.

Las instancias de VM de Compute Engine E2 que se basan en una imagen pública tienen un dispositivo de globo de memoria virtio , que monitorea el uso de la memoria del sistema operativo invitado. El sistema operativo invitado comunica su memoria disponible al sistema anfitrión. El host reasigna cualquier memoria no utilizada a otros procesos según demanda, utilizando así la memoria de manera más efectiva. Compute Engine recopila y utiliza estos datos para realizar recomendaciones de ajuste de tamaño más precisas.

Verificando la instalación del controlador

Para verificar si su imagen tiene el controlador del dispositivo de globo de memoria virtio instalado y cargado, ejecute el siguiente comando.

linux

La mayoría de las distribuciones de Linux incluyen el controlador de dispositivo de globo de memoria virtio. Para verificar que su imagen tenga el controlador instalado y cargado, ejecute:

sudo modinfo virtio_balloon > /dev/null && echo Balloon driver is \
installed || echo Balloon driver is not installed; sudo lsmod | grep \
virtio_balloon > /dev/null && echo Balloon driver is loaded || echo \
Balloon driver is not loaded

En los kernels de Linux anteriores a 5.2, el sistema de memoria de Linux a veces impide por error grandes asignaciones cuando el dispositivo de globo está presente. Esto rara vez es un problema en la práctica, pero recomendamos cambiar la configuración overcommit_memory de la memoria virtual a 1 para evitar que ocurra el problema. Este cambio ya se realiza de forma predeterminada en todas las imágenes proporcionadas por Google publicadas desde el 9 de febrero de 2021.

Para corregir la configuración, use el siguiente comando para cambiar el valor de 0 a 1 :

sudo /sbin/sysctl -w vm.overcommit_memory=1

Para conservar este cambio durante los reinicios, agregue lo siguiente a su archivo /etc/sysctl.conf :

vm.overcommit_memory=1

ventanas

Las imágenes de Compute Engine Windows incluyen el dispositivo de globo virtio. Sin embargo, las imágenes personalizadas de Windows no lo hacen. Para verificar si su imagen de Windows tiene el controlador instalado, ejecute:

googet verify google-compute-engine-driver-balloon

Deshabilitar el dispositivo de globo de memoria virtio

El uso del dispositivo de globo de memoria virtio permite a Compute Engine utilizar los recursos de memoria de manera más efectiva. Google Cloud puede ofrecer máquinas virtuales E2 a precios más bajos. Puede optar por no participar en el dispositivo de globo de memoria virtio desactivando el controlador del dispositivo. Después de desactivar el dispositivo de globo de memoria virtio, seguirá recibiendo recomendaciones para corregir el tamaño ; sin embargo, es posible que no sean tan precisos.

linux

Para deshabilitar el dispositivo en Linux, ejecute el siguiente comando:

sudo rmmod virtio_balloon

Puede agregar este comando al script de inicio de la VM para deshabilitar automáticamente el dispositivo al iniciar la VM.

ventanas

Para desactivar el dispositivo en Windows, ejecute el siguiente comando:

googet -noconfirm remove google-compute-engine-driver-balloon

Puede colocar este comando en el script de inicio de la VM para deshabilitar automáticamente el dispositivo al iniciar la VM.

¿Qué sigue?