Administración dinámica de recursos de nueva generación


Las VMs N4, con la tecnología de los procesadores Intel Xeon de 5a generación y el Titanium, usan la administración dinámica de recursos de nueva generación para mejorar la rentabilidad y optimizar el uso de los recursos físicos disponibles en las máquinas anfitrión y también usa un programador de CPU personalizado y una migración en vivo optimizada para el rendimiento para equilibrar las necesidades de rendimiento de las cargas de trabajo con los recursos disponibles. Estas 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 manera eficiente.

La administración dinámica de recursos de nueva generación también tiene una mejor afinidad de NUMA, una predicción más precisa de los requisitos de recursos y un rebalanceo más rápido mediante una migración en vivo optimizada para el rendimiento.

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

Las CPU virtuales se implementan como subprocesos que están programados para ejecutarse a pedido, como cualquier otro subproceso en un host. Cuando la CPU virtual tiene trabajo, se asigna a una CPU física disponible en la que se debe ejecutar hasta que se vuelva a suspender. De manera similar, la RAM virtual se asigna a las páginas host físicas a través de tablas de páginas que se propagan cuando se accede por primera vez a una página física del invitado. Esta asignación permanece fija hasta que la VM indique que ya no se necesita una página física para invitados.

La administración dinámica de recursos permite que Compute Engine use mejor las CPU físicas disponibles mediante la programación de VMs en servidores según la demanda de recursos y la programación de subprocesos de CPU virtual en CPU físicas para que se minimice el tiempo de espera. En la mayoría de los casos, podemos hacerlo sin problemas para que Google Cloud pueda ejecutar las VMs de manera más eficiente en menos servidores.

Componentes de la administración dinámica de recursos

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

Servidores físicos más grandes y eficaces

El recuento de núcleos y la densidad de RAM aumentaron de manera constante, de manera que ahora los servidores host tienen muchos más recursos que cualquier VM individual. Google compara de forma continua el hardware nuevo y busca plataformas que sean rentables y que funcionen bien para la variedad más amplia de cargas de trabajo y servicios en la nube, lo que te permite aprovechar las tecnologías más recientes cuando están disponibles.

Ubicación inteligente de VM

El sistema de administración de clústeres de Google observa la demanda de CPU, RAM, ancho de banda de memoria y otras demandas de recursos de las VM que se ejecutan en un servidor físico. Usa esta información para predecir el rendimiento que tendrá una VM recién agregada en ese servidor. Luego, busca en miles de servidores para encontrar la mejor ubicación y agregar una VM. Estas observaciones garantizan que el momento en que se ubica una VM nueva sea compatible con sus vecinos y no sea probable que experimente interferencias desde esas instancias.

Migración en vivo optimizada para el rendimiento

Después de colocar las VMs en un host, Compute Engine supervisa de forma continua el rendimiento y los tiempos de espera de la VM. Si las demandas de recursos de las VMs aumentan, Compute Engine puede usar la migración en vivo para cambiar las cargas de trabajo con transparencia a otros hosts del centro de datos. La política de migración en vivo se rige por un enfoque predictivo que le da tiempo a Compute Engine para cambiar la carga, a menudo antes de que las VMs experimenten el tiempo de espera.

Programador de CPU del hipervisor

El programador de CPU del hipervisor asigna de forma dinámica la CPU virtual y la memoria de la CPU física y la memoria del servidor host a pedido. Esta administración dinámica impulsa la rentabilidad de las VMs mediante el uso mejor de los recursos físicos. El uso eficiente de los recursos significa que Compute Engine puede ejecutar VMs de manera más eficiente en menos servidores, lo que permite que Google Cloud transfiera el ahorro a los usuarios.

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

E2 fue la primera serie de VM en ofrecer administración dinámica de recursos mediante un dispositivo de globo de memoria Virtio.

Dispositivo de globo de memoria Virtio con VMs E2

El globo de memoria es un mecanismo de interfaz entre el host y el invitado que ajusta 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. A través del dispositivo de globo de memoria Virtio, un host puede solicitar de forma explícita a un invitado que produzca una cierta cantidad de páginas de memoria libre (también llamada aumento de globo de memoria) y recuperar la memoria para que el host pueda usar la memoria libre para otras VMs. Del mismo modo, el dispositivo de globo de memoria Virtio puede devolver las páginas de memoria al invitado mediante el aumento del globo de memoria. Las VMs E2 son la única familia de máquinas que usa el dispositivo de globo de memoria.

Las instancias de VM E2 de Compute Engine que se basan en una imagen pública tienen un dispositivo de globo de memoria Virtio, que supervisa cuánta memoria usa el sistema operativo invitado. El sistema operativo invitado comunica su memoria disponible al sistema host. El host reasigna las memorias no utilizadas a otros procesos según demanda y, por lo tanto, usa la memoria de manera más eficaz. Compute Engine recopila y utiliza estos datos para hacer recomendaciones de ajuste de tamaño más precisas.

Verifica la instalación del controlador

Para comprobar si el controlador del dispositivo de globo de memoria Virtio está instalado y cargado en tu imagen, ejecuta el comando que se indica a continuación.

Linux

La mayoría de las distribuciones de Linux incluyen el controlador del dispositivo de globo de memoria Virtio. Para verificar que el controlador esté instalado y cargado en tu imagen, 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 evita por error asignaciones grandes cuando el dispositivo de globo está presente. Esto rara vez es un problema en la práctica, pero recomendamos cambiar la configuración de memoria virtual overcommit_memory como 1 para evitar que ocurra el problema. Este cambio se hace de forma predeterminada en todas las imágenes proporcionadas por Google que se publican desde el 9 de febrero de 2021.

A fin de corregir la configuración, usa el siguiente comando para cambiar el valor de 0 a 1:

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

Para conservar este cambio en los reinicios, agrega el siguiente comando al archivo /etc/sysctl.conf:

vm.overcommit_memory=1

Windows

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

googet verify google-compute-engine-driver-balloon

Inhabilita el dispositivo de globo de memoria Virtio

El uso del dispositivo de globo de memoria Virtio permite que Compute Engine use los recursos de memoria de manera más efectiva para que Google Cloud pueda ofrecer VMs E2 a precios más bajos. Para inhabilitar el dispositivo de globo de memoria de Virtio, inhabilita el controlador del dispositivo. Después de inhabilitar el dispositivo, seguirás recibiendo recomendaciones de reducción de tamaño. Sin embargo, es posible que no sean tan precisas.

Linux

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

sudo rmmod virtio_balloon

Puedes agregar este comando a la secuencia de comandos de inicio de la VM para inhabilitar el dispositivo automáticamente cuando se inicie la VM.

Windows

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

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

Puedes colocar este comando en la secuencia de comandos de inicio de la VM para inhabilitar automáticamente el dispositivo cuando se inicie la VM.

¿Qué sigue?