Gestión dinámica de recursos de última generación


Las VMs N4, que cuentan con procesadores Intel Xeon de quinta generación y Titanium, utilizan la gestión dinámica de recursos de última generación para aumentar la eficiencia de los costes. Para ello, aprovechan mejor los recursos físicos disponibles en las máquinas host y usan un programador de CPU personalizado y una migración en directo que tiene en cuenta el rendimiento para equilibrar las necesidades de rendimiento de las cargas de trabajo con los recursos disponibles. Son las mismas tecnologías que usan los servicios de la Búsqueda de Google, Google Ads, Google Maps y YouTube para ejecutar sus cargas de trabajo sensibles a la latencia de forma eficiente.

La gestión dinámica de recursos de nueva generación también tiene una mejor afinidad NUMA, una predicción más precisa de los requisitos de recursos y un reequilibrio más rápido mediante la migración en directo con reconocimiento del rendimiento.

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

Las CPUs virtuales (vCPUs) se implementan como hilos que se programan para ejecutarse bajo demanda, como cualquier otro hilo de un host. Cuando la vCPU tiene trabajo que hacer, se asigna a una CPU física disponible en la que se ejecuta hasta que vuelve a ponerse en suspensión. Del mismo modo, la RAM virtual se asigna a las páginas físicas del host mediante tablas de páginas que se rellenan cuando se accede por primera vez a una página física del invitado. Esta asignación permanece fija hasta que la máquina virtual indica que ya no se necesita una página física del invitado.

La gestión dinámica de recursos permite que Compute Engine use mejor las CPUs físicas disponibles. Para ello, programa las VMs en los servidores en función de la demanda de recursos y programa los subprocesos de vCPU en las CPUs físicas de forma que se minimice el tiempo de espera. En la mayoría de los casos, podemos hacerlo sin problemas, por lo que Google Cloud puedes ejecutar máquinas virtuales de forma más eficiente en menos servidores.

Componentes de la gestión dinámica de recursos

Compute Engine usa 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 de forma constante, de modo que ahora los servidores host tienen muchos más recursos que cualquier máquina virtual. Google evalúa continuamente el rendimiento de hardware nuevo y busca plataformas rentables y con un buen rendimiento para la mayor variedad de cargas de trabajo y servicios en la nube, lo que te permite aprovechar las tecnologías más recientes cuando están disponibles.

Colocación inteligente de VMs

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 VMs que se ejecutan en un servidor físico. Usa esta información para predecir el rendimiento de una máquina virtual recién añadida en ese servidor. A continuación, busca en miles de servidores para encontrar la mejor ubicación para añadir una máquina virtual. Estas observaciones aseguran que, cuando se coloca una nueva máquina virtual, sea compatible con sus vecinos y sea poco probable que sufra interferencias de esas instancias.

Migración activa con reconocimiento del rendimiento

Una vez que las máquinas virtuales se han colocado en un host, Compute Engine monitoriza continuamente el rendimiento y los tiempos de espera de las máquinas virtuales. Si aumentan las demandas de recursos de las VMs, Compute Engine puede usar la migración en tiempo real para transferir las cargas de trabajo de forma transparente a otros hosts del centro de datos. La política de migración en directo se basa en un enfoque predictivo que da tiempo a Compute Engine 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 sea necesario. Esta gestión dinámica reduce los costes de las VMs al aprovechar mejor los recursos físicos. El uso eficiente de los recursos significa que Compute Engine puede ejecutar máquinas virtuales de forma más eficiente en menos servidores, lo que permite Google Cloud trasladar los ahorros a los usuarios.

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

E2 fue la primera serie de VMs en ofrecer gestión dinámica de recursos mediante un dispositivo de globo de memoria virtio.

Dispositivo de globo de memoria Virtio con VMs E2

La inflación de memoria es un mecanismo de interfaz entre el host y el invitado para ajustar dinámicamente el tamaño de la memoria reservada para el invitado. E2 usa un dispositivo de globo de memoria virtio para implementar el globo de memoria. Mediante el dispositivo de globo de memoria virtio, un host puede pedir explícitamente a un invitado que ceda una cantidad determinada de páginas de memoria libre (también denominada inflación de globo de memoria) y recuperar la memoria para que el host pueda usar la memoria libre en otras máquinas virtuales. Del mismo modo, el dispositivo de memoria virtio puede devolver páginas de memoria al invitado desinflando el globo de memoria. Las máquinas virtuales E2 son la única familia de máquinas que usa el dispositivo de inflado de memoria.

Las instancias de VM E2 de Compute Engine basadas en una imagen pública tienen un dispositivo de globo de memoria virtio , que monitoriza el uso de memoria del sistema operativo invitado. El sistema operativo invitado comunica al sistema anfitrión la memoria disponible. El host reasigna la memoria no utilizada a otros procesos según sea necesario, lo que permite usar la memoria de forma más eficaz. Compute Engine recoge y usa estos datos para ofrecer recomendaciones de ajuste de tamaño más precisas.

Verificar la instalación del controlador

Para comprobar si tu imagen tiene instalado y cargado el controlador de dispositivo de globo de memoria virtio, ejecuta 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 la imagen tiene el controlador instalado y cargado, ejecuta el siguiente comando:

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 la versión 5.2, el sistema de memoria de Linux a veces impide por error las asignaciones grandes cuando el dispositivo de globo está presente. En la práctica, este problema se da en raras ocasiones, pero te recomendamos que cambies el ajuste de la memoria virtual overcommit_memory a 1 para evitar que se produzca. Este cambio ya se ha aplicado de forma predeterminada en todas las imágenes proporcionadas por Google que se han publicado desde el 9 de febrero del 2021.

Para corregir el ajuste, usa el siguiente comando para cambiar el valor de 0 a 1:

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

Para que este cambio se mantenga después de reiniciar el sistema, añade lo siguiente al archivo /etc/sysctl.conf:

vm.overcommit_memory=1

Windows

Las imágenes de Windows de Compute Engine incluyen el dispositivo de globo virtio. Sin embargo, las imágenes de Windows personalizadas no. Para comprobar si tu imagen de Windows tiene instalado el controlador, ejecuta el siguiente comando:

googet verify google-compute-engine-driver-balloon

Inhabilitar 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 forma más eficaz, por lo que puede ofrecer VMs E2 a precios más bajos. Google Cloud Puedes inhabilitar el dispositivo de globo de memoria virtio si inhabilitas el controlador del dispositivo. Después de inhabilitar el dispositivo de globo de memoria virtio, seguirás recibiendo recomendaciones de ajuste de tamaño, pero es posible que no sean tan precisas.

Linux

Para inhabilitar el dispositivo en Linux, ejecuta el siguiente comando:

sudo rmmod virtio_balloon

Puedes añadir este comando a la secuencia de comandos de inicio de la VM para inhabilitar automáticamente el dispositivo al arrancar la VM.

Windows

Para inhabilitar el dispositivo en Windows, ejecuta el siguiente comando:

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

Puedes introducir este comando en el script de inicio de la VM para inhabilitar automáticamente el dispositivo al arrancar la VM.

Siguientes pasos