3 votes

Comprendre ESXi et l'utilisation de la mémoire

Je teste actuellement VMWare ESXi sur une machine de test. Ma machine hôte a 4gigs de ram. J'ai trois invités et chacun se voit attribuer une limite de mémoire de 1 Go (et seulement 512 Mo réservés).

L'écran récapitulatif de l'hôte montre une capacité de mémoire de 4082,55 Mo et une utilisation de 2828 Mo avec deux invités en cours d'exécution. Cela semble logique, deux gigas pour chaque VM plus un overhead pour l'hôte. 800 Mo semble élevé, mais cela reste raisonnable.

Mais sur l'écran d'allocation des ressources, je vois une capacité de mémoire de 2356 Mo et une capacité disponible de 596 Mo.

Sous l'onglet de configuration, lien de mémoire, je vois un total physique de 4082,5 Mo, un système de 531,5 Mo et une VM de 3551,0 Mo.

Je n'ai alloué à mes VM qu'un gigabit chacune, et avec deux VM en cours d'exécution, elles occupent presque deux fois la quantité de mémoire vive allouée. Pourquoi cela, et pourquoi l'écran d'allocation des ressources me fait-il perdre autant de temps ?

Lorsque j'essaie d'exécuter ma troisième VM, j'obtiens un message indiquant que la vérification de l'admission de la mémoire a échoué, ce qui signifie qu'il n'y a pas assez de mémoire vive. Ma machine de production aura beaucoup plus de mémoire vive, mais j'aimerais mieux comprendre le fonctionnement d'ESXi.

5voto

amargeson Points 592

Deux ou trois choses :

  1. N'utilisez pas les limites de la mémoire vive. Pour limiter la quantité de RAM que la VM peut utiliser, utilisez la quantité de RAM lors de la définition de la VM. Sinon, si vous définissez une limite de RAM pour une VM inférieure à la quantité de RAM définie pour la VM, ESX sera obligé de paginer. Si la pagination doit avoir lieu, vous voulez que l'invité pagine à l'intérieur de lui-même parce qu'il est plus intelligent qu'ESXi pour déterminer quelles données doivent être paginées. Lors de la définition d'une VM, vous devez définir la RAM comme étant la plus grande quantité de RAM dont la VM pourrait avoir besoin, ou le plafond que vous souhaitez que la VM utilise.

  2. Sauf en cas d'absolue nécessité, n'utilisez pas de réservations pour une VM sur une ressource quelconque, y compris la mémoire. Si vous installez VMTools, ce que vous devriez toujours faire sauf si vous avez une bonne raison de ne pas le faire, ESXi peut récupérer de la mémoire, en particulier lorsqu'elle n'est pas utilisée. Définir des réservations forcera ESXi à fournir de la mémoire physique même si l'invité n'en a pas besoin. Au lieu de cela, utilisez Shares pour définir la priorité en cas de conflit de ressources.

Ce qui précède est très important. Si vous ne les respectez pas, vous aurez une pagination inefficace et un octroi inefficace des ressources, car les machines virtuelles qui n'ont pas besoin de RAM l'obtiendront de toute façon, et les machines virtuelles qui pourraient utiliser la RAM ne l'obtiendront pas. Vous aurez aussi souvent des machines virtuelles qui ont besoin de RAM, mais qui ne l'obtiendront pas même s'il y en a à fournir.

La différence entre ces deux écrans réside dans le fait que le résumé indique la quantité de RAM réellement utilisée et que la capacité totale indique la quantité qui pourrait être utilisée après ajustement des réservations.

Pour répondre à votre question, il s'agit d'un paramètre de réservation de l'hyperviseur. Cela illustre en fait mon point précédent, à savoir qu'il ne faut pas utiliser les réservations à moins d'y être absolument obligé. L'hyperviseur ESXi a peut-être une réserve de mémoire trop élevée. Vous pouvez modifier ce paramètre. Référez-vous à l'article suivant :

http://vm-help.com/esx40i/memory_allocation.php

Je ne recommande cependant pas de le faire pour la production.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X