Saltar al contenido

Cómo funciona la memoria dinámica de virtualización

El último martes de cada mes, únete al experto en informática y autor Don Jones para su programa de noticias y charlas de operaciones informáticas. Cubrirá las noticias más candentes de la industria y su impacto en ti, y contará con invitados que te ayudarán a mejorar tus habilidades y a mantenerte al día con nuestros trabajos que cambian rápidamente. Estas «quejas» son extractos del anterior seminario web de Don. ¡Disfruten!

La memoria dinámica es una característica muy comercializada tanto de vSphere como de Hyper-V, que permite asignar más memoria a las máquinas virtuales de un host de la que realmente contiene ese host. También se conoce como sobrecarga de memoria, que es una descripción muy precisa de lo que realmente estás haciendo. ¿Pero cómo funciona esta cosa su magia bajo el capó?

Cómo funciona la memoria dinámica de virtualización
Cómo funciona la memoria dinámica de virtualización

Antes de que la memoria dinámica fuera una cosa, cada byte de memoria virtual asignado a las máquinas virtuales tenía que ser respaldado por la misma cantidad de memoria física. Esto era un mapeo de uno a uno. Es porque el procesador físico en el host tiene que manipular los datos en algún lugar, y la memoria es ese lugar. El problema es que el anfitrión no puede ver «dentro» de la máquina virtual para ver qué memoria se está usando realmente, y por lo tanto tuvo que asumir que TODA la memoria se estaba usando.

La memoria dinámica se basa en el hecho de que, en sistemas operativos como Windows y Linux, la memoria se divide en dos espacios. El modo de usuario es donde se ejecutan las aplicaciones, y el modo de kernel es donde se ejecutan los controladores y servicios críticos del sistema. El truco del modo kernel es que el sistema operativo hace una suposición importante: Cualquier cosa que se ejecute en modo kernel es absolutamente necesaria para que la máquina funcione. Por lo tanto, cuando algo en modo kernel pide memoria, simplemente TIENE que tenerla, incluso si eso significa hacer menos memoria disponible para el modo de usuario.

Así que la memoria dinámica toma la forma de un controlador de dispositivo de modo de núcleo, como un controlador de vídeo o un controlador de red. El hipervisor del host es capaz de comunicarse con este controlador, y decirle al controlador cuándo quiere que la máquina virtual utilice menos memoria física.

Cuando eso sucede, el llamado controlador de globo, que funciona en modo kernel, pide memoria al sistema operativo. El sistema operativo está obligado a proporcionar esa memoria, y reduce la cantidad de memoria disponible en el modo de usuario para hacer.

Una vez que el conductor del globo tiene la memoria que quiere, escribe ceros en ese espacio de memoria. Ahora, el conductor del globo sabe qué memoria tiene asignada, y sabe que la memoria no está realmente en uso. Eso significa que es seguro para el hipervisor ya no mapear esa memoria virtual a la memoria física – liberando la memoria física para ser mapeada en otro lugar. Es un truco bastante bueno, y ahora ya sabes cómo se hace.