Retour : Microsoft Hyper-V
Chaque VM dispose soit d'une mémoire statique (quantité fixe réservée au démarrage), soit d'une mémoire dynamique qui varie selon ses besoins. Hyper-V réserve automatiquement une part de la RAM à l'hôte (la partition parente) ; il ne suralloue pas la mémoire au-delà de la RAM physique : une VM qui ne peut obtenir sa mémoire de démarrage ne démarre pas.
| Mémoire statique | Mémoire dynamique | |
|---|---|---|
| Quantité | Fixe | Entre un minimum et un maximum |
| Densité de VM | Plus faible | Plus forte |
| Prévisibilité | Totale | Dépend de la charge des autres VM |
| Usage | Bases de données, applications sensibles, virtualisation imbriquée | Serveurs de services, postes virtuels |
Set-VMMemory -VMName SQL01 -DynamicMemoryEnabled $false -StartupBytes 16GB
💡 Depuis Windows Server 2016, la mémoire statique d'une VM peut être augmentée ou réduite à chaud si l'invité est récent (Windows 10 / Server 2016 et plus, Linux récent) : Paramètres de la VM → Mémoire pendant que la VM tourne.
| Paramètre | Rôle |
|---|---|
| RAM au démarrage | Mémoire attribuée au démarrage de la VM |
| RAM minimale | Plancher en dessous duquel Hyper-V ne récupère pas de mémoire |
| RAM maximale | Plafond que la VM ne dépasse pas |
| Mémoire tampon (%) | Marge ajoutée à la demande réelle de la VM (20 % par défaut) |
| Poids de la mémoire (priorité) | Priorité de la VM quand la mémoire manque (0 à 100, 50 par défaut) |
Paramètres de la VM → Mémoire → cocher Activer la mémoire dynamique, puis renseigner les valeurs. L'activation ou la désactivation se fait VM arrêtée ; les valeurs minimale et maximale peuvent être ajustées à chaud.
# Démarre à 2 Go, entre 1 Go et 8 Go, 20 % de marge, priorité haute
Set-VMMemory -VMName SRV01 -DynamicMemoryEnabled $true `
-StartupBytes 2GB -MinimumBytes 1GB -MaximumBytes 8GB `
-Buffer 20 -Priority 80
Get-VMMemory -VMName SRV01
💡 Pour un invité Linux, la mémoire dynamique repose sur le pilote
hv_balloon(inclus dans les noyaux récents). Certains invités ne libèrent pas bien la mémoire : surveiller leur comportement après activation.
Si une VM à mémoire dynamique redémarre alors que l'hôte n'a plus assez de RAM libre pour sa mémoire de démarrage (supérieure à sa mémoire minimale), Hyper-V utilise temporairement un fichier de pagination intelligente sur disque, le temps du démarrage.
# Emplacement du fichier Smart Paging (de préférence sur un SSD)
Set-VM -Name SRV01 -SmartPagingFilePath "D:\Hyper-V\SmartPaging"
💡 Smart Paging ne sert qu'au redémarrage, jamais en fonctionnement normal. S'il est utilisé souvent, l'hôte manque de RAM.
Sur un serveur à plusieurs processeurs physiques, chaque processeur a sa propre mémoire (nœud NUMA). Une VM est plus rapide si ses vCPU et sa mémoire restent sur un seul nœud.
# Topologie NUMA de l'hôte
Get-VMHostNumaNode
# Une VM qui dépasse la taille d'un nœud reçoit une topologie NUMA virtuelle
Get-VMProcessor -VMName SQL01 | Select-Object Count, MaximumCountPerNumaNode
Le fractionnement NUMA (Paramètres Hyper-V, voir Paramétrage de base) autorise une VM à utiliser la mémoire de plusieurs nœuds : la VM démarre même si un seul nœud n'a plus assez de mémoire, au prix de performances moindres.
# Mémoire attribuée, demandée et état par VM
Get-VM | Select-Object Name, State, DynamicMemoryEnabled,
@{n='Attribuee(Go)';e={[math]::Round($_.MemoryAssigned/1GB,1)}},
@{n='Demande(Go)';e={[math]::Round($_.MemoryDemand/1GB,1)}},
MemoryStatus
# Mémoire disponible pour les VM sur l'hôte
Get-Counter '\Hyper-V Dynamic Memory Balancer(*)\Available Memory'
| Colonne / compteur | Signification |
|---|---|
MemoryAssigned |
Mémoire actuellement attribuée à la VM |
MemoryDemand |
Mémoire dont la VM a besoin |
MemoryStatus |
OK, Faible, Avertissement : la VM manque de mémoire |
| Available Memory | Mémoire que l'hôte peut encore distribuer |
Dans le Gestionnaire Hyper-V, l'onglet Mémoire en bas de la fenêtre affiche les mêmes informations pour la VM sélectionnée.
MemoryStatus et la mémoire disponible de l'hôte ; un recours fréquent au Smart Paging signale un manque de RAM.