Bonjour,
le problème que vous décrivez est typique des environnements Hyper‑V avec mémoire dynamique lorsque le pilote LIS (Linux Integration Services) côté invité ne gère pas correctement la restitution de mémoire via le balloon driver. Cela peut provoquer des erreurs « Out of Memory » après une réduction de la mémoire allouée, car le noyau Linux croit disposer de moins de mémoire que réellement disponible ou ne libère pas les pages correctement.
La première vérification consiste à s’assurer que les LIS drivers sont à jour. Sur les distributions modernes, ils sont intégrés au noyau, mais il est recommandé de vérifier la version avec modinfo hv_balloon et modinfo hv_utils. Si vous utilisez une distribution plus ancienne, installez ou mettez à jour le paquet linux-tools ou hyperv-daemons selon la distribution. Microsoft publie régulièrement des mises à jour pour corriger des problèmes de ballooning.
Ensuite, côté noyau Linux, assurez‑vous que le module hv_balloon est bien chargé (lsmod | grep hv_balloon). Vérifiez également les paramètres de mémoire dynamique dans Hyper‑V : évitez de définir une valeur minimale trop basse, car le guest peut se retrouver en dessous de son seuil de fonctionnement. En pratique, définissez une mémoire minimale qui correspond au besoin réel du système et laissez la mémoire dynamique gérer l’augmentation.
Pour le paging, assurez‑vous que le swap est correctement configuré dans le guest. Sans swap, une réduction agressive de mémoire peut provoquer un OOM immédiat. Vérifiez avec swapon -s et ajustez la taille du swap pour qu’elle soit au moins égale à la mémoire minimale configurée dans Hyper‑V.
Enfin, concernant l’espace MMIO et WriteCombined, Hyper‑V réserve automatiquement l’espace MMIO pour les périphériques virtuels. Sur Linux, vous pouvez vérifier les mappings via /proc/iomem. Le paramètre WriteCombined est généralement géré côté Hyper‑V et n’a pas besoin d’être modifié manuellement, sauf si vous avez un cas spécifique documenté par Microsoft ou le fournisseur de distribution.
En résumé, mettez à jour les LIS drivers, fixez une mémoire minimale réaliste dans Hyper‑V, assurez la présence d’un swap suffisant dans le guest, et vérifiez que le module hv_balloon fonctionne correctement. Si malgré cela les erreurs persistent, il est conseillé de tester avec mémoire dynamique désactivée pour confirmer que le problème est bien lié au balloon driver, puis d’ouvrir un ticket auprès de Microsoft ou de la distribution Linux pour obtenir un correctif.
Domic Vo.