Con vSphere Client se puede ver información sobre la configuración de asignación de memoria y modificarla. Para administrar de manera efectiva los recursos de memoria, también es necesario estar familiarizado con la sobrecarga de memoria, la tasa de memoria inactiva y la forma en que los hosts ESXi recuperan memoria.

Al administrar recursos de memoria, es posible especificar una asignación de memoria. Si no se personaliza la asignación de memoria, el host ESXi utiliza valores predeterminados que funcionan bien en la mayoría de las situaciones.

Es posible especificar la asignación de memoria de diversas maneras.

  • Utilice los atributos y las funciones especiales disponibles a través de vSphere Client. vSphere Client permite conectarse al host ESXi o al sistema vCenter Server.
  • Utilice la configuración avanzada.
  • Utilice el SDK de vSphere para la asignación de memoria generada por script.
Nota: En este capítulo, "memoria" puede hacer referencia a RAM física o memoria persistente.

Información sobre la sobrecarga de memoria

La virtualización de recursos de memoria tiene algún tipo de sobrecarga asociada.

Las máquinas virtuales de ESXi pueden incurrir en dos tipos de sobrecarga de memoria.

  • El tiempo adicional para acceder a la memoria en una máquina virtual.
  • El espacio adicional que necesita el host ESXi para su propio código y estructura de datos, más allá de la memoria asignada a cada máquina virtual.

La virtualización de memoria de ESXi agrega poca sobrecarga de tiempo a los accesos de memoria. Debido a que el hardware de paginación del procesador utiliza tablas de páginas (tablas de páginas de sombra para un enfoque basado en software o tablas de páginas de dos niveles para un enfoque asistido por hardware) directamente, la mayoría de los accesos de memoria en la máquina virtual pueden ejecutarse sin sobrecarga de traducción de direcciones.

La sobrecarga de espacio de memoria tiene dos componentes.

  • Una sobrecarga fija que abarca todo el sistema para el VMkernel.
  • Una sobrecarga adicional para cada máquina virtual.

La memoria de sobrecarga incluye el espacio reservado para el búfer de la trama de la máquina virtual y distintas estructuras de datos de virtualización, como tablas de páginas de sombra. La memoria de sobrecarga depende de la cantidad de CPU virtuales y de la memoria configurada para el sistema operativo invitado.

Memoria de sobrecarga en máquinas virtuales

Las máquinas virtuales requieren una determinada cantidad de memoria de sobrecarga disponible para encenderse. Es necesario estar al tanto de la cantidad de esta sobrecarga.

La cantidad de memoria de sobrecarga necesaria para una máquina virtual depende de una gran cantidad de factores, incluida la cantidad de vCPU y el tamaño de la memoria, la cantidad y los tipos de dispositivos, el modo de ejecución que utiliza el monitor y la versión de hardware de la máquina virtual. La versión de vSphere que utiliza también puede afectar a la cantidad de memoria necesaria. VMX calcula automáticamente la cantidad de memoria de sobrecarga necesaria para una máquina virtual.

Para determinar cuánta memoria de sobrecarga se necesita para una configuración específica, primero es necesario encender la máquina virtual en cuestión. Observe el archivo vmware.log. Cuando se enciende la máquina virtual, la cantidad de memoria de sobrecarga requerida se detalla en el registro. En el registro, busque VMMEM para ver la cantidad inicial y exacta de memoria de sobrecarga reservada para la máquina virtual.

Cómo asignan la memoria los hosts ESXi

El host asigna la memoria especificada en el parámetro Limit a cada máquina virtual, a menos que la memoria se encuentre sobrecomprometida. ESXi nunca asigna a una máquina virtual más memoria que la especificada en el tamaño de su memoria física.

Por ejemplo, una máquina virtual de 1 GB puede tener el límite predeterminado (ilimitado) o un límite especificado por el usuario (por ejemplo, 2 GB). En ambos casos, el host ESXi nunca asigna más de 1 GB, que es el tamaño de la memoria física especificado para ese host.

Cuando la memoria se sobrecompromete, la cantidad de memoria que se asigna a cada máquina virtual oscila entre el valor especificado en Reservation (Reserva) y en Limit (Límite). En general, si la cantidad de memoria otorgada a una máquina virtual es superior a su reserva, ese valor varía según la carga de memoria actual.

El host determina las asignaciones para cada máquina virtual en función de la cantidad de recursos compartidos asignados a esa máquina y del cálculo aproximado del tamaño de su espacio de trabajo reciente.

  • Cuota: los hosts ESXi utilizan una directiva modificada de asignación de memoria compartida proporcional. Con las cuotas de memoria, una máquina virtual tiene derecho a una fracción de la memoria física disponible.
  • Tamaño de espacio de trabajo: los hosts ESXi supervisan la actividad de la memoria durante períodos sucesivos de tiempo de ejecución de una máquina virtual para calcular de forma aproximada el espacio de trabajo para esa máquina. Los cálculos aproximados se nivelan entre varios períodos mediante técnicas que reaccionan con rapidez a los aumentos en el tamaño del espacio de trabajo y con mayor lentitud a las disminuciones en el tamaño del espacio de trabajo.

    Gracias a este enfoque, una máquina virtual de la cual se recupera memoria inactiva puede aumentar su capacidad de forma rápida a su asignación total basada en recursos compartidos cuando comienza a utilizar más activamente su memoria.

    La actividad de memoria se supervisa por 60 segundos (período predeterminado) para calcular el tamaño aproximado de los espacios de trabajo. Para modificar el valor predeterminado, ajuste la opción de configuración avanzada Mem.SamplePeriod. Consulte Establecer atributos de host avanzados.

Tasa de memoria para máquinas virtuales inactivas

Si una máquina virtual no está utilizando de forma activa toda la memoria que tiene actualmente asignada, ESXi carga más por la memoria inactiva que por la memoria en uso. Esto ayuda a evitar que las máquinas virtuales acumulen memoria inactiva.

La tasa de memoria inactiva se aplica de forma progresiva. El incremento de la tasa efectiva es proporcional al aumento de la memoria inactiva en relación con la memoria activa de la máquina virtual. En versiones anteriores de ESXi que no admitían grupos de recursos jerárquicos, la tasa de la memoria inactiva de una máquina virtual era siempre la misma.

Se puede modificar la tasa de memoria inactiva con la opción Mem.IdleTax. Se puede utilizar esta opción, junto con el atributo avanzado Mem.SamplePeriod, para controlar de qué forma el sistema determina las asignaciones de memoria de destino de las máquinas virtuales. Consulte Establecer atributos de host avanzados.

Nota: En la mayoría de los casos, no es necesario ni apropiado realizar cambios en Mem.IdleTax.

Archivos de intercambio VMX

Los archivos de intercambio ejecutables de máquinas virtuales (VMX) permiten que el host reduzca en gran medida la cantidad de memoria de sobrecarga reservada para el proceso VMX.

Nota: Los archivos de intercambio VMX no están relacionados con la característica de memoria caché de intercambio del host ni con los archivos de intercambio normales en el nivel del host.

ESXi reserva memoria por máquina virtual para distintos fines. La memoria para las necesidades de ciertos componentes, como el supervisor de máquina virtual (VMM) y los dispositivos virtuales, está completamente reservada cuando una máquina virtual está encendida. Sin embargo, parte de la memoria de sobrecarga que está reservada para el proceso de VMX puede intercambiarse. La característica de intercambio VMX reduce significativamente la reserva de memoria VMX (por ejemplo, de aproximadamente 50 MB o más por máquina virtual a aproximadamente 10 MB por máquina virtual). Esto permite que la memoria restante se intercambie cuando la memoria del host está sobrecomprometida, lo que reduce la reserva de memoria de sobrecarga para cada máquina virtual.

El host crea automáticamente los archivos de intercambio VMX siempre que exista espacio suficiente en el disco en el momento de encender una máquina virtual.

Recuperar memoria

Los hosts ESXi pueden recuperar memoria de máquinas virtuales.

Un host asigna la cantidad de memoria especificada por una reserva directamente a una máquina virtual. Cualquier elemento por encima de la reserva se asigna utilizando los recursos físicos del host, o bien cuando los recursos físicos no están disponibles, se maneja con técnicas especiales, como aumento de memoria o intercambio. Los hosts pueden utilizar dos técnicas para expandir o contraer dinámicamente la cantidad de memoria asignada a máquinas virtuales.

  • Los sistemas ESXi utilizan el controlador del globo de memoria (vmmemctl), cargado en el sistema operativo invitado que se ejecuta en una máquina virtual. Consulte Controlador del globo de memoria.
  • El sistema ESXi intercambia una página de una máquina virtual a un archivo de intercambio de servidor sin ninguna participación del sistema operativo invitado. Cada máquina virtual tiene su propio archivo de intercambio.

Controlador del globo de memoria

El controlador del globo de memoria (vmmemctl) colabora con el servidor en la recuperación de las páginas que el sistema operativo invitado considera menos valiosas.

El controlador utiliza una técnica propia de aumento de memoria que proporciona un rendimiento predecible; este coincide bastante con el comportamiento de un sistema nativo ante restricciones de memoria similares. Esta técnica aumenta o disminuye la presión de memoria sobre el sistema operativo invitado, lo cual produce que el invitado utilice sus propios algoritmos de administración de memoria nativa. Cuando la memoria es compacta, el sistema operativo invitado determina qué páginas recuperará y, de ser necesario, las intercambia a su propio disco virtual.

Figura 1. Aumentar la memoria en el sistema operativo invitado

Esta imagen muestra el aumento de memoria en el sistema operativo invitado.
Nota: Se debe configurar suficiente espacio de intercambio en el sistema operativo invitado. Algunos sistemas operativos invitados tienen otras limitaciones.

Si fuera necesario, se puede limitar la cantidad de memoria que vmmemctl recuperará; para eso, configure el parámetro sched.mem.maxmemctl de una máquina virtual específica. Esta opción especifica la cantidad máxima de memoria en megabytes (MB) que puede recuperarse de una máquina virtual. Consulte Establecer atributos avanzados para las máquinas virtuales.

Compartir la memoria entre varias máquinas virtuales

En muchas cargas de trabajo de ESXi, existe la posibilidad de compartir la memoria entre varias máquinas virtuales (así como dentro de una sola máquina virtual).

El uso compartido de la memoria de ESXi se ejecuta como una actividad en segundo plano en la que se buscan oportunidades de uso compartido con el paso del tiempo. La cantidad de memoria que se ahorra varía con el paso del tiempo. En general, si la carga de trabajo es bastante constante, la cantidad aumenta lentamente hasta que se aprovechan todas las oportunidades de uso compartido.

Para determinar la efectividad del uso compartido de la memoria para una carga de trabajo determinada, intente ejecutar la carga de trabajo y utilice resxtop o esxtop para ver el ahorro real. Busque la información en el campo PSHARE en el modo interactivo de la página Memoria.

Utilice las opciones de configuración avanzada Mem.ShareScanTime y Mem.ShareScanGHz para controlar la velocidad a la que el sistema examina la memoria en busca de oportunidades para compartirla.

También puede configurar el uso compartido de máquinas virtuales individuales. Para ello, establezca la opción sched.mem.pshare.enable.

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. Esto significa que el uso compartido de páginas no ocurre entre máquinas virtuales y solo ocurre dentro de una máquina virtual. Se presentó el concepto "salting" para ayudar a solucionar las posibles inquietudes de los administradores del sistema en lo que respecta a las implicancias de seguridad del uso compartido transparente de páginas. Salting puede utilizarse para permitir una administración más granular de las máquinas virtuales que participan en el uso compartido transparente de páginas en comparación con lo que era posible antes. Con la nueva configuración de salting, las máquinas virtuales pueden compartir páginas si el valor de salting y el contenido de las páginas son idénticos. Puede establecerse una nueva opción de configuración de host Mem.ShareForceSalting para activar o desactivar salting.

Consulte Atributos avanzados en vSphere para obtener información sobre cómo establecer las opciones avanzadas.

Comprimir memoria

ESXi proporciona memoria caché de compresión de memoria para mejorar el rendimiento de la máquina virtual cuando se produce una sobreasignación de memoria. La compresión de memoria está activada de forma predeterminada. Cuando la memoria de un host se ve sobrecomprometida, ESXi comprime las páginas virtuales y las almacena en la memoria.

Ya que el acceso a la memoria comprimida es más rápido que el acceso a la memoria que se intercambia con el disco, la compresión de memoria de ESXi permite hacer un uso excesivo de memoria sin perjudicar el rendimiento de forma significativa. Cuando es necesario intercambiar una página virtual, ESXi primero intenta comprimir la página. Las páginas que se pueden comprimir a 2 KB o a un tamaño menor se almacenan en la memoria caché de compresión de la máquina virtual, lo que aumenta la capacidad del host.

Puede establecer el tamaño máximo de la memoria caché de compresión y desactivar la compresión de memoria mediante la casilla Configuración avanzada de vSphere Client.

Activar o desactivar la memoria caché de compresión de memoria

La compresión de memoria está activada de forma predeterminada. Se puede utilizar el cuadro Configuración avanzada del sistema en vSphere Client para activar o desactivar la compresión de memoria correspondiente a un host.

Procedimiento

  1. Desplácese hasta el host en vSphere Client.
  2. Haga clic en Configurar.
  3. En Sistema, seleccione Configuración avanzada del sistema.
  4. Busque Mem.MemZipEnable y haga clic en el botón Editar.
  5. Introduzca 1 para activar o escriba 0 para desactivar la memoria caché de compresión de memoria.
  6. Haga clic en Aceptar.

Establecer el tamaño máximo de la memoria caché de compresión de memoria

Se puede establecer el tamaño máximo de la memoria caché de compresión de memoria de las máquinas virtuales del host.

El tamaño de la memoria caché de compresión se establece como un porcentaje del tamaño de la memoria de la máquina virtual. Por ejemplo, si introduce un 20 % y la memoria de una máquina virtual tiene un tamaño de 1.000 MB, ESXi puede utilizar hasta 200 MB de memoria del host para almacenar las páginas comprimidas de la máquina virtual.

Si no se establece el tamaño de la memoria caché de compresión, ESXi utiliza el valor predeterminado del 10 %.

Procedimiento

  1. Desplácese hasta el host en vSphere Client.
  2. Haga clic en Configurar.
  3. En Sistema, seleccione Configuración avanzada del sistema.
  4. Busque Mem.MemZipMaxPct y haga clic en el botón Editar.
    El valor de este atributo determina el tamaño máximo de la memoria caché de compresión de la máquina virtual.
  5. Introduzca el tamaño máximo de la memoria caché de compresión.
    El valor es un porcentaje del tamaño de la máquina virtual, que debe ser de entre el 5 % y el 100 %.
  6. Haga clic en Aceptar.

Medir y diferenciar los tipos de uso de la memoria

En la pestaña Rendimiento de vSphere Client, se muestra una serie de métricas que sirven para analizar el uso de memoria.

Algunas de estas métricas de memoria miden la memoria física del invitado, mientras que otras métricas miden la memoria de la máquina. Por ejemplo, dos de los tipos de uso de memoria que se pueden examinar con las métricas de rendimiento son la memoria física del invitado y la memoria de la máquina. La memoria física del invitado se mide con la métrica de memoria concedida (para una máquina virtual) o de memoria compartida (para un host). Sin embargo, para medir la memoria de la máquina, se deben utilizar la métrica de memoria consumida (para una máquina virtual) o de memoria común compartida (para un host). Es importante comprender la diferencia conceptual entre estos tipos de uso de memoria para determinar qué miden estas métricas y cómo interpretar los resultados.

El VMkernel asigna la memoria física del invitado a la memoria de la máquina, pero esta asignación no siempre se realiza con una correspondencia uno a uno. Es posible que se asignen varias secciones de la memoria física del invitado a la misma sección de memoria de la máquina (en el caso de uso compartido de la memoria), o bien es posible que no se asignen secciones específicas de la memoria física del invitado a la memoria de la máquina (cuando el VMkernel intercambia la memoria física del invitado o la aumenta rápidamente). En estos casos, los cálculos del uso de la memoria física del invitado y de la memoria de la máquina en una máquina virtual individual o un host varían.

Vea el ejemplo en la siguiente imagen, en el que se muestran dos máquinas virtuales ejecutándose en un host. Cada bloque representa 4 KB de memoria y cada color o letra representa un conjunto diferente de datos en un bloque.

Figura 2. Ejemplo de uso de memoria

En esta imagen, se muestra un ejemplo de uso de memoria en dos máquinas virtuales.

Las métricas de rendimiento de las máquinas virtuales se pueden determinar de la siguiente manera:

  • Para determinar la memoria concedida (la cantidad de memoria física del invitado que se asigna a la memoria de la máquina) para la máquina virtual 1, cuente la cantidad de bloques de memoria física del invitado de la máquina virtual 1 que tienen flechas que apuntan a la memoria de la máquina y multiplíquela por 4 KB. Como hay 5 bloques con flechas, la memoria concedida es de 20 KB.
  • La memoria consumida es la cantidad de memoria de la máquina asignada a la máquina virtual, que representa el ahorro de la memoria compartida. Primero, cuente la cantidad de bloques en la memoria de la máquina que tienen flechas desde la memoria física del invitado de la máquina virtual 1. Hay 3 bloques de este tipo, pero uno de ellos se comparte con la máquina virtual 2. Por lo tanto, cuente dos bloques completos más la mitad del tercero y multiplíquelos por 4 KB para obtener el total de 10 KB de memoria consumida.
La diferencia principal entre estas dos métricas es que para la memoria concedida se cuentan los bloques con flechas en el nivel de la memoria física del invitado, mientras que para la memoria consumida se cuentan los bloques con flechas en el nivel de la memoria de la máquina. La cantidad de bloques es diferente en los dos niveles debido al uso compartido de la memoria. Por lo tanto, la memoria concedida es diferente a la memoria consumida. Se ahorra memoria mediante el uso compartido u otras técnicas de recuperación.
El resultado es similar cuando se calcula la memoria compartida y la memoria común compartida del host.
  • La memoria compartida del host es la suma de la memoria compartida de cada máquina virtual. Para calcular la memoria compartida, se debe observar la memoria física del invitado de cada máquina virtual y contar la cantidad de bloques con flechas que apuntan a los bloques de memoria de la máquina que, a su vez, tienen más de una flecha apuntándolos. En este ejemplo, hay 6 bloques de este tipo, por lo que la memoria compartida del host es de 24 KB.
  • La memoria común compartida es la cantidad de memoria de la máquina compartida entre las máquinas virtuales. Para calcularla, observe la memoria de la máquina y cuente la cantidad de bloques que tienen más de una flecha apuntándolos. Se observan 3 de estos bloques, por lo que la memoria común compartida es de 12 KB.
La memoria compartida está relacionada con la memoria física del invitado y tiene en cuenta el origen de las flechas. La memoria común compartida, en cambio, está asociada con la memoria de la máquina y tiene en cuenta el destino de las flechas.

Las métricas de memoria que miden la memoria física del invitado y la memoria de la máquina pueden parecer contradictorias. De hecho, miden aspectos diferentes del uso de la memoria de una máquina virtual. Al comprender la diferencia entre estas métricas, podrá usarlas mejor para diagnosticar problemas de rendimiento.

Confiabilidad de la memoria

La confiabilidad de la memoria, también conocida como aislamiento de errores, permite que ESXi deje de utilizar partes de la memoria cuando determina que pueden producirse errores, así como cuando ocurrieron errores verdaderamente.

Cuando se haya informado una cantidad suficiente de errores corregidos a una dirección determinada, ESXi deja de usar esta dirección para evitar que el error corregido se convierta en error no corregido.

La confiabilidad de la memoria ofrece una mejor confiabilidad de VMkernel a pesar de los errores de RAM corregidos y no corregidos. También permite que el sistema evite el uso de páginas de memoria que pueden contener errores.

Notificación de corrección de aislamiento de errores

Gracias a la confiabilidad de la memoria, VMkernel deja de utilizar páginas que reciben una notificación de aislamiento de errores.

El usuario recibe un evento en vSphere Client cuando VMkernel se recupera de un error de memoria no corregible, cuando VMkernel retira un porcentaje importante de memoria del sistema debido a una gran cantidad de errores corregibles o si hay una gran cantidad de páginas que no se pueden retirar.

Procedimiento

  1. Vacíe el host.
  2. Migre las máquinas virtuales.
  3. Ejecute las pruebas de hardware relacionadas con la memoria.

Intercambio de sistema

El intercambio de sistema es un proceso de recuperación de memoria que puede aprovechar los recursos de memoria no utilizados en todo un sistema.

El intercambio de sistema permite que el sistema recupere memoria de los consumidores de memoria que no son máquinas virtuales. Cuando el intercambio de sistema está activado, existe una compensación entre el impacto de recuperar la memoria de otro proceso y la capacidad de asignar esa memoria a una máquina virtual que puede utilizarla. La cantidad de espacio requerido para el intercambio de sistema es de 1 GB.

Para recuperar la memoria, se deben quitar datos de ella y escribirlos en el almacenamiento en segundo plano. El acceso a los datos desde el almacenamiento en segundo plano es más lento que el acceso desde la memoria, y por eso es importante seleccionar con cuidado el lugar donde se almacenarán los datos intercambiados.

ESXi determina automáticamente dónde debe almacenarse el intercambio de sistema. Esta es la Ubicación preferida del archivo de intercambio. Esta decisión puede complementarse si se selecciona un determinado conjunto de opciones. El sistema selecciona la mejor opción habilitada posible. Si ninguna de las opciones es viable, no se activa el intercambio de sistema.

Las opciones disponibles son las siguientes:

  • Almacén de datos: permite la utilización del almacén de datos especificado. Tenga en cuenta que no pueden especificarse almacenes de datos de vSAN o de VMware vSphere® Virtual VolumesTM para archivos de intercambio de sistema.
  • Memoria caché de intercambio del host: permite utilizar parte de la memoria caché de intercambio del host.
  • Ubicación preferida del archivo de intercambio: permite utilizar la ubicación preferida del archivo de intercambio configurada para el host.

Configurar el intercambio de sistema

Puede personalizar las opciones para determinar la ubicación del intercambio de sistema.

Requisitos previos

Active la casilla Habilitado en el cuadro de diálogo Editar configuración de intercambio de sistema.

Procedimiento

  1. Desplácese hasta el host en vSphere Client.
  2. Haga clic en Configurar.
  3. En Sistema, seleccione Intercambio de sistema.
  4. Haga clic en Editar.
  5. Seleccione las casillas correspondientes a cada opción que desee habilitar.
  6. Si selecciona la opción Almacén de datos, seleccione un almacén de datos del menú desplegable.
  7. Haga clic en Aceptar.