Mémoires Intel Optane DCPMM : attention aux modes d’utilisation
Les barrettes Optane d’Intel peuvent s’utiliser comme une RAM traditionnelle très capacitive ou comme une zone de stockage quasiment aussi rapide que la mémoire. Mais il y a des subtilités.
Lors du lancement de la dernière génération de ses processeurs Xeon Scalable (alias Cooper Lake), Intel a dévoilé des barrettes de mémoire conçues à partir de composants Flash 3D XPoint. Il s’agit de modules DIMM similaires aux barrettes de DRAM DDR4 à 2666 MHz, mais offrant des capacités de 128, 256 ou 512 Go, alors que les barrettes les plus courantes proposent plutôt 16 Go. Ces produits portent le nom d’Optane DC Persistent Memory Modules, ou Optane DC PMEM, voire Optane DCPMM dans les appellations les plus récentes.
La conception d’Intel autorise l’insertion d’une barrette Optane DCPMM sur chacun des six canaux mémoire d’un processeur Xeon Scalable de seconde génération. Ce processeur supportant deux barrettes par canal, il est donc possible d’insérer dans un serveur 6 barrettes de DCPMM plus 6 barrettes DDR4 par socket. Soit 12 barrettes DCPMM + 12 barrettes DDR4 sur un serveur double socket et 24 barrettes DCPMM + 24 barrettes DDR4 sur un serveur quadrisocket.
Le BIOS de la machine hôte peut configurer la mémoire Optane DCPMM de deux façons : en mode Memory, c’est-à-dire que le serveur la présente aux applications comme de la RAM traditionnelle, mais en très grande capacité, ou en mode Application Direct, dans lequel il est possible de profiter de la conservation de ses contenus après un redémarrage.
32 fois plus capacitives, mais 4 fois plus lentes
Si les barrettes Optane DCPMM offrent jusqu’à 32 fois plus de capacité que les barrettes DDR4, elles sont en revanche trois à quatre fois plus lentes.
Le débit d’une barrette DCPMM de 256 Go, le modèle le plus rapide, est de 8,3 Go/s en lecture et 3 Go/s en écriture, soit 5,4 Go/s en moyenne si l’on considère qu’il y a généralement deux fois plus de lectures que d’écritures sur un serveur. Les débits de plusieurs DCPMM se cumulent, comme le montre une étude de performances récemment menée par Lenovo. Dans celle-ci, un socket doté de 6 barrettes DCPMM 256 Go est mesuré à environ 47 Go/s en lecture, 18 Go/s en écriture, soit une moyenne d’environ 29 Go/s pour deux lectures et une écriture. Les barrettes de 512 et 128 Go sont plus lentes de respectivement 6 et 12 % environ.
La latence est plus faible quand il y a plus de barrettes DCPMM, mais elle augmente avec l’intensité des accès. Elle varie ainsi entre 200 et 900 nanosecondes environ sur les lectures, et entre 150 et 1100 nanosecondes environ sur les écritures.
Actuellement, lorsque des barrettes DCPMM sont insérées dans un serveur, les barrettes de DRAM DDR4 sont limitées à une fréquence de 2666 MHz. À cette fréquence, une barrette DDR4 atteint 21,3 Go/s en lecture comme en écriture, soit environ 110 Go/s pour six barrettes installées par socket. La latence de la DDR4 ne bouge pas selon le nombre de barrettes présentes, mais selon l’intensité des accès. Elle varie ainsi de 80 à 240 nanosecondes environ sur les lectures ou les écritures, voire de 90 à 300 nanosecondes quand on alterne lectures et écritures.
Mode Memory : comme de la RAM, mais en plus grande quantité
En mode Memory, les DCPMM sont vues comme des barrettes de DRAM conventionnelles. Leur intérêt est de proposer une capacité de RAM bien plus importante que d’ordinaire. Le cas d’usage qui en tire le plus grand bénéfice est la virtualisation de serveurs, car la quantité de machines virtuelles exécutables sur une machine physique dépend plus de la taille de sa RAM que du nombre de ses processeurs.
En pratique, cela signifie surtout qu’il devient possible de lancer des VMs qui totalisent 6 To de RAM sur un simple serveur à double socket, alors qu’il faudrait acheter huit serveurs à quatre sockets pour en faire autant avec des barrettes DDR4 seules. Le bénéfice économique – moins de licences, moins d’énergie, moins d’espace… – est néanmoins à pondérer par le prix de la mémoire, qui reste l’élément le plus cher dans un serveur.
À l’heure où nous écrivons ces lignes, et selon les tarifs d’Intel, la barrette Optane DCPMM de 128 Go, à environ 600 $ l’unité, coûte autant au Go que les DDR4 les plus courantes, soit environ 5 $/Go. Le modèle à 256 Go est plus cher : à environ 2200 $ l’unité, il revient à un peu moins de 9 $/Go. Le modèle à 512 Go est encore plus cher : à près de 6800 $ l’unité, il revient à plus de 13 $/Go.
La subtilité du mode Memory est que la quantité de RAM disponible, du point de vue des applications et des machines virtuelles, est uniquement celle offerte par les barrettes DCPMM. Les barrettes de DRAM, elles, sont transformées en mémoire cache par le chipset Purley. Purley est conçu pour repérer les données les plus fréquemment consultées, les mettre en cache dans la zone des barrettes DRAM et, ainsi, faire en sorte qu’un serveur équipé de barrettes Optane DCPMM semble fonctionner aussi rapidement qu’un serveur uniquement équipé de DRAM.
Notons toutefois que ce dispositif ne fonctionne bien que lorsque les applications en cours d’exécution répètent sans cesse les mêmes types d’accès ; c’est en particulier le cas de plusieurs VMs sur un même hyperviseur. En revanche, Purley sera incapable de prédire quelles données gagneraient à aller dans le cache si les traitements en cours accèdent à la mémoire de manière anarchique. Dans ce cas, les performances des applications et des machines virtuelles seront dégradées par rapport à un serveur qui n’aurait eu que de la DRAM.
Enfin, en mode Memory, les Optane DCPMM ne permettent pas de récupérer les données qu’elles contiennent après une coupure de courant, alors qu’il s’agit pourtant bien ici de composants 3D XPoint conçus initialement par Intel et Micron comme une technologie de stockage. L’impossibilité de récupérer les données n’est pas due à une raison pragmatique – on aurait pu penser que, de toute façon, le rechargement de l’OS en RAM aurait écrasé tout ce qui s’y trouvait précédemment – mais pour une raison très technique.
En l’occurrence, tout ce qui est écrit dans de la DCPMM est automatiquement chiffré par un contrôleur embarqué sur la barrette ; Intel invoque des raisons de sécurité. Or, la clé de déchiffrement qui va de pair est logée dans la partie DRAM. Et celle-ci est effacée à l’extinction du serveur.
Mode App Direct : de la mémoire persistante pour redémarrer plus vite SAP Hana
En mode Application Direct, aussi appelé App Direct, les applications voient l’ensemble des capacités disponibles : un serveur avec 64 Go de DRAM et 512 Go de DCPMM proposera bien 576 Go de RAM disponibles. L’intérêt de ce mode n’est pas de profiter d’un peu plus de RAM, mais bien de prendre en compte l’existence de deux types de mémoire : la DRAM, dans laquelle l’OS et les applications qui ont besoin de la latence la plus faible possible vont s’installer, et la DCPMM, pour les applications qui ont besoin d’une très grande quantité de RAM ou, surtout, qui sont intolérantes aux pannes. Car, oui, dans ce mode, la clé de déchiffrement est bien conservée et il devient donc possible de retrouver toutes les données en cours après un redémarrage.
Les applications qui profiteront le plus du mode App Direct sont les bases de données In-Memory. D’abord parce que, travaillant exclusivement en RAM, elles pourront manipuler un plus grand jeu de données avec plus de mémoire. Mais l’intérêt est surtout que, lors du redémarrage du serveur, il n’y aura plus à attendre le rechargement de centaines ou de milliers de Go depuis le disque, puisque toutes les données seront restées en RAM. De fait, le mode App Direct permet aux applications de redevenir plus rapidement opérationnelles, à chaque fois qu’il est nécessaire de relancer le serveur ; typiquement une fois par semaine, quand son OS est mis à jour.
Fujitsu a fait le test avec SAP Hana sur l’un de ses serveurs quadrisocket, un Primergy RX4770 M5. Dans son rapport, le constructeur compare une configuration avec 3 To de DRAM (48 barrettes de 64 Go, chacune valant plus de 600 $) et une autre équipée de 1,5 To de DRAM (24 barrettes de 64 Go) et de 3 To de DCPMM (24 barrettes de 128 Go), la seconde configuration permettant de travailler avec 50 % de données en plus alors qu’elle coûte le même prix que la première.
La configuration avec barrettes DCPMM est plus lente pour écrire les données en mémoire : 88 % de la vitesse de la version DRAM seule. Elle est un peu plus lente pour lire des données quand des requêtes sont lancées en parallèle : 96 % de la vitesse. Elle est autant rapide pour lire des données quand les requêtes se font les unes après les autres. Et elle est bien plus rapide pour redevenir opérationnelle après un redémarrage : 2 minutes, contre 11 minutes pour la configuration DRAM seule, laquelle doit recharger ses données depuis le disque dur.
Intel explique que les 2 minutes mesurées par Fujitsu sont le temps incompressible pour que l’OS redémarre. L’activation des données dans la base se ferait en revanche en quelques secondes. Selon ses mesures, une base qui met d’ordinaire 35 minutes à se charger depuis un disque dur serait opérationnelle en seulement 17 secondes avec une mémoire persistante. Ce gain de vitesse n’est pas seulement dû à l’économie des accès disque, il s’explique aussi par le fait qu’il n’y a pas d’index à reconstruire, puisque la base a été conservée dans un état déjà opérationnel.
Notons qu’Intel a annoncé être entré en partenariat technologique avec SAP autour d’Hana, afin que tous les progiciels de la gamme S/4Hana tirent parti des avantages de serveurs Xeon Scalable équipés de mémoire Optane DCPMM.
Mode App Direct : il faut des logiciels prévus pour
Reste que le mode App Direct ne fonctionne pas tout seul. Pour commencer, il faut un OS, ou un hyperviseur, qui prenne en charge l’existence de deux types de mémoire. Intel tient à jour sur son site une liste des systèmes compatibles. On notera que la gestion du mode App Direct est assurée dans un premier temps par des pilotes conçus pour gérer les barrettes NVDIMM, à savoir des barrettes mixes contenant des composants DRAM et NAND. Ces pilotes ont été publiés avant l’arrivée des Optane DCPMM.
L’OS sert juste à indiquer aux services et aux applications sur quelle plage d’adresses se situe la mémoire persistante. Il faut ensuite que les logiciels soient expressément conçus pour l’utiliser, c’est-à-dire que leurs développeurs aient en amont prévu d’écrire et de lire les données à des adresses en particulier. Pour ce faire, Intel met à leur disposition le PMDK, un kit de développement dédié.
Parmi les logiciels prévus pour utiliser la mémoire persistante, citons les systèmes de fichiers. Ceux dotés d’un mécanisme « DAX » (Direct Access) savent lire et écrire des fichiers dans de la mémoire sans passer par le goulet d’étranglement du bus d’entrée-sortie, ce qui permet de créer des disques virtuels en RAM accessibles à pleine vitesse. Ext4 et XFS, sous Linux, ainsi que NTFS, sous Windows, sont compatibles DAX. Intel avance qu’utiliser la zone Optane DCPMM comme stockage profitera typiquement aux diffuseurs de contenus qui peuvent ainsi stocker leurs médias en cours de lecture, dont des vidéos, sur un volume excessivement rapide.
Pour rappel, dans le stockage, les latences se répartissent ainsi : moins de 1 microseconde (moins de 1000 nanosecondes) pour de la mémoire Optane DCPMM, 10 microsecondes pour les unités Optane DC montées sur PCIe, un peu moins de 100 microsecondes pour les disques NVMe, 1 milliseconde (soit 1000 microsecondes) pour les SSD en SAS/SATA et environ 10 millisecondes pour les disques durs en SAS/SATA.
Les débits, eux, vont donc de 8 Go/s par barrette DCPMM, plus ou moins 3,5 Go/s pour les unités montées en PCIe comme en NVMe, un maximum de 560 Mo/s pour les SSD montés en SAS/SATA et, au mieux, environ 200 Mo/s pour les disques durs.
Pour terminer, précisons que le BIOS permet de configurer un mode mixte, avec une partie de la zone DCPMM utilisée en mode Memory et une autre utilisée en mode App Direct. Dans ce cas, la DRAM conventionnelle est traitée comme du cache et seule une partie de la zone DCPMM conserve son contenu après un redémarrage.