¿Hay alguna razón para darle a una VM una cantidad de memoria base redonda (2048MB, 4096MB, etc.) de memoria?

Respuestas:

10

La memoria física en el servidor es un múltiplo de una potencia de dos, por lo que se dividirá de manera uniforme si utiliza otros múltiplos. Puede haber algunas mejoras increíblemente menores con SLAT y si también están correctamente alineadas. De otra manera no.

Chris S
fuente
Las páginas son 4 KiB o 2 MiB, en su mayoría, no hay problemas reales con incluso cortar 1234 MiB, ¿verdad?
poige
1
@poige Lo mejor que sé, sí, no hay problemas ... Realmente necesitaríamos a alguien que conozca SLAT (et alii) por dentro y por fuera para obtener una respuesta definitiva.
Chris S
13

Hyper-V asigna memoria internamente en fragmentos de 2 MB. El propio hipervisor utilizará entradas de tabla de páginas de 2 MB para mayor eficiencia, si es posible, si su procesador admite la traducción de direcciones de segundo nivel (SLAT). Esto será posible para casi cualquier VM con memoria dinámica desactivada.

Aparte de eso, no, no importa.

Jake Oshins
fuente
7

Solo para aclarar lo que han dicho las otras respuestas; El límite que se define aquí es básicamente para el software de su máquina virtual, no para el invitado. Es decir, cuando su sistema operativo invitado solicita una página de memoria, lo hace en incrementos definidos (es decir, 4KB). Entonces, si definió que la máquina virtual tiene 4097 KB de RAM, y su VM host estaba usando un tamaño de página de 4KB, entonces probablemente otorgaría un total de 4100 KB de RAM a la máquina virtual.

Sin embargo, si el sistema operativo invitado usara un tamaño de página de 1 KB, y su sistema operativo host usara un tamaño de página de 4KB, entonces el sistema operativo host esencialmente otorgaría 4KB de espacio del cual solo se usará 1 KB, pero eso está fuera de todo trozos de memoria. Por lo tanto, nunca desperdiciará una cantidad apreciable de espacio.

Para tener en cuenta, la alineación entre el sistema operativo host y el sistema operativo invitado no es un factor aquí, excepto por los últimos "bits desactivados".

Andrew M.
fuente
Esto no es cierto en determinadas circunstancias: por ejemplo, el software VM puede reservar la cantidad de RAM solicitada completa (más lo que necesite para la tarjeta de video y otras necesidades misceláneas) o cuando se utiliza el soporte de hardware de tablas anidadas / tablas de páginas extendidas - el invitado gestiona eficazmente las páginas físicas de la memoria utilizando el hardware de la CPU. Además, reservar 4097 KB de memoria probablemente asignaría 4100 KB de RAM física, aunque el sistema operativo invitado solo podría direccionar 4097 KB.
Goyuix
2
No veo cómo lo que has dicho está en desacuerdo con mi respuesta. ¿Podrías dar más detalles?
Andrew M.
Esa puede haber sido su intención, sin embargo, al leer su respuesta como "esencialmente nunca sería capaz de usar ese 1KB extra". Intenté aclarar que el sistema operativo invitado podría (en teoría) usar esa RAM a pesar de que 3/4 del la página física probablemente no se haya tocado. Su respuesta no me parece muy clara. También intenté proporcionar algunas palabras clave / tecnologías que tendrían un impacto en esas decisiones. Los problemas de alineación de páginas son solo una parte de las compensaciones que tendrían que ser consideradas y sentí que la respuesta podría mejorarse al mencionar específicamente los impactos relevantes.
Goyuix
Ah, veo dónde me equivoqué. Así es como lo estaba imaginando, pero debo haberlo eliminado en mis diversas revisiones. Lo actualicé para aclarar ese punto. :)
Andrew M.
3

Sospecho que es una cuestión de tradición, y alinearlo con la forma en que se construyen los sistemas físicos. Los sistemas físicos tienen memoria en cantidades de base 2 (y al menos con cada x86 que se haya hecho, esto es cierto), y es probable que algunos, si no muchos SO, esperen esto en la administración de la memoria.

En resumen, realmente se debe a que una máquina virtual refleja una máquina real, en lugar de una hipotética. No es una respuesta muy técnica, pero creo que esa es la verdadera.

Journeyman Geek
fuente
1

Realmente no. La memoria dinámica de Hyper-v solo asignará lo que el sistema usa de todos modos. La cantidad que asigna es el valor de inicio. Si no está utilizando memoria dinámica, la única ventaja que puedo ver es alinear mejor la memoria física a la virtual.

Jim B
fuente
-1. Vea, Hyper-V no tiene memoria dinámica SI NINGUNO ESTÁ CONFIGURADO. Y adivina qué, a veces tiene sentido no usar eso (la asignación lleva tiempo, por lo que un servidor de bases de datos lo quiere todo de forma multimedia, por ejemplo). Como tal, la respuesta genérica no es relevante y, en realidad, no es lo que se preguntó en absoluto.
TomTom