XenServer

Memoria de VM

Cuando crea una VM, se le asigna una cantidad fija de memoria. Puede usar el Control Dinámico de Memoria (DMC) para mejorar la utilización de la memoria física en su entorno XenServer®. DMC es una característica de administración de memoria que permite la reasignación dinámica de memoria entre las VM.

XenCenter proporciona una visualización gráfica del uso de la memoria en su pestaña Memoria. Para obtener más información, consulte la documentación de XenCenter.

El Control Dinámico de Memoria (DMC) ofrece los siguientes beneficios:

  • Puede agregar o eliminar memoria sin reiniciar las VM, lo que proporciona una experiencia fluida al usuario.

  • Cuando los hosts están llenos, DMC le permite iniciar más VM en estos hosts, reduciendo proporcionalmente la cantidad de memoria asignada a las VM en ejecución.

¿Qué es el Control Dinámico de Memoria (DMC)?

XenServer DMC funciona ajustando automáticamente la memoria de las VM en ejecución, manteniendo la cantidad de memoria asignada a cada VM entre los valores mínimo y máximo de memoria especificados, garantizando el rendimiento y permitiendo una mayor densidad de VM por host.

Sin DMC, cuando un host está lleno, el inicio de VM adicionales falla con errores de “memoria insuficiente”. Para reducir la asignación de memoria de VM existente y hacer espacio para más VM, edite la asignación de memoria de cada VM y luego reinicie la VM. Cuando se usa DMC, XenServer intenta recuperar memoria reduciendo automáticamente la asignación de memoria actual de las VM en ejecución dentro de sus rangos de memoria definidos. XenServer intenta recuperar memoria incluso cuando el host está lleno.

Notas:

El Control Dinámico de Memoria no es compatible con las VM que tienen una GPU virtual.

El concepto de rango dinámico

Para cada VM, el administrador puede establecer un rango de memoria dinámico. El rango de memoria dinámico es el rango dentro del cual se puede agregar/eliminar memoria de la VM sin necesidad de reiniciarla. Cuando una VM está en ejecución, el administrador puede ajustar el rango dinámico. XenServer siempre garantiza mantener la cantidad de memoria asignada a la VM dentro del rango dinámico. Por lo tanto, ajustarlo mientras la VM está en ejecución puede hacer que XenServer ajuste la cantidad de memoria asignada a la VM. El caso más extremo es cuando el administrador establece el mínimo/máximo dinámico al mismo valor, lo que obliga a XenServer a garantizar que esta cantidad de memoria se asigne a la VM. Si se requiere iniciar nuevas VM en hosts “llenos”, la memoria de las VM en ejecución se ‘comprime’ para iniciar las nuevas. La memoria adicional requerida se obtiene al comprimir las VM en ejecución existentes proporcionalmente dentro de sus rangos dinámicos predefinidos.

DMC le permite configurar niveles de memoria mínimos y máximos dinámicos, creando un Rango de Memoria Dinámico (DMR) en el que opera la VM.

  • Memoria Mínima Dinámica: Un límite inferior de memoria que se asigna a la VM.

  • Límite superior dinámico: Un límite superior de memoria que se asigna a la VM.

Por ejemplo, si la Memoria dinámica mínima se estableció en 512 MB y la Memoria dinámica máxima se estableció en 1024 MB, esto le da a la VM un Rango de memoria dinámica (DMR) de 512-1024 MB, dentro del cual opera. XenServer garantiza asignar siempre a cada VM memoria dentro de su DMR especificado cuando se utiliza DMC.

El concepto de rango estático

Muchos sistemas operativos compatibles con XenServer no «entienden» completamente la noción de agregar o eliminar memoria dinámicamente. Como resultado, XenServer debe declarar la cantidad máxima de memoria que se le pide a una VM que consuma en el momento de su reinicio. Declarar la cantidad máxima de memoria permite que el sistema operativo invitado dimensione sus tablas de páginas y otras estructuras de administración de memoria en consecuencia. Esto introduce el concepto de un rango de memoria estático dentro de XenServer. El rango de memoria estático no se puede ajustar cuando la VM está en ejecución. Para un arranque particular, el rango dinámico está restringido de tal manera que siempre está contenido dentro de este rango estático. El mínimo estático (el límite inferior del rango estático) protege al administrador y se establece en la cantidad más baja de memoria con la que el sistema operativo puede ejecutarse con XenServer.

Nota:

Recomendamos que no cambie el nivel mínimo estático, ya que el nivel mínimo estático se establece en el nivel admitido por sistema operativo. Consulte la tabla de restricciones de memoria para obtener más detalles.

Establecer un nivel máximo estático superior a un máximo dinámico le permite asignar más memoria a una VM en el futuro sin reiniciar la VM.

Comportamiento de DMC

Reducción automática de VM

  • Si DMC no está habilitado, cuando los hosts están llenos, los nuevos inicios de VM fallan con errores de ‘memoria insuficiente’.

  • Cuando DMC está habilitado, incluso cuando los hosts están llenos, XenServer intenta recuperar memoria reduciendo la asignación de memoria de las VM en ejecución dentro de sus rangos dinámicos definidos. De esta manera, las VM en ejecución se reducen proporcionalmente a la misma distancia entre el mínimo dinámico y el máximo dinámico para todas las VM en el host.

Cuando DMC está habilitado

  • Cuando la memoria del host es abundante: Todas las VM en ejecución reciben su nivel de Memoria dinámica máxima.

  • Cuando la memoria del host es escasa: Todas las VM en ejecución reciben su nivel de Memoria dinámica mínima.

Al configurar DMC, recuerde que asignar solo una pequeña cantidad de memoria a una VM puede afectarla negativamente. Por ejemplo, asignar muy poca memoria:

  • El uso del Control Dinámico de Memoria para reducir la cantidad de memoria física disponible para una VM puede hacer que se reinicie lentamente. Del mismo modo, si asigna muy poca memoria a una VM, puede iniciarse lentamente.

  • Establecer el mínimo de memoria dinámica para una VM demasiado bajo puede provocar un rendimiento deficiente o problemas de estabilidad cuando la VM se está iniciando.

¿Cómo funciona el DMC?

Con DMC, es posible operar una máquina virtual invitada en uno de dos modos:

  1. Modo de destino: El administrador especifica un objetivo de memoria para el invitado. XenServer ajusta la asignación de memoria del invitado para cumplir el objetivo. Especificar un objetivo es útil en entornos de servidor virtual y en situaciones en las que se sabe exactamente cuánta memoria se desea que utilice un invitado. XenServer ajusta la asignación de memoria del invitado para cumplir el objetivo que especifique.

  2. Modo de rango dinámico: El administrador especifica un rango de memoria dinámica para el invitado. XenServer selecciona un objetivo del rango y ajusta la asignación de memoria del invitado para cumplir el objetivo. Especificar un rango dinámico es útil en cualquier situación en la que desee que XenServer reparticione la memoria del host dinámicamente en respuesta a un número cambiante de invitados o a una presión de memoria del host cambiante. XenServer selecciona un objetivo dentro del rango y ajusta la asignación de memoria del invitado para cumplir el objetivo.

Nota:

Es posible cambiar entre el modo de destino y el modo de rango dinámico en cualquier momento para cualquier invitado en ejecución. Especifique un nuevo destino o un nuevo rango dinámico, y XenServer se encargará del resto.

Restricciones de memoria

XenServer permite a los administradores utilizar todas las operaciones de control de memoria con cualquier sistema operativo invitado. Sin embargo, XenServer aplica la siguiente restricción de ordenación de propiedades de memoria para todos los invitados:

0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max

XenServer permite a los administradores cambiar las propiedades de la memoria del invitado a cualquier valor que satisfaga esta restricción, sujeto a comprobaciones de validación. Sin embargo, además de la restricción anterior, solo admitimos ciertas configuraciones de memoria del invitado para cada sistema operativo compatible. El rango de configuraciones compatibles depende del sistema operativo invitado en uso. XenServer no impide que los administradores configuren invitados para exceder el límite compatible. Sin embargo, se recomienda a los clientes que mantengan las propiedades de memoria dentro de los límites compatibles para evitar problemas de rendimiento o estabilidad. Para obtener directrices detalladas sobre los límites mínimo y máximo de memoria para cada sistema operativo compatible, consulte Compatibilidad con sistemas operativos invitados.

Advertencia:

Al configurar la memoria del invitado, aconsejamos NO exceder la cantidad máxima de memoria física direccionable por su sistema operativo. Establecer un máximo de memoria superior al límite admitido por el sistema operativo puede provocar problemas de estabilidad en el invitado.

El mínimo dinámico debe ser al menos el 75% del máximo estático para todos los sistemas operativos compatibles. Un límite inferior puede provocar problemas de estabilidad. Se recomienda a los administradores que calibren cuidadosamente los tamaños de sus VM y se aseguren de que su conjunto de aplicaciones en funcionamiento funcione de forma fiable con el mínimo dinámico.

Comandos de la CLI de xe

Mostrar las propiedades de memoria estática de una VM

  1. Busque el UUID de la VM requerida:

    xe vm-list
    <!--NeedCopy-->
    
  2. Anote el UUID y, a continuación, ejecute el comando param-name=memory-static

    xe vm-param-get uuid=uuid param-name=memory-static-{min,max}
    <!--NeedCopy-->
    

    Por ejemplo, lo siguiente muestra las propiedades de memoria máxima estática para la VM con el UUID que comienza por ec77:

    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-static-max;
        268435456
    <!--NeedCopy-->
    

    El ejemplo muestra que la memoria máxima estática para esta VM es de 268.435.456 bytes (256 MB).

Mostrar las propiedades de memoria dinámica de una VM

Para mostrar las propiedades de memoria dinámica, siga el procedimiento anterior, pero use el comando param-name=memory-dynamic:

  1. Busque el UUID de la VM requerida:

    xe vm-list
    <!--NeedCopy-->
    
  2. Anote el UUID y, a continuación, ejecute el comando param-name=memory-dynamic:

    xe vm-param-get uuid=uuid param-name=memory-dynamic-{min,max}
    <!--NeedCopy-->
    

    Por ejemplo, lo siguiente muestra las propiedades de memoria máxima dinámica para la VM con el UUID que comienza por ec77

    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-dynamic-max;
        134217728
    <!--NeedCopy-->
    

    El ejemplo muestra que la memoria máxima dinámica para esta VM es de 134.217.728 bytes (128 MB).

Actualizar propiedades de memoria

Advertencia:

Utilice el orden correcto al configurar los parámetros estáticos/dinámicos mínimos/máximos. Además, no debe invalidar la siguiente restricción:

0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max

Actualice el rango de memoria estática de una máquina virtual:

xe vm-memory-static-range-set uuid=uuid min=value max=value
<!--NeedCopy-->

Actualice el rango de memoria dinámica de una máquina virtual:

xe vm-memory-dynamic-range-set \
      uuid=uuid min=value \
      max=value
<!--NeedCopy-->

Especificar un objetivo es útil en entornos de servidores virtuales y en cualquier situación en la que sepa exactamente cuánta memoria desea que utilice un invitado. XenServer ajusta la asignación de memoria del invitado para cumplir el objetivo que especifique. Por ejemplo:

xe vm-memory-target-set target=value vm=vm-name
<!--NeedCopy-->

Actualice todos los límites de memoria (estáticos y dinámicos) de una máquina virtual:

xe vm-memory-limits-set \
      uuid=uuid \
      static-min=value \
      dynamic-min=value \
      dynamic-max=value static-max=value
<!--NeedCopy-->

Notas:

  • Para asignar una cantidad específica de memoria a una VM que no cambia, establezca el Máximo Dinámico y el Mínimo Dinámico en el mismo valor.
  • No puede aumentar la memoria dinámica de una VM más allá del máximo estático.
  • Para modificar el máximo estático de una VM, debe apagar la VM.

Actualizar propiedades de memoria individuales

Advertencia:

No cambie el nivel mínimo estático, ya que se establece en el nivel admitido por sistema operativo. Para obtener más información, consulte Restricciones de memoria.

Actualice las propiedades de memoria dinámica de una VM.

  1. Busque el UUID de la VM requerida:

    xe vm-list
    <!--NeedCopy-->
    
  2. Anote el uuid y, a continuación, utilice el comando memory-dynamic-{min,max}=value

    xe vm-param-set uuid=uuid memory-dynamic-{min,max}=value
    <!--NeedCopy-->
    

El siguiente ejemplo cambia el máximo dinámico a 128 MB:

xe vm-param-set uuid=ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 memory-dynamic-max=128MiB
<!--NeedCopy-->
Memoria de VM