Publié le 23 novembre 2025 11h48. Amazon Web Services (AWS) a annoncé des améliorations significatives au noyau Linux, plus précisément au code KVM VMX, visant à optimiser la gestion de la mémoire dans les machines virtuelles imbriquées et à accroître leurs performances.
- Les correctifs apportés améliorent à la fois la précision et la vitesse de la gestion de la mémoire invitée non gérée.
- Des gains de performance spectaculaires ont été observés lors de tests synthétiques, avec des améliorations allant jusqu’à 2353 fois plus rapides pour certaines opérations.
- Ces optimisations sont particulièrement pertinentes pour les instances AWS EC2 Nitro.
Les ingénieurs d’AWS ont travaillé sur l’optimisation du code KVM (Kernel-based Virtual Machine) pour les environnements VMX (Virtual Machine Extensions) imbriqués. L’objectif principal était d’améliorer la gestion de la mémoire invitée non gérée, c’est-à-dire la mémoire qui n’est pas directement mappée par le noyau. Cette optimisation est cruciale pour les machines virtuelles imbriquées, où le système d’exploitation hôte (L0) accède à des pages mémoire spécifiques de la machine virtuelle invitée (L1) pour gérer l’exécution d’une autre machine virtuelle (L2).
Fred Griffoul, ingénieur chez Amazon/AWS, a expliqué que l’implémentation actuelle présentait des faiblesses en termes de performance et de précision. Il a précisé :
« Cette série de correctifs résout à la fois les problèmes de performances et d’exactitude dans VMX imbriqué lors de la gestion de la mémoire invitée. L’approche actuelle ne gère pas correctement l’invalidation des caches de mémoire, ce qui peut entraîner des erreurs. De plus, elle implique des opérations de remappage mémoire coûteuses à chaque cycle d’entrée/sortie de la machine virtuelle, créant une surcharge importante. »
Pour résoudre ces problèmes, l’équipe d’AWS a remplacé l’utilisation de kvm_host_map par gfn_to_pfn_cache dans les environnements VMX imbriqués. L’infrastructure pfncache (page frame number cache) maintient des mappages persistants tant que l’adresse physique de la page ne change pas, éliminant ainsi la surcharge liée aux opérations de remappage. De plus, pfncache assure une gestion appropriée des invalidations via des mécanismes de notification et de vérification de la génération des emplacements mémoire, garantissant ainsi la cohérence des données.
Les résultats de ces améliorations sont impressionnants. Un micro-benchmark synthétique, exécuté sur des instances AWS EC2 Nitro, a révélé des gains de performance considérables : la cartographie de la mémoire est environ 17 fois plus rapide, le démappage des fragments est 2014 fois plus rapide et le démappage est 2353 fois plus rapide. Visualisation des résultats du benchmark.
Les correctifs sont actuellement disponibles pour examen sur la liste de diffusion du noyau Linux.
