Cloudflare sélectionne des processeurs AMD pour les serveurs Edge de dixième génération



Plus d'un milliard d'adresses IP uniques transitent quotidiennement par le réseau Cloudflare; Il sert plus de 11 millions de requêtes HTTP par seconde; il est situé à une distance maximale de 100 m de 95% de la population Internet. Notre réseau couvre 200 villes dans plus de 90 pays, et notre équipe d'ingénieurs a construit une infrastructure extrêmement rapide et fiable.

Nous sommes très fiers de notre travail et nous nous engageons à contribuer à rendre Internet meilleur et plus sûr. Les ingénieurs de Cloudflare, dont le travail est lié au matériel, connaissent bien les serveurs et leurs composants afin de comprendre et de choisir le meilleur équipement pour maximiser son efficacité.

Notre pile logicielle gère l'informatique à haute charge et dépend beaucoup de la vitesse du processeur, c'est pourquoi nos ingénieurs doivent constamment optimiser l'efficacité et la fiabilité de Cloudflare à tous les niveaux de la pile. Côté serveur, le moyen le plus simple consiste à augmenter la puissance de calcul en ajoutant des cœurs CPU. Plus vous pouvez insérer de cœurs dans un serveur, plus il peut traiter de données. C'est important pour nous, car la diversité de nos produits et de nos clients augmente avec le temps, et la croissance des demandes nécessite des serveurs pour augmenter la productivité. Pour augmenter leur productivité, nous devions augmenter la densité des noyaux - et c'est précisément ce que nous avons accompli. Ci-dessous, nous fournissons des détails sur les données de processeur pour les serveurs que nous déployons depuis 2015, y compris le nombre de cœurs:

---Gen 6Gen 7Gen 8Gen 9
Début des travaux2015201620172018
CPUIntel Xeon E5-2630 v3Intel Xeon E5-2630 v4Intel Xeon Silver 4116Intel Xeon Platinum 6162
Noyaux physiques2 x 82 x 102 x 122 x 24
TDP2 x 85W2 x 85W2 x 85W2 x 150W
TDP par cœur10,65 W8,50 W7.08W6,25 W


En 2018, nous avons fait un bond en avant dans le nombre total de cœurs par serveur avec la 9e génération. L'impact environnemental a été réduit de 33% par rapport à la 8e génération, ce qui nous a permis d'augmenter le volume et la puissance de calcul par rack. Les exigences de conception de Thermal Design Power (TDP) sont mentionnées pour souligner que notre efficacité énergétique a également augmenté au fil du temps. Cet indicateur est important pour nous: premièrement, nous voulons émettre moins de carbone dans l'atmosphère; deuxièmement, nous voulons tirer le meilleur parti de l'énergie des centres de données. Mais nous savons ce que nous devons viser.

Notre métrique principale de définition est le nombre de demandes par watt. Nous pouvons augmenter le nombre de demandes par seconde en ajoutant des cœurs, mais nous devons respecter notre budget énergétique. Nous sommes limités par l'infrastructure d'alimentation des centres de données, qui, avec nos modules de distribution d'énergie sélectionnés, nous donne une certaine limite supérieure pour chaque rack de serveur. L'ajout de serveurs à un rack augmente la consommation d'énergie. Les coûts d'exploitation augmenteront considérablement si nous dépassons la limite d'énergie d'un rack et que nous devons ajouter de nouveaux racks. Nous devons augmenter la puissance de calcul, en restant dans la même gamme d'énergie, ce qui augmentera le nombre de demandes par watt - notre métrique clé.

Comme vous l'avez peut-être deviné, nous avons soigneusement étudié la consommation d'énergie au stade de la conception. Le tableau ci-dessus montre que nous ne devrions pas perdre de temps à déployer des CPU plus gourmands en énergie, si le TDP par cœur est supérieur à la génération actuelle - cela affectera négativement notre métrique, le nombre de demandes par watt. Nous avons soigneusement examiné les systèmes prêts à l'emploi pour notre génération X sur le marché et pris une décision. Nous passons de notre circuit avec 48 cœurs Intel Xeon Platinum 6162 et deux sockets à un AMD EPYC 7642 à 48 cœurs avec un socket.



---IntelAMD
CPUXeon Platinum 6162EPYC 7642
Microarchitecture«Skylake»"Zen 2"
Nom de code"Skylake SP""Rome"
Technologie de processus14nm7 nm
Noyaux2 x 2448
La fréquence1,9 GHz2,4 GHz
Cache / socket L324 x 1,375 Mo16 x 16 Mo
Mémoire / socket6 canaux, jusqu'à DDR4-24008 canaux, jusqu'à DDR4-3200
TDP2 x 150W225W
PCIe / socket48 voies128 voies
EST UNx86-64x86-64


D'après les spécifications, il est clair que la puce d'AMD nous permettra de laisser le même nombre de cœurs, abaissant le TDP. Dans la 9e génération, le TDP par cœur était de 6,25 watts, et dans la Xe génération, il sera de 4,69 watts. Une diminution de 25%. En raison de l'augmentation de la fréquence et, éventuellement, d'un circuit plus simple avec une seule prise, nous pouvons supposer que la puce AMD s'avérera meilleure en entreprise. Pendant que nous effectuons divers tests et simulations pour comprendre les performances accrues d'AMD.

En attendant, nous notons que TDP est une métrique simplifiée à partir des spécifications du fabricant, que nous avons utilisée dans les premières étapes de la conception du serveur et de la sélection du processeur. Une recherche rapide sur Google montre qu'AMD et Intel ont des approches différentes de la définition de TDP, c'est pourquoi cette spécification n'est pas fiable. La consommation d'énergie réelle du CPU et, plus important encore, la consommation d'énergie du serveur, est ce que nous utilisons vraiment pour prendre la décision finale.

Préparation de l'écosystème


Au début de notre voyage vers le choix du prochain processeur, nous avons étudié un large éventail de CPU de différents fabricants qui étaient bien adaptés à notre pile de logiciels et à nos services (écrits en C, LuaJIT et Go). Nous avons déjà décrit en détail un ensemble d'outils pour mesurer la vitesse dans un article de notre blog . Dans ce cas, nous avons utilisé le même ensemble - cela nous permet d'évaluer l'efficacité du CPU dans un délai raisonnable, après quoi nos ingénieurs peuvent commencer à adapter nos programmes à un processeur spécifique.

Nous avons testé différents processeurs avec un nombre varié de cœurs, de sockets et de fréquences. Étant donné que cet article explique pourquoi nous nous sommes installés sur l'AMD EPYC 7642, tous les graphiques de ce blog se concentrent sur les performances des processeurs AMD par rapport à l'Intel Xeon Platinum 6162 denotre 9e génération .

Les résultats correspondent à des mesures du fonctionnement d'un serveur avec chaque variante de processeur, c'est-à-dire avec deux processeurs 24 cœurs d'Intel ou avec un processeur 48 cœurs d'AMD (serveur pour Intel avec deux sockets et serveur pour AMD EPYC avec un). Dans le BIOS, nous définissons les paramètres correspondant aux serveurs qui fonctionnent. Ce sont 3,03 GHz pour AMD et 2,5 GHz pour Intel. Simplifiant beaucoup, nous prévoyons qu'avec le même nombre de cœurs, AMD affichera des résultats 21% meilleurs qu'Intel.

Cryptographie






Cela semble prometteur pour AMD. Il fonctionne 18% mieux sur la cryptographie à clé publique. Avec une clé symétrique, il perd pour les options de cryptage AES-128-GCM, mais en général il se montre comparable.

Compression


Sur les serveurs de périphérie, nous compressons un grand nombre de données pour économiser de la bande passante et augmenter la vitesse de livraison de contenu. Nous transmettons les données via les bibliothèques zlib et brotli C. Tous les tests ont eu lieu sur le fichier HTML blog.cloudflare.com en mémoire.





AMD a remporté une moyenne de 29% lors de l'utilisation de gzip. Dans le cas de brotli, les résultats sont encore meilleurs sur les tests de qualité 7, que nous utilisons pour la compression dynamique. Une forte baisse se produit sur le test brotli-9 - nous l'attribuons au fait que Brotli consomme beaucoup de mémoire et déborde le cache. Cependant, AMD gagne par une large marge.

Beaucoup de nos services sont écrits en Go. Dans les graphiques suivants, nous revérifions les taux de cryptographie et de compression sur Go avec RegExp sur des lignes de 32 Ko en utilisant la bibliothèque de chaînes.

Allez la cryptographie




Allez compression






Go regexp






Allez cordes




AMD montre les meilleurs résultats dans tous les tests avec Go, sauf le signe ECDSA P256, où il est 38% derrière - ce qui est étrange, étant donné qu'il a montré 24% de meilleurs résultats en C. Cela vaut la peine de comprendre ce qui se passe là-bas. Mais en général, AMD ne gagne pas beaucoup, mais montre toujours les meilleurs résultats.

Luajit


Nous utilisons souvent LuaJIT dans la pile. Ceci est la colle tenant toutes les parties de Cloudflare. Et nous sommes heureux qu'AMD ait gagné ici.

En général, les tests montrent que EPYC 7642 fonctionne mieux que deux Xeon Platinum 6162. AMD perd sur une paire de tests - par exemple, AES-128-GCM et Go OpenSSL ECDSA-P256 Sign - cependant, il gagne sur tous les autres, en moyenne de 25% .

Simulation de charge de travail


Après nos tests express, nous avons exécuté le serveur via un autre ensemble de simulations dans lesquelles la charge synthétique est appliquée à la pile de périphérie logicielle. Ici, nous simulons une charge de travail de scripts avec différents types de requêtes qui peuvent être trouvées dans le travail réel. Les demandes varient en termes de volume de données, de protocoles HTTP ou HTTPS, de WAF, de sources de travailleurs et autres à partir d'une variété de variables. Vous trouverez ci-dessous une comparaison du débit des deux CPU pour les types de requêtes que nous trouvons le plus souvent.



Les résultats sur le diagramme sont mesurés par les indicateurs de base de la 9e génération de machines avec processeurs Intel, normalisés à une valeur de 1,0 le long de l'axe x. Par exemple, en prenant de simples requêtes de 10 Ko via HTTPS, nous pouvons voir qu'AMD est 1,5 fois mieux qu'Intel en termes de nombre de requêtes par seconde. En moyenne, AMD a réalisé 34% mieux pour les tests donnés qu'Intel. Considérant que le TDP pour un seul AMD EPYC 7642 est égal à 225 W, et pour deux processeurs Intel - 300 W, il s'avère qu'en termes de «demandes par watt», AMD affiche des résultats 2 fois meilleurs qu'Intel!

À ce stade, nous étions clairement en faveur de l'option d'un seul socket pour AMD EPYC 7642 comme futurs CPU pour la génération X. Nous étions très intéressés de savoir comment les serveurs AMD EPYC se comportaient dans le travail réel, et nous avons immédiatement envoyé plusieurs serveurs à certains des centres de données.

Du vrai travail


La première chose, bien sûr, a été de préparer le serveur au travail dans des conditions réelles. Toutes les machines de notre flotte fonctionnent avec les mêmes processus et services, ce qui en fait une excellente occasion de comparer correctement les performances. Comme dans la plupart des centres de données, nous avons déployé plusieurs générations de serveurs et nous assemblons nos serveurs en grappes afin que chaque classe contienne des serveurs d'environ la même génération. Dans certains cas, cela peut entraîner des courbes d'utilisation variant entre les clusters. Mais pas avec nous. Nos ingénieurs ont optimisé l'utilisation du processeur pour toutes les générations afin que, indépendamment du fait que le processeur ait 8 cœurs sur une machine particulière ou 24, l'utilisation du processeur n'est généralement pas différente des autres.



Le graphique illustre notre commentaire sur la similitude d'utilisation - il n'y a pas de différence significative entre l'utilisation de processeurs AMD dans les serveurs de génération X et l'utilisation de processeurs Intel dans les serveurs de génération 9. Cela signifie que les serveurs de test et les serveurs principaux sont chargés de manière égale. Bien. C'est exactement ce que nous réalisons dans le travail de nos serveurs, et nous en avons besoin pour une comparaison honnête. Les deux graphiques ci-dessous indiquent le nombre de demandes traitées par un cœur de processeur et tous les cœurs au niveau du serveur.


Requêtes au


serveur Requêtes au serveur

On peut voir qu'en moyenne AMD traite 23% de demandes en plus. Pas mal du tout! Nous avons souvent écrit sur notre blog des moyens d'augmenter les performances de la génération 9. Et ici, nous avons le même nombre de cœurs, mais AMD fait plus de travail avec moins d'énergie. Immédiatement à partir des spécifications du nombre de cœurs et du TDP, on peut voir que AMD offre plus de vitesse avec une plus grande efficacité énergétique.

Mais, comme nous l'avons déjà mentionné, le TDP n'est pas une spécification standard, et ce n'est pas la même chose pour tous les fabricants, alors regardons l'utilisation réelle de l'énergie. En mesurant la consommation d'énergie du serveur en parallèle avec le nombre de requêtes par seconde, nous avons obtenu le graphique suivant:



Par le nombre de requêtes par seconde dépensées par watt, le serveur Gen X sur les processeurs AMD est 28% plus efficace. On aurait pu s'attendre à plus, étant donné que le TDP d'AMD est inférieur de 25%, cependant, il faut se rappeler que le TDP est une caractéristique ambiguë. Nous avons vu que la consommation d'énergie réelle d'AMD coïncide presque avec le TDP indiqué à une fréquence bien au-dessus de la base; Intel n'a pas ça. C'est une autre raison pour laquelle le TDP n'est pas une estimation fiable de la consommation d'énergie. Les processeurs Intel de nos serveurs Gen 9 sont intégrés dans le système multicode, tandis que les processeurs AMD fonctionnent dans des serveurs au format 1U standard. Cela ne parle pas en faveur d'AMD, car les serveurs multi-nœuds devraient fournir une densité plus élevée avec moins de consommation d'énergie par nœud, mais AMD a toujours surclassé Intel en termes de consommation d'énergie par nœud.

Dans la plupart des comparaisons sur les spécifications, les simulations de test et le travail réel, la configuration de 1P AMD EPYC 7642 s'est avérée bien meilleure que 2P Intel Xeon 6162. Dans certaines conditions, AMD peut fonctionner 36% mieux, et nous pensons qu'en optimisant le matériel et les programmes, nous nous pouvons obtenir une telle amélioration sur une base continue.

Il s'avère que AMD a gagné.

Des graphiques supplémentaires montrent le délai moyen et le délai p99 en fonctionnement NGINX pendant 24 heures. En moyenne, les processus AMD ont fonctionné 25% plus rapidement. À p99, il fonctionne 20 à 50% plus rapidement en fonction de l'heure de la journée.

Conclusion


Les ingénieurs du matériel et des performances de Cloudflare effectuent un nombre important de tests et de recherches pour sélectionner la meilleure configuration de serveur pour nos clients. Nous aimons travailler ici parce que nous pouvons résoudre de telles tâches grandioses, et aussi vous aider à résoudre vos problèmes avec des services tels que l'informatique sans serveur et une gamme de solutions aux problèmes de sécurité, en particulier, Magic Transit, Argo Tunnel et la protection DDoS . Tous les serveurs du réseau Cloudflare sont configurés pour un fonctionnement fiable, et nous essayons toujours de rendre chaque nouvelle génération de serveurs meilleure que la précédente. Nous pensons que AMD EPYC 7642 est la réponse à la question du choix des processeurs pour la génération X.

En utilisant le service Cloudflare Workers, les développeurs déploient leurs applications sur notre réseau, se développant dans le monde entier. Nous sommes fiers d'offrir à nos clients la possibilité de se concentrer sur l'écriture de code pendant que nous travaillons sur la sécurité et la fiabilité dans le cloud. Et aujourd'hui, nous sommes encore plus heureux d'annoncer que leur travail sera déployé sur nos serveurs de génération Gen X exécutant des processeurs AMD EPYC de deuxième génération.


Processeurs EPYC 7642, nom de code «Rome» [Rome]

Grâce à EPYC 7642 d'AMD, nous avons pu augmenter notre vitesse et faciliter l'expansion du réseau vers de nouvelles villes. Rome n'a pas été construite en un jour, mais bientôt elle sera plus proche de beaucoup d'entre vous.

Au cours des deux dernières années, nous avons expérimenté de nombreuses puces x86 d'Intel et d'AMD, ainsi que des processeurs d'ARM. Nous espérons qu'à l'avenir, ces fabricants de CPU travailleront avec nous afin que nous puissions ensemble construire un Internet amélioré.

All Articles