XenServer

Memoria de VM

Cuando crea una VM, se asigna una cantidad fija de memoria a la VM. Puede usar el Control dinámico de memoria (DMC) para mejorar la utilización de la memoria física en el entorno de XenServer. DMC es una función de administración de memoria que permite la reasignación dinámica de memoria entre máquinas virtuales.

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

El control dinámico de memoria (DMC) proporciona los siguientes beneficios:

  • Puede agregar o eliminar memoria sin reiniciar las VM, lo que proporciona una experiencia perfecta para el usuario.

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

¿Qué es el control dinámico de memoria (DMC)?

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

Sin DMC, cuando un host está lleno, se produce un error al iniciar más máquinas virtuales y se producen errores de “memoria insuficiente”. Para reducir la asignación de memoria de VM existente y dejar espacio para más VM, modifique la asignación de memoria de cada VM y, a continuación, reinicie la VM. Al usar DMC, XenServer intenta recuperar memoria reduciendo automáticamente la asignación de memoria actual de las máquinas virtuales en ejecución dentro de los rangos de memoria definidos. XenServer intenta recuperar memoria incluso cuando el host está lleno.

Notas:

El control dinámico de memoria no se admite con máquinas virtuales que tienen una GPU virtual.

El concepto de rango dinámico

Para cada VM, el administrador puede establecer un rango de memoria dinámica. El rango de memoria dinámica es el rango dentro del cual se puede agregar/eliminar memoria de la VM sin necesidad de reiniciar. Cuando se ejecuta una máquina virtual, el administrador puede ajustar el rango dinámico. XenServer siempre garantiza mantener la cantidad de memoria asignada a la máquina virtual dentro del rango dinámico. Por lo tanto, si se ajusta mientras la máquina virtual está en ejecución, XenServer puede ajustar la cantidad de memoria asignada a la máquina virtual. El caso más extremo es cuando el administrador establece el valor mínimo/máximo dinámico, lo que obliga a XenServer a garantizar que esta cantidad de memoria se asigne a la máquina virtual. Si es necesario que las máquinas virtuales nuevas se inicien en hosts “completos”, se “exprime” la memoria de las máquinas virtuales en ejecución para iniciar otras nuevas. La memoria adicional requerida se obtiene al comprimir proporcionalmente las VM en ejecución existentes 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ámica (DMR) en el que opera la VM.

  • Memoria mínima dinámica: un límite de memoria inferior que se asigna a la máquina virtual.

  • Límite superior dinámico: un límite superior de memoria que se asigna a la máquina virtual.

Por ejemplo, si la memoria mínima dinámica se estableció en 512 MB y la memoria máxima dinámica se estableció en 1024 MB, le da a la máquina virtual un rango de memoria dinámica (DMR) de 512 a 1024 MB, dentro del cual funciona. XenServer garantiza asignar siempre la memoria de cada máquina virtual dentro del DMR especificado cuando utilice DMC.

El concepto de rango estático

Muchos sistemas operativos compatibles con XenServer no “entienden” completamente la noción de agregar o eliminar memoria de forma dinámica. Como resultado, XenServer debe declarar la cantidad máxima de memoria que se le pide a una máquina virtual que consuma en el momento en que se reinicia. La declaración de la cantidad máxima de memoria permite que el sistema operativo invitado ajuste el tamaño de 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ática en XenServer. El rango de memoria estática no se puede ajustar cuando la VM está en ejecución. Para un arranque en particular, el rango dinámico está restringido para 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 de memoria más baja que el sistema operativo puede ejecutar con XenServer.

Nota:

Le 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 información.

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

Comportamiento DMC

Exprimido automático de máquinas virtuales

  • Si DMC no está habilitado, cuando los hosts están llenos, la nueva máquina virtual comienza a fallar 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 máquinas virtuales en ejecución dentro de sus rangos dinámicos definidos. De esta manera, las VM en ejecución se comprimen 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 máquinas virtuales en ejecución reciben su nivel de memoria máxima dinámica

  • Cuando la memoria del host es escasa, todas las máquinas virtuales en ejecución reciben su nivel de memoria mínima dinámica.

Cuando configure 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 de Dynamic Memory Control para reducir la cantidad de memoria física disponible para una VM puede provocar que se reinicie lentamente. Del mismo modo, si asigna muy poca memoria a una VM, puede iniciarse lentamente.

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

¿Cómo funciona DMC?

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

  1. Modo de destino: el administrador especifica un destino de memoria para el huésped. XenServer ajusta la asignación de memoria del huésped para cumplir con el objetivo. Especificar un destino es útil en entornos de servidores virtuales y en situaciones en las que sabe exactamente cuánta memoria quiere que utilice un huésped. XenServer ajusta la asignación de memoria del huésped para cumplir con el objetivo que especifique.

  2. Modo de rango dinámico: el administrador especifica un rango de memoria dinámica para el huésped. XenServer selecciona un destino del rango y ajusta la asignación de memoria del huésped para cumplir con el objetivo. Especificar un rango dinámico es útil en cualquier situación en la que desee que XenServerreparticione la memoria del host de forma dinámica en respuesta a los cambios en el número de invitados o a los cambios en la presión de la memoria del host. XenServer selecciona un destino dentro del rango y ajusta la asignación de memoria del huésped para cumplir con 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 objetivo o un nuevo rango dinámico y XenServer se ocupará del resto.

Limitaciones de memoria

XenServer permite a los administradores utilizar todas las operaciones de control de memoria con cualquier sistema operativo huésped. Sin embargo, XenServer impone la siguiente restricción de orden de propiedades de memoria para todos los huéspedes:

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

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

Advertencia:

Al configurar la memoria de invitado, le recomendamos NO exceder la cantidad máxima de memoria física direccionable por su sistema operativo. Establecer un máximo de memoria que sea mayor que el límite admitido por el sistema operativo puede provocar problemas de estabilidad en el huésped.

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 anima a los administradores a calibrar cuidadosamente los tamaños de sus máquinas virtuales y garantizar que su conjunto de aplicaciones de trabajo funcione de manera fiable con un mínimo dinámico.

comandos de CLI 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 máquina virtual con el UUID que comienza en 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 máquina virtual 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 descrito anteriormente, 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 máquina virtual con UUID que comienza con 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 máquina virtual es de 134 217 728 bytes (128 MB).

Actualizar las propiedades de memoria

Advertencia:

Use el orden correcto al configurar los parámetros mínimo/máximo estáticos/dinámicos. 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 destino es útil en entornos de servidores virtuales y en cualquier situación en la que sepa exactamente cuánta memoria quiere que utilice un huésped. XenServer ajusta la asignación de memoria del huésped para cumplir con 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 máquina virtual que no cambie, 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 apagarla.

Actualizar las 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-->
    

En el siguiente ejemplo, se 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