Antes de administrar los recursos de memoria, se debe entender de qué forma ESXi los virtualiza y utiliza.
El VMkernel administra toda la RAM física del host. El VMkernel dedica parte de esta RAM física administrada para uso propio. El resto queda disponible para que lo utilicen las máquinas virtuales.
El espacio de memoria virtual y física se divide en bloques denominados páginas. Cuando la memoria física está llena, los datos de las páginas virtuales que no se encuentran en la memoria física se almacenan en el disco. En general, las páginas son de 4 KB o 2 MB, pero depende de la arquitectura del procesador. Consulte Atributos avanzados de memoria.
Memoria de máquina virtual
Cada máquina virtual consume memoria según su tamaño configurado y según la memoria de sobrecarga adicional destinada a la virtualización.
El tamaño configurado es la cantidad de memoria que se presenta al sistema operativo invitado. Es diferente de la cantidad de RAM física que se asigna a la máquina virtual. Esta última depende de la configuración de recursos (recursos compartidos, reserva, límite) y del nivel de presión de memoria bajo la que se encuentra el host.
Por ejemplo, imagine una máquina virtual con un tamaño configurado de 1 GB. Cuando arranca el sistema operativo invitado, este detecta que se está ejecutando en un equipo dedicado con 1 GB de memoria física. En algunos casos, es posible que se asigne 1 GB completo a la máquina virtual. En otros casos, es posible que se asigne una porción más pequeña. Independientemente de la asignación real, el sistema operativo invitado continúa comportándose como si se estuviera ejecutando en un equipo dedicado con 1 GB de memoria física.
- Shares (Cuotas)
- Especifique la prioridad relativa para una máquina virtual si lo que hay disponible supera la reserva.
- Reservation (Reserva)
-
Es un límite inferior garantizado para la cantidad de RAM física que el host reserva para la máquina virtual, incluso cuando la memoria está sobrecomprometida. Configure la reserva en un nivel que garantice que la máquina virtual tenga suficiente memoria como para ejecutarse de forma eficiente y sin demasiada paginación.
Después de que una máquina consume toda la memoria de su reserva, se le permite retener esa cantidad de memoria, la cual no se puede recuperar, incluso cuando la máquina virtual pasa a estado inactivo. Es posible que algunos sistemas operativos invitados (por ejemplo, Linux) no puedan acceder a toda la memoria configurada inmediatamente después del arranque. Hasta que las máquinas virtuales consumen toda la memoria de la reserva, el VMkernel puede asignar cualquier parte no utilizada de su reserva a otras máquinas virtuales. Sin embargo, una vez que la carga de trabajo del invitado aumenta y la máquina virtual consume toda su reserva, la máquina virtual tiene permiso para conservar esta memoria.
Sobreasignar memoria
Para cada máquina virtual en ejecución, el sistema reserva RAM física para la reserva de la máquina virtual (en caso de que exista) y para su sobrecarga de virtualización.
Los tamaños de memoria totales configurados de todas las máquinas virtuales pueden superar la cantidad de memoria física disponible en el host. Sin embargo, esto no significa necesariamente que la memoria está sobrecomprometida. La memoria está sobrecomprometida cuando la superficie de memoria de trabajo combinada de todas las máquinas virtuales supera la de los tamaños de memoria del host.
Debido a las técnicas de administración de memoria que utiliza el host ESXi, las máquinas virtuales pueden utilizar más RAM virtual que la RAM física disponible en el host. Por ejemplo, puede tener un host con 2 GB de memoria y ejecutar cuatro máquinas virtuales con 1 GB de memoria cada una. En ese caso, la memoria está sobrecomprometida. Por ejemplo, si las cuatro máquinas virtuales están inactivas, la memoria consumida combinada puede estar muy por debajo de 2 GB. Sin embargo, si todas las máquinas virtuales de 4 GB consumen activamente memoria, su superficie de memoria puede superar los 2 GB y, por lo tanto, el host ESXi queda sobrecomprometido.
La sobreasignación tiene sentido ya que, por lo general, algunas máquinas virtuales tienen cargas livianas y otras cargas más pesadas, y los niveles de actividad varían con el transcurso del tiempo.
Para mejorar la utilización de memoria, el host ESXi transfiere memoria de máquinas virtuales inactivas a máquinas virtuales que necesitan más memoria. Utilice el parámetro Reservation (Reserva) o Shares (Cuota) para asignar memoria de manera preferencial a máquinas virtuales importantes. Esta memoria permanece disponible para otras máquinas virtuales si no está en uso. ESXi implementa distintos mecanismos, como el aumento de la memoria, el uso compartido de la memoria, el intercambio y la compresión de la memoria, para ofrecer un rendimiento razonable incluso si la memoria del host no está muy sobrecomprometida.
Además, la compresión de memoria está habilitada de forma predeterminada en los hosts ESXi para mejorar el rendimiento de la máquina virtual cuando la memoria está sobrecomprometida, tal como se describe en Comprimir memoria.
Uso compartido de la memoria
El uso compartido de la memoria es una técnica de ESXi que puede ayudar a lograr una mayor densidad de memoria en un host.
El uso compartido de memoria se basa en la observación de varias máquinas virtuales que pueden estar ejecutando instancias del mismo sistema operativo invitado. Estas máquinas virtuales podrían tener cargadas las mismas aplicaciones o los mismos componentes, o bien contener datos en común. En esos casos, un host utiliza la técnica propia de uso compartido transparente de páginas (TPS) para eliminar las copias redundantes de las páginas de memoria. Con el uso compartido de la memoria, una carga de trabajo que se ejecuta en una máquina virtual a menudo consume menos memoria que la que consumiría al ejecutarse en máquinas físicas. Como resultado, pueden admitirse niveles más altos de sobreasignación de forma eficiente. La cantidad de memoria ahorrada mediante el uso compartido de memoria depende de si la carga de trabajo consiste en máquinas casi idénticas que podrían liberar más memoria. Una carga de trabajo más diversa puede generar un porcentaje inferior de ahorro de memoria.
Debido a cuestiones de seguridad, el uso compartido transparente de páginas entre máquinas virtuales está desactivado de forma predeterminada, y el uso compartido de páginas está restringido al uso compartido de la memoria entre máquinas virtuales. El uso compartido de páginas no ocurre entre máquinas virtuales, solo ocurre dentro de una máquina virtual. Consulte Compartir la memoria entre varias máquinas virtuales para obtener más información.
Virtualización de memoria
Debido al nivel extra de asignación de memoria introducido por la virtualización, ESXi puede administrar la memoria de forma efectiva en todas las máquinas virtuales.
Parte de la memoria física de una máquina virtual podría asignarse a las páginas compartidas o a las páginas sin asignar, o bien intercambiarse.
Un host administra la memoria virtual sin conocer el sistema operativo invitado y sin interferir con el subsistema de administración de memoria del sistema operativo invitado.
El VMM de cada máquina virtual mantiene una asignación desde las páginas de memoria física del sistema operativo invitado hacia las páginas de memoria física en la máquina subyacente. VMware se refiere a las páginas físicas del host subyacente como páginas de la “máquina” y a las páginas físicas del sistema operativo invitado como páginas “físicas”.
Cada máquina virtual ve un espacio de memoria física contigua, de base cero y direccionable. La memoria de la máquina subyacente en el servidor que cada máquina virtual utiliza no es necesariamente contigua.
El sistema operativo invitado administra las direcciones virtuales a físicas del invitado. El hipervisor solo es responsable de traducir las direcciones físicas del invitado a direcciones de la máquina. La virtualización de memoria asistida por hardware utiliza la funcionalidad de hardware para generar las asignaciones combinadas con las tablas de páginas del invitado y las tablas de páginas anidadas que mantiene el hipervisor.
El diagrama muestra la implementación de ESXi de la virtualización de memoria.
- Los cuadros representan las páginas y las flechas muestran las diferentes asignaciones de memoria.
- Las flechas de la memoria virtual del invitado a la memoria física del invitado muestran la asignación que mantienen las tablas de páginas en el sistema operativo invitado. No se muestra la asignación de memoria virtual a memoria lineal para procesadores de arquitectura x86.
- Las flechas que van de la memoria física del invitado a la memoria de la máquina muestran la asignación que mantiene VMM.
- Las flechas discontinuas muestran la asignación de memoria virtual invitada a memoria de la máquina en las tablas de páginas de sombra que también mantiene el VMM. El procesador subyacente que ejecuta la máquina virtual utiliza las asignaciones de tablas de páginas de sombra.
Virtualización de memoria asistida por hardware
Algunas CPU, como AMD SVM-V e Intel Xeon serie 5500, ofrecen compatibilidad de hardware para virtualización de memoria mediante la utilización de dos capas de tablas de páginas.
La primera capa de tablas de páginas almacena traducciones virtuales a físicas de invitados, mientras que la segunda almacena traducciones físicas a virtuales de invitados. El búfer de traducción de direcciones (TLB) es una memoria caché de traducciones mantenida por el hardware de la unidad de administración de memoria (MMU) del procesador. Una omisión de TLB es una omisión en esta memoria caché, y el hardware debe acudir a la memoria (posiblemente varias veces) para encontrar la traducción requerida. En el caso de una omisión de TLB en una determinada dirección virtual de invitado, el hardware analiza ambas tablas de páginas para traducir la dirección virtual del invitado a una dirección de máquina. El sistema operativo invitado mantiene la primera capa de tablas de páginas. El VMM solo mantiene la segunda capa de tablas de páginas.
Consideraciones sobre rendimiento
Cuando utiliza la asistencia de hardware, elimina la sobrecarga de virtualización de memoria de software. En particular, la asistencia de hardware elimina la sobrecarga requerida para mantener las tablas de páginas de sombra sincronizadas con las tablas de páginas de invitados. Sin embargo, la latencia de la omisión de TLB al utilizar asistencia de hardware es significativamente más alta. De forma predeterminada, el hipervisor utiliza páginas grandes en modos asistidos de hardware con el fin de reducir el costo de las omisiones de TLB. En consecuencia, si una carga de trabajo se beneficia o no con la utilización de asistencia de hardware depende principalmente de la sobrecarga que provoca la virtualización de memoria cuando se utiliza la virtualización de memoria de software. Si una carga de trabajo incluye una pequeña cantidad de actividad de tablas de páginas (como creación de procesos, asignación de memoria o cambios de contexto), la virtualización de software no causa una sobrecarga significativa. De manera inversa, las cargas de trabajo con una gran cantidad de actividad de tablas de páginas probablemente se beneficien con la asistencia de hardware.
De forma predeterminada, el hipervisor utiliza páginas grandes en modos asistidos de hardware con el fin de reducir el costo de las omisiones de TLB. El mejor rendimiento se logra mediante la utilización de páginas grandes en traducciones virtuales de invitado a físicas de invitado y en traducciones físicas de invitado a direcciones de máquina.
La opción LPage.LPageAlwaysTryForNPT puede cambiar la directiva para utilizar páginas de gran tamaño en traducciones físicas de invitado a direcciones de máquina. Para obtener más información, consulte Atributos avanzados de memoria.
Compatibilidad con tamaños de página grandes
ESXi proporciona compatibilidad limitada para los tamaños de página grandes.
La arquitectura x86 permite que el software del sistema utilice páginas de 4 KB, 2 MB y 1 GB. Se hace referencia a las páginas de 4 KB como páginas pequeñas mientras que las páginas de 2 MB y 1 GB se conocen como páginas grandes. Las páginas grandes alivian la presión de los búferes de traducción de direcciones (TLB) y reducen el costo de los recorridos de las tablas de páginas, lo que da lugar a una mejora en el rendimiento de la carga de trabajo.
En entornos virtualizados, las páginas grandes pueden ser utilizadas independientemente por el hipervisor y el sistema operativo invitado. Si bien el mayor impacto en el rendimiento se logra si el invitado y el hipervisor utilizan páginas grandes, en la mayoría de los casos se puede observar un impacto en el rendimiento incluso si se utilizan páginas grandes solo en el nivel del hipervisor.
El hipervisor de ESXi usa páginas de 2 MB para respaldar vRAM de invitado de forma predeterminada. vSphere ESXi ofrece compatibilidad limitada para respaldar vRAM de invitado con páginas de 1 GB. Para obtener más información, consulte Respaldo de vRAM de invitado con páginas de 1 GB.