¿Deben las máquinas virtuales Linux en VMware / ESX tener una partición de intercambio?

18

En una configuración de VMware ESX, ¿cuál es la diferencia de estas opciones ?:

  • una máquina virtual Linux con 1 GB de RAM y una partición de intercambio de 1 GB y la máquina virtual utiliza 1.5 GB de RAM
  • una máquina virtual Linux con 1 GB de RAM y sin partición de intercambio, y la máquina virtual usa 1.5 GB de RAM

Quiero decir, en ambos casos se está utilizando el intercambio;

  • en el primer intercambio se realiza a la partición de intercambio de Linux
  • En el segundo caso, VMware intercambiará 512 MB al grupo de almacenamiento de VMware.

Entonces, ¿hay algún punto en darles a las máquinas virtuales de Linux una partición de intercambio?

Sandra
fuente
¿Se pregunta si el host ESX necesita intercambio o no, o cómo se maneja con la VM? Es posible que desee profundizar en la pregunta para especificar lo que quiere decir.
Bart Silverstrim
Con suerte hecho ahora.
Sandra

Respuestas:

15

Ignorando el hecho de que las personas están lidiando con razones específicas del sistema operativo, tengo dos razones por las que es una mala idea no ejecutar con una partición / archivo de intercambio.

  1. Si tiene 1,5 GB de RAM asignados a una máquina virtual sin archivo / partición de espacio y desea utilizar 1,5 GB + 1 MB, informará un error de falta de memoria. Con el espacio de intercambio, podrá intercambiar datos de la memoria activa al disco.
  2. El sistema operativo invitado realiza una gestión de memoria mucho mejor que el host. Esta es la razón por la cual existe tecnología como el aumento de memoria porque el Host puede hacer conjeturas educadas sobre qué memoria no se necesita en este momento, pero el huésped lo sabe a un nivel mucho más inteligente (esto evita que se intercambie la memoria del sistema operativo, lo que podría afectar su rendimiento).
Scott Keck-Warren
fuente
10

Si. Es la forma de Unix.

Unix (incluso Linux) espera poder intercambiar. Suceden
cosas malas cuando el sistema no puede intercambiar (ya sea porque estaba mal configurado sin una partición de intercambio o porque el espacio de intercambio está lleno). En Linux, una de estas cosas malas es el asesino fuera de memoria, que hundirá un cuchillo en la parte posterior del programa que cree que está utilizando la mayor cantidad de RAM (los servidores de bases de datos son un objetivo favorito).

voretaq7
fuente
4

¿A qué te has /proc/sys/vm/overcommit_memorypuesto? De la documentación del kernel:

0       -       Heuristic overcommit handling. Obvious overcommits of
                address space are refused. Used for a typical system. It
                ensures a seriously wild allocation fails while allowing
                overcommit to reduce swap usage.  root is allowed to
                allocate slightly more memory in this mode. This is the
                default.

1       -       Always overcommit. Appropriate for some scientific
                applications.

2       -       Don't overcommit. The total address space commit
                for the system is not permitted to exceed swap + a
                configurable percentage (default is 50) of physical RAM.
                Depending on the percentage you use, in most situations
                this means a process will not be killed while accessing
                pages but will receive errors on memory allocation as
                appropriate.

Por lo tanto, si está utilizando 1, no hay diferencia. Si está utilizando 2 y ningún archivo de intercambio de Linux, entonces ningún proceso podrá asignar 512M de memoria (virtual). El resultado no está claro para 0.

Editar: desde http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommitir así es como funciona 0:

Los intentos heurísticos de sobrecompromiso para calcular cuánta memoria podría darle el sistema si recuperara toda la memoria que pudiera y ningún otro proceso utilizara más RAM de la que es actualmente; Si solicita más que esto, su asignación es rechazada. En concreto, el número teórico de "memoria libre" se calcula sumando espacio de intercambio libre, RAM libre (menos 1/32 si no es root) y todo el espacio utilizado por la memoria caché unificada del búfer y los datos del kernel etiquetados como recuperables (menos algunas páginas reservadas).

Por lo tanto, también utiliza el intercambio en el cálculo. En general, seguiría la recomendación de RHEL de:

M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
    S = M *2
Else
    S = M + 2
Mark Wagner
fuente
1
cat /proc/sys/vm/overcommit_memoryvuelve 0. ¿Qué recomiendas en términos de overcommit_memoryvalor y swap / no swap?
Sandra
3

Las particiones de intercambio pueden ser potencialmente más rápidas, especialmente en situaciones en las que el disco raíz está casi lleno y no se puede crear un archivo de intercambio en una sola pieza sin fragmentación, y mucho menos la sobrecarga que podría crear el sistema de archivos y, si corresponde, cosas como LVM

Pero el rendimiento de ambas máquinas se verá afectado de todos modos si mantiene el 33% de sus requisitos de memoria en el disco.

Sven
fuente
Cuando dices "disco raíz". ¿Te refieres al host ESX, donde ESX crea sus archivos de intercambio?
Sandra
No, me refiero al disco del sistema de la VM que contiene el sistema de archivos raíz. Después de todo, ahí es donde ocurrirá el intercambio en ausencia de una partición de intercambio dedicada.
Sven
Tenga en cuenta que esta respuesta está debatiendo entre la partición de intercambio frente al archivo de intercambio. Pensé que la pregunta era si necesitabas un intercambio.
user606723
@ user606723: si no usa el intercambio en absoluto, terminará con un error de falta de memoria si intenta asignar más memoria que la VM y el uso de 1.5GB con una situación física de 1GB no puede ocurrir de todos modos.
Sven
@SvenW, sí, pero no es seguro que algo así pueda suceder. Eso lo debe decidir el administrador.
user606723
0

Consulte el siguiente enlace: https://help.ubuntu.com/community/SwapFaq

Básicamente, a menos que necesite hibernar o usar más memoria de la que está asignando a la VM, no hay una ventaja significativa para una partición de intercambio.

No he usado una partición / archivo de intercambio en ninguna de mis máquinas Linux durante años.

usuario606723
fuente
1
La pregunta no es sobre swap / no swap. Se trata de cómo VMware maneja el intercambio.
Sandra
0

La ventaja obvia para el intercambio es que cuando su máquina falla, aún puede crear un volcado por caída. Corrígeme si me equivoco, pero afaik esto no es posible sin intercambio. Esto no es específico de VMWare, por supuesto, sino que se aplica en cualquier lugar. Sentí que podría ser importante señalarlo.

juwi
fuente