Déchargement transparent de la mémoire : plus de mémoire à une fraction du coût et de la puissance
Nous assistons à une croissance massive des besoins en mémoire des applications émergentes, telles que l’apprentissage automatique, associée à un ralentissement de la mise à l’échelle des dispositifs DRAM et à de grandes fluctuations du coût de la DRAM. Cela a rendu la DRAM d'un coût prohibitif en tant que seule solution de capacité de mémoire à l'échelle de Meta.
Mais les technologies alternatives telles que les disques SSD connectés au NVMe offrent une capacité supérieure à la DRAM pour une fraction du coût et de la puissance. Le transfert transparent de mémoire plus froide vers des technologies de mémoire moins chères via des techniques de noyau ou d'hyperviseur offre une approche prometteuse pour freiner l'appétit pour la DRAM. Le principal défi consiste toutefois à développer une solution robuste à l’échelle du centre de données. Une telle solution doit être capable de gérer diverses charges de travail et les grandes variations de performances des différents périphériques de déchargement, tels que la mémoire compressée, les SSD et les NVM.
Transparent Memory Offloading (TMO) est la solution de Meta pour les environnements de centres de données hétérogènes. Il introduit un nouveau mécanisme du noyau Linux qui mesure en temps réel la perte de travail due au manque de ressources au niveau du processeur, de la mémoire et des E/S. Guidé par ces informations et sans aucune connaissance préalable des applications, TMO ajuste automatiquement la quantité de mémoire à décharger vers un périphérique hétérogène, tel qu'une mémoire compressée ou un SSD. Il le fait en fonction des caractéristiques de performances de l'appareil et de la sensibilité de l'application aux accès mémoire plus lents. TMO identifie de manière globale les opportunités de déchargement non seulement des conteneurs d'applications, mais également des conteneurs side-car qui fournissent des fonctions au niveau de l'infrastructure.
TMO est en production depuis plus d'un an et a économisé 20 à 32 % de la mémoire totale sur des millions de serveurs de notre vaste flotte de centres de données. Nous avons réussi à intégrer les composants du système d'exploitation de TMO dans le noyau Linux.
Ces dernières années, une multitude de technologies de mémoire non DRAM moins chères, telles que les SSD NVMe, ont été déployées avec succès dans nos centres de données ou sont en cours de déploiement. De plus, les technologies émergentes de bus mémoire non DDR telles que Compute Express Link (CXL) offrent une sémantique d'accès similaire à celle de la mémoire et des performances proches de celles de la DDR. La hiérarchie mémoire-stockage illustrée à la figure 1 illustre la façon dont diverses technologies se comparent les unes aux autres. La confluence de ces tendances offre de nouvelles opportunités de hiérarchisation de la mémoire qui étaient impossibles dans le passé.
Avec la hiérarchisation de la mémoire, les données moins fréquemment consultées sont migrées vers une mémoire plus lente. L'application elle-même, une bibliothèque d'espace utilisateur, le noyau ou l'hyperviseur peuvent piloter le processus de migration. Notre travail TMO se concentre sur la migration pilotée par le noyau, ou échange. Pourquoi? Parce qu'il peut être appliqué de manière transparente à de nombreuses applications sans nécessiter de modification de l'application. Malgré sa simplicité conceptuelle, l'échange piloté par le noyau pour les applications de centre de données sensibles à la latence est un défi à grande échelle. Nous avons créé TMO, une solution transparente de déchargement de mémoire pour les environnements conteneurisés.
TMO se compose des éléments suivants :
Le coût croissant de la DRAM par rapport au coût du serveur a motivé notre travail sur le TMO. La figure 2 montre le coût relatif de la DRAM, de la mémoire compressée et du stockage SSD. Nous estimons le coût de la DRAM compressée sur la base d'un taux de compression 3x représentatif de la moyenne de nos charges de travail de production. Nous nous attendons à ce que le coût de la DRAM augmente, atteignant 33 % de nos dépenses en infrastructure. Bien que cela ne soit pas indiqué ci-dessous, la consommation électrique de la DRAM suit une tendance similaire, qui devrait atteindre 38 % de la puissance de notre infrastructure de serveurs. Cela fait de la DRAM compressée un bon choix pour le déchargement de la mémoire.
En plus de la DRAM compressée, nous équipons également tous nos serveurs de production de SSD NVMe très performants. Au niveau du système, les SSD NVMe contribuent à moins de 3 % du coût des serveurs (environ 3 fois moins que la mémoire compressée de notre génération actuelle de serveurs). De plus, la figure 2 montre que, en iso-capacité par rapport à la DRAM, le SSD reste inférieur à 1 % du coût du serveur sur plusieurs générations, soit environ 10 fois inférieur à celui de la mémoire compressée en termes de coût par octet ! Ces tendances rendent les SSD NVMe beaucoup plus rentables que la mémoire compressée.