Cloudflare selecciona procesadores AMD para servidores perimetrales de décima generación



Más de mil millones de direcciones IP únicas pasan a través de la red Cloudflare diariamente; Atiende a más de 11 millones de solicitudes HTTP por segundo; Se encuentra a una distancia de no más de 100 ms del 95% de la población de Internet. Nuestra red abarca 200 ciudades en más de 90 países, y nuestro equipo de ingeniería ha construido una infraestructura extremadamente rápida y confiable.

Estamos muy orgullosos de nuestro trabajo y estamos comprometidos a ayudar a hacer que Internet sea mejor y más seguro. Los ingenieros de Cloudflare, cuyo trabajo está relacionado con el hardware, conocen bien los servidores y sus componentes para comprender y elegir el mejor equipo para maximizar su eficiencia.

Nuestra pila de software maneja la informática de alta carga y depende mucho de la velocidad de la CPU, por lo que nuestros ingenieros tienen que optimizar constantemente la eficiencia y la fiabilidad de Cloudflare en todos los niveles de la pila. En el lado del servidor, la forma más fácil es aumentar la potencia informática agregando núcleos de CPU. Cuantos más núcleos pueda caber en un servidor, más podrá procesar datos. Esto es importante para nosotros, ya que la diversidad de nuestros productos y clientes crece con el tiempo, y el crecimiento de las solicitudes requiere servidores para aumentar la productividad. Para aumentar su productividad, necesitábamos aumentar la densidad de los núcleos, y esto es precisamente lo que hemos logrado. A continuación, proporcionamos detalles de los datos del procesador para los servidores que hemos estado implementando desde 2015, incluida la cantidad de núcleos:

---Gen 6Gen 7Gen 8Gen 9
Comienzo de trabajo2015201620172018
UPCIntel Xeon E5-2630 v3Intel Xeon E5-2630 v4Intel Xeon Silver 4116Intel Xeon Platinum 6162
Núcleos físicos2 x 82 x 102 x 122 x 24
TDP2 x 85W2 x 85W2 x 85W2 x 150W
TDP por núcleo10.65W8.50W7.08W6.25W


En 2018, dimos un gran salto en el número total de núcleos por servidor con la novena generación. El impacto ambiental se redujo en un 33% en comparación con la octava generación, lo que nos dio la oportunidad de aumentar el volumen y la potencia informática por rack. Los requisitos de diseño de Thermal Design Power (TDP) se mencionan para enfatizar que nuestra eficiencia energética también ha crecido con el tiempo. Este indicador es importante para nosotros: en primer lugar, queremos emitir menos carbono a la atmósfera; En segundo lugar, queremos aprovechar al máximo la energía de los centros de datos. Pero sabemos por lo que tenemos que luchar.

Nuestra principal métrica definitoria es la cantidad de solicitudes por vatio. Podemos aumentar el número de solicitudes por segundo agregando núcleos, pero debemos mantener nuestro presupuesto de energía. Estamos limitados por la infraestructura de energía de los centros de datos, que, junto con nuestros módulos de distribución de energía seleccionados, nos da un cierto límite superior para cada rack de servidores. Agregar servidores a un rack aumenta el consumo de energía. Los costos operativos aumentarán dramáticamente si vamos más allá del límite de energía de un bastidor y tenemos que agregar nuevos bastidores. Necesitamos aumentar la potencia informática, permaneciendo en el mismo rango de energía, lo que aumentará el número de solicitudes por vatio, nuestra métrica clave.

Como habrás adivinado, estudiamos cuidadosamente el consumo de energía en la etapa de diseño. La tabla anterior muestra que no deberíamos perder el tiempo implementando más CPUs que consumen mucha energía, si el TDP por núcleo es mayor que la generación actual; esto afectará negativamente a nuestra métrica, la cantidad de solicitudes por vatio. Examinamos cuidadosamente los sistemas listos para operar para nuestra Generación X en el mercado y tomamos una decisión. Nos estamos mudando de nuestro circuito con 48 núcleos Intel Xeon Platinum 6162 y dos zócalos a un AMD EPYC 7642 de 48 núcleos con un zócalo.



---IntelAMD
UPCXeon Platinum 6162EPYC 7642
Microarquitectura"Skylake""Zen 2"
Nombre clave"Skylake SP""Roma"
Proceso tecnológico14nm7nm
Núcleos2 x 2448
Frecuencia1.9 GHz2,4 GHz
L3 caché / socket24 x 1.375MiB16 x 16MiB
Memoria / socket6 canales, hasta DDR4-24008 canales, hasta DDR4-3200
TDP2 x 150W225W
PCIe / socket48 carriles128 carriles
ES UNx86-64x86-64


A partir de las especificaciones, está claro que el chip de AMD nos permitirá dejar el mismo número de núcleos, reduciendo TDP. En la novena generación, el TDP por núcleo fue de 6.25 vatios, y en la X generación será de 4.69 vatios. Una disminución del 25%. Debido al aumento en la frecuencia y, posiblemente, a un circuito más simple con un solo zócalo, podemos suponer que el chip AMD demostrará ser mejor en los negocios. Mientras llevamos a cabo varias pruebas y simulaciones para comprender cuánto mejor funcionará AMD.

Mientras tanto, observamos que TDP es una métrica simplificada de las especificaciones del fabricante, que utilizamos en las primeras etapas del diseño del servidor y la selección de la CPU. Una búsqueda rápida en Google demuestra que AMD e Intel tienen diferentes enfoques para la definición de TDP, por lo que esta especificación no es confiable. El consumo de energía real de la CPU y, lo que es más importante, el consumo de energía del servidor, es lo que realmente utilizamos al tomar la decisión final.

Preparación del ecosistema


Al comienzo de nuestro viaje para elegir el próximo procesador, estudiamos una gran variedad de CPU de diferentes fabricantes que se adaptaban bien a nuestra pila de software y servicios (escritos en C, LuaJIT y Go). Ya hemos descrito en detalle un conjunto de herramientas para medir la velocidad en un artículo en nuestro blog . En este caso, utilizamos el mismo conjunto: nos permite evaluar la efectividad de la CPU en un tiempo razonable, después de lo cual nuestros ingenieros pueden comenzar a adaptar nuestros programas a un procesador específico.

Probamos varios procesadores con un número diverso de núcleos, zócalos y frecuencias. Como estamos describiendo por qué nos decidimos por el AMD EPYC 7642 en este artículo, todos los gráficos en este blog se centran en cómo funcionan los procesadores AMD en comparación con el Intel Xeon Platinum 6162 deNuestra novena generación .

Los resultados corresponden a mediciones del funcionamiento de un servidor con cada variante de procesador, es decir, con dos procesadores de 24 núcleos de Intel, o con un procesador de 48 núcleos de AMD (servidor para Intel con dos sockets y servidor para AMD EPYC con uno). En el BIOS, establecemos los parámetros correspondientes a los servidores en funcionamiento. Estos son 3.03 GHz para AMD y 2.5 GHz para Intel. Simplificando mucho, esperamos que con la misma cantidad de núcleos AMD muestre resultados un 21% mejores que Intel.

Criptografía






Parece prometedor para AMD. Funciona un 18% mejor en criptografía de clave pública. Con una clave simétrica, pierde para las opciones de cifrado AES-128-GCM, pero en general se muestra comparable.

Compresión


En los servidores perimetrales, comprimimos una gran cantidad de datos para ahorrar ancho de banda y aumentar la velocidad de entrega de contenido. Pasamos datos a través de las bibliotecas zlib y brotli C. Todas las pruebas se realizaron en el archivo HTML blog.cloudflare.com en la memoria.





AMD ganó un promedio de 29% al usar gzip. En el caso de brotli, los resultados son aún mejores en pruebas con calidad 7, que utilizamos para la compresión dinámica. Se produce una fuerte caída en la prueba de brotli-9; atribuimos esto al hecho de que Brotli consume mucha memoria y desborda el caché. Sin embargo, AMD gana por un amplio margen.

Muchos de nuestros servicios están escritos en Go. En los siguientes gráficos, verificamos nuevamente las tasas de criptografía y compresión en Go con RegExp en líneas de 32 KB utilizando la biblioteca de cadenas.

Ir criptografía




Ir a la compresión






Ir regexp






Ir cuerdas




AMD muestra los mejores resultados en todas las pruebas con Go, excepto el signo ECDSA P256, donde tiene un 38% de retraso, lo cual es extraño, teniendo en cuenta que mostró 24% mejores resultados en C. Vale la pena descubrir qué está pasando allí. Pero en general, AMD no gana mucho, pero aún muestra los mejores resultados.

Luajit


A menudo usamos LuaJIT en la pila. Este es el pegamento que contiene todas las partes de Cloudflare. Y nos alegra que AMD haya ganado aquí.

En general, las pruebas muestran que EPYC 7642 funciona mejor que dos Xeon Platinum 6162. AMD pierde en un par de pruebas, por ejemplo, AES-128-GCM y Go OpenSSL ECDSA-P256 Sign, sin embargo, gana en todas las demás, en promedio en un 25% .

Simulación de carga de trabajo


Después de nuestras pruebas rápidas, ejecutamos el servidor a través de otro conjunto de simulaciones en las que la carga sintética se aplica a la pila de software del borde. Aquí simulamos una carga de trabajo de scripts con varios tipos de consultas que se pueden encontrar en el trabajo real. Las solicitudes varían en términos de volumen de datos, protocolos HTTP o HTTPS, WAF, fuentes de trabajadores y otros de una variedad de variables. A continuación se muestra una comparación del rendimiento de las dos CPU para los tipos de solicitudes que encontramos con mayor frecuencia.



Los resultados del diagrama se miden mediante los indicadores básicos de la novena generación de máquinas con procesadores Intel, normalizados a un valor de 1.0 a lo largo del eje x. Por ejemplo, tomando solicitudes simples de 10 KiB a través de HTTPS, podemos ver que AMD es 1.5 veces mejor que Intel en términos de la cantidad de solicitudes por segundo. En promedio, AMD tuvo un rendimiento 34% mejor para las pruebas dadas que Intel. Teniendo en cuenta que TDP para un solo AMD EPYC 7642 es igual a 225 W, y para dos procesadores Intel - 300 W, ¡resulta que en términos de "solicitudes por vatio" AMD muestra resultados 2 veces mejores que Intel!

En este punto, estábamos claramente inclinados hacia la opción de un solo socket para AMD EPYC 7642 como nuestras futuras CPU para la Generación X. Estábamos muy interesados ​​en saber cómo se comportan los servidores AMD EPYC en el trabajo real, e inmediatamente enviamos varios servidores a algunos de centros de datos.

Trabajo de verdad


Lo primero, por supuesto, fue preparar el servidor para trabajar en condiciones reales. Todas las máquinas de nuestra flota funcionan con los mismos procesos y servicios, lo que hace que sea una gran oportunidad para comparar correctamente el rendimiento. Como en la mayoría de los centros de datos, tenemos implementadas varias generaciones de servidores, y ensamblamos nuestros servidores en grupos para que cada clase contenga servidores de aproximadamente la misma generación. En algunos casos, esto puede resultar en curvas de utilización que varían entre grupos. Pero no con nosotros. Nuestros ingenieros han optimizado la utilización de la CPU para todas las generaciones para que, independientemente de si la CPU tiene 8 núcleos en una máquina en particular o 24, el uso de la CPU no suele ser diferente del resto.



El gráfico ilustra nuestro comentario sobre la similitud de utilización: no existe una diferencia significativa entre el uso de CPU AMD en servidores Gen X y el uso de procesadores Intel en servidores Gen 9. Esto significa que tanto los servidores de prueba como los servidores centrales se cargan por igual. Multa. Esto es exactamente lo que logramos en el trabajo de nuestros servidores, y necesitamos esto para una comparación honesta. Los dos gráficos a continuación muestran el número de solicitudes procesadas por un núcleo de CPU y todos los núcleos a nivel de servidor.


Consultas al


servidor Consultas al servidor

Se puede ver que, en promedio, AMD procesa un 23% más de solicitudes. ¡No está mal! A menudo escribimos en nuestro blog sobre formas de aumentar el rendimiento de Gen 9. Y aquí tenemos la misma cantidad de núcleos, pero AMD está haciendo más trabajo con menos energía. Inmediatamente a partir de las especificaciones para el número de núcleos y TDP, se puede ver que AMD produce más velocidad con mayor eficiencia energética.

Pero, como ya mencionamos, TDP no es una especificación estándar, y no es la misma para todos los fabricantes, así que veamos el uso real de la energía. Al medir el consumo de energía del servidor en paralelo con el número de solicitudes por segundo, obtuvimos el siguiente gráfico:



Por el número de solicitudes por segundo gastadas por vatio, el servidor Gen X en procesadores AMD es un 28% más eficiente. Uno podría haber esperado más, dado que el TDP de AMD es un 25% más bajo, sin embargo, debe recordarse que el TDP es una característica ambigua. Vimos que el consumo de energía real de AMD casi coincide con el TDP indicado a una frecuencia muy superior a la base; Intel no tiene eso. Esta es otra razón por la cual TDP no es una estimación confiable del consumo de energía. Las CPU Intel en nuestros servidores Gen 9 están integradas en el sistema multicode, mientras que las CPU AMD funcionan en servidores estándar de factor de forma 1U. Esto no habla a favor de AMD, ya que los servidores multinodo deberían proporcionar una mayor densidad con menos consumo de energía por nodo, sin embargo, AMD aún superó a Intel en términos de consumo de energía por nodo.

En la mayoría de las comparaciones en especificaciones, simulaciones de prueba y rendimiento del mundo real, la configuración 1P AMD EPYC 7642 demostró ser significativamente mejor que la 2P Intel Xeon 6162. En algunas condiciones, AMD puede funcionar un 36% mejor, y creemos que al optimizar el hardware y los programas, podemos lograr tal mejora de forma continua.

Resulta que AMD ganó.

Gráficos adicionales muestran el retraso promedio y el retraso de p99 en la operación NGINX durante 24 horas. En promedio, los procesos de AMD se ejecutaron un 25% más rápido. En p99, funciona 20-50% más rápido dependiendo de la hora del día.

Conclusión


Los ingenieros de hardware y rendimiento de Cloudflare realizan una gran cantidad de pruebas e investigaciones para seleccionar la mejor configuración de servidor para nuestros clientes. Nos gusta trabajar aquí porque podemos resolver tareas tan grandiosas y también ayudarlo a resolver sus problemas con servicios como la computación de borde sin servidor y una variedad de soluciones a problemas de seguridad, en particular, Magic Transit, Argo Tunnel y protección DDoS . Todos los servidores en la red Cloudflare están configurados para una operación confiable, y siempre estamos tratando de hacer que cada próxima generación de servidores sea mejor que la anterior. Creemos que AMD EPYC 7642 es la respuesta a la pregunta sobre la elección de procesadores para Gen X.

Usando el servicio Cloudflare Workers, los desarrolladores implementan sus aplicaciones en nuestra red, expandiéndose por todo el mundo. Estamos orgullosos de ofrecer a nuestros clientes la oportunidad de concentrarse en escribir código mientras trabajamos en seguridad y confiabilidad en la nube. Y hoy nos complace aún más anunciar que su trabajo se implementará en nuestros servidores de generación Gen X que ejecutan procesadores AMD EPYC de segunda generación.


Procesadores EPYC 7642, con el nombre en código "Roma" [Roma]

Utilizando el EPYC 7642 de AMD, pudimos aumentar nuestra velocidad y facilitar la expansión de la red a nuevas ciudades. Roma no se construyó en un día, pero pronto estará más cerca de muchos de ustedes.

En los últimos años, hemos experimentado con muchos chips x86 de Intel y AMD, así como con procesadores de ARM. Esperamos que en el futuro, estos fabricantes de CPU trabajen junto con nosotros para que juntos podamos construir una Internet mejorada.

All Articles