Y a-t-il une raison de donner à une machine virtuelle une quantité ronde de base 2 (2048 Mo, 4096 Mo, etc.) de mémoire?

26

Le titre dit à peu près tout, y a-t-il un avantage à donner une VM de 2048 Mo de mémoire au lieu d'arrondir à la base 10 et de faire 2000 Mo?

Nate
la source

Réponses:

10

La mémoire physique du serveur est un multiple d'une puissance de deux, elle se répartira donc uniformément si vous utilisez d'autres multiples. Il peut y avoir des améliorations incroyablement mineures avec SLAT et telles si elles sont correctement alignées aussi. Sinon non.

Chris S
la source
Les pages sont de 4 Kio ou 2 Mio, la plupart du temps - il n'y a pas de vrai problème avec même le découpage de 1234 Mio, n'est-ce pas?
poige
1
@poige Autant que je sache, oui, aucun problème ... Nous aurions vraiment besoin de quelqu'un qui connaît SLAT (et alii) à l'intérieur comme à l'extérieur pour une réponse définitive.
Chris S
13

Hyper-V alloue en interne de la mémoire en segments de 2 Mo. L'hyperviseur lui-même utilisera des entrées de table de pages de 2 Mo pour plus d'efficacité, si possible, si votre processeur prend en charge la traduction d'adresse de deuxième niveau (SLAT). Cela sera possible pour à peu près n'importe quelle machine virtuelle avec la mémoire dynamique désactivée.

A part ça, non ça n'a pas d'importance.

Jake Oshins
la source
7

Juste pour clarifier ce que les autres réponses ont dit; la limite qui est définie ici concerne essentiellement le logiciel de votre machine virtuelle, pas l'invité. Autrement dit, lorsque votre système d'exploitation invité demande une page de mémoire, il le fait par incréments définis (c'est-à-dire 4Ko). Donc, si vous avez défini la machine virtuelle comme ayant 4097 Ko de RAM et que votre machine virtuelle hôte utilisait une taille de page de 4 Ko, elle accorderait probablement un total de 4100 Ko de RAM à la machine virtuelle.

Si le système d'exploitation invité, cependant, devait utiliser une taille de page de 1 Ko et que votre système d'exploitation hôte utilisait une taille de page de 4 Ko, le système d'exploitation hôte accorderait essentiellement 4 Ko d'espace dont seulement 1 Ko serait utilisé - mais c'est hors de tout le morceaux de mémoire. Ainsi, vous ne gaspillerez jamais vraiment une quantité d'espace perceptible.

À noter, l'alignement entre le système d'exploitation hôte et le système d'exploitation invité n'est pas un facteur ici, sauf pour les derniers «bits désactivés».

Andrew M.
la source
Ce n'est pas vrai dans certaines circonstances: par exemple, le logiciel VM peut réserver la totalité de la quantité de RAM demandée (plus tout ce dont il a besoin pour la carte vidéo et d'autres besoins divers) ou lors de l'utilisation de la prise en charge matérielle des tables de pagination / pages étendues imbriquées - l'invité gère efficacement les pages physiques de la mémoire à l'aide du matériel du processeur. En outre, la réservation de 4097 Ko de mémoire allouerait très probablement 4100 Ko de RAM physique, bien que seulement 4097 Ko soient réellement adressables par le système d'exploitation invité.
Goyuix
2
Je ne vois pas en quoi ce que vous avez dit est en contradiction avec ma réponse. Pourriez-vous élaborer?
Andrew M.
C'était peut-être votre intention, mais en lisant votre réponse comme "vous ne seriez pratiquement jamais en mesure d'utiliser ce 1 Ko supplémentaire" - j'ai essayé de clarifier que le système d'exploitation invité pouvait (en théorie) utiliser cette RAM même si les 3/4 des la page physique serait probablement intacte. Votre réponse ne me paraît pas très claire. J'ai également essayé de fournir des mots clés / technologies qui auraient un impact sur ces décisions. Les problèmes d'alignement des pages ne sont qu'une partie des compromis qui devraient être pris en compte et je pensais que la réponse pourrait être améliorée en mentionnant spécifiquement les impacts pertinents.
Goyuix
Ah, je vois où je me suis trompé. C'est en fait ainsi que je l'envisageais, mais je devais m'en débarrasser dans mes différentes révisions. Je l'ai mis à jour pour clarifier ce point. :)
Andrew M.
3

Je soupçonne que c'est une question de tradition, et de l'aligner sur la façon dont les systèmes physiques sont construits. Les systèmes physiques ont de la mémoire en quantité de base 2 (et du moins avec chaque x86 jamais fabriqué, cela est vrai), et il y a des chances que certains systèmes d'exploitation, sinon beaucoup, s'attendent à cela dans la gestion de la mémoire.

En bref, c'est vraiment parce qu'une machine virtuelle reflète une vraie machine, plutôt qu'une machine hypothétique. Pas une réponse très technique, mais je pense que c'est la vraie

Compagnon Geek
la source
1

Pas vraiment. La mémoire dynamique Hyper-v n'allouera que ce que le système utilise de toute façon. Le montant que vous attribuez est la valeur de démarrage. Si vous n'utilisez pas de mémoire dynamique, le seul avantage que je peux voir est de mieux aligner la mémoire physique sur la mémoire virtuelle.

Jim B
la source
-1. Voir, Hyper-V n'a pas de mémoire dynamique SI AUCUN EST CONFIGURÉ. Et devinez quoi - il est parfois judicieux de ne pas l'utiliser (l'alolocation prend du temps, donc un serveur de base de données veut tout cela immédiatement, par exemple). En tant que telle, la réponse générique n'est pas pertinente et - en fait - pas du tout ce qui a été demandé.
TomTom