Note : Cet article s’inspire de l’excellent billet de The Lone Sysadmin.

La technologie “Transparent Page Sharing” est à la virtualisation ce que la déduplication est au stockage : un moyen, souvent très efficace, d’économiser de la mémoire vive sur vos ESXi, sans réelle baisse notable des performances de vos hyperviseurs. Cette fonctionnalité extrèmement intéressante existe depuis longtemps sur ESXi et elle était activée par défaut depuis au moins ESXi 5.0.

Malheureusement, VMWare vient de décider unilatéralement et en toute discretion, lors de la publication des derniers patchs de sécurité (ESXi 5.5, ESXi 5.1 et ESXi 5.0), de désactiver cette option. Autant dire que sur des environnements conséquents (plusieurs centaines de VM), la “facture” en terme de consommation mémoire peut être particulièrement salée : vous pouvez en effet gagner des centaines de Go de mémoire grâce au TPS et ce faisant, optimiser vos investissements serveurs. Sur le principe, l’intention est louable et répond à une volonté de l’éditeur de sécuriser au maximum et par défaut ses hyperviseurs. En effet, le transparent page sharing, sur le papier, peut poser des problèmes d’isolation entre VM (certaines parties de la mémoire de celle-ci étant partagées). Ceci étant, dans la pratique et au sein de nombreux environnements de production situés “en zone de confiance” et donc moins exposés à des tentatives constantes de hacking, les avantages de cette technologie l’emportent très largement sur le risque encouru.

Dans la pratique, un ESXi patché désactive donc le TPS et chaque VM va inévitablement consommer plus de RAM. Vous avez deux possibilités pour vous en sortir : soit réactiver la fonction globalement via la modification du paramètre “Mem.ShareForceSalting” dans la configuration avancée de chaque serveur APRES sa mise à jour :
screenshot_141
… soit utiliser cette fonction de manière plus granulaire et ajouter, pour chaque VM, un paramètre “salt” (… quelle ironie, effectivement, la note est salée :) ). Celui-ci confirme la possibilité à toutes les machines ayant le même “salt” qu’elles peuvent partager leurs segments mémoire. Cette dernière méthode est particulièrement lourde, pour le moment, car vous êtes obligé d’arrêter la machine et d’ajouter votre pincée de sel dans les paramètres avancés, sched.mem.pshare.salt=CHAINE :
screenshot_143
On le voit, cette dernière méthode a un intérêt certain en environnement protégé ou sensible, car elle permet de régler finement les partages de segments mémoire.

Cette modification “discrète” mais aux impacts potentiellement importants du comportement des hyperviseurs VMWare nous amène sans doute, en conclusion, a nous convaincre s’il en était encore besoin de bien lire les releases notes de chaque patch avant application. Enfin, ça c’est la théorie bien entendu ;) … dans la pratique, je suis globalement de l’avis de Lone Sysadmin : c’est tout de même un joli coup de dans le dos de la part de notre éditeur de virtualisation favori… pas sûr que tous les clients apprécient.

Sources :
Le billet inital de Lone Sysadmin : Latest ESXi turns off transparent page sharing, watch your RAM !
Le KB correspondant chez VMWare : KB #2097593
A propos du TPS et des risques associés (VMWare) : KB #2080735