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

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

Más de mil millones de direcciones IP únicas pasan por la red Cloudflare todos los días; atiende más de 11 millones de solicitudes HTTP por segundo; ella está a 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 ingenieros ha construido una infraestructura extremadamente rápida y confiable.

Estamos muy orgullosos de nuestro trabajo y estamos comprometidos a ayudar a hacer de Internet un lugar mejor y más seguro. Los ingenieros de hardware de Cloudflare tienen un profundo conocimiento de los servidores y sus componentes para comprender y seleccionar el mejor hardware para maximizar su rendimiento.

Nuestra pila de software maneja computación de alta carga y depende en gran medida de la CPU, lo que requiere que nuestros ingenieros optimicen continuamente la eficiencia y confiabilidad de Cloudflare en cada nivel de la pila. Del lado del servidor, la forma más sencilla de aumentar la potencia de procesamiento es agregando núcleos de CPU. Cuantos más núcleos pueda albergar un servidor, más datos podrá procesar. Esto es importante para nosotros porque la variedad de nuestros productos y clientes crece con el tiempo, y el crecimiento de las solicitudes requiere un mayor rendimiento de los servidores. Para aumentar su rendimiento, necesitábamos aumentar la densidad de los núcleos, y eso es exactamente lo que logramos. A continuación proporcionamos datos detallados sobre los procesadores para servidores que hemos implementado desde 2015, incluida la cantidad de núcleos:

-
Gen 6
Gen 7
Gen 8
Gen 9

Primeros pasos
2015
2016
2017
2018

CPU
Intel Xeon E5-2630 v3
Intel Xeon E5-2630 v4
Intel Xeon Silver 4116
Intel Xeon Platino 6162

Núcleos físicos
2 x 8
2 x 10
2 x 12
2 x 24

TDP
2 x 85W
2 x 85W
2 x 85W
2 x 150W

TDP por núcleo
10.65W
8.50W
7.08W
6.25W

En 2018, dimos un gran salto en la cantidad total de núcleos por servidor con Gen 9. El impacto ambiental se ha reducido en un 33% en comparación con la 8.ª generación, lo que nos brinda la oportunidad de aumentar el volumen y la potencia informática por rack. Requisitos de diseño para la disipación de calor (Potencia de diseño térmico, TDP) se mencionan para resaltar que nuestra eficiencia energética también ha aumentado 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 que tenemos algo por lo que luchar.

Nuestra principal métrica definitoria es el número de solicitudes por vatio. Podemos aumentar la cantidad de solicitudes por segundo agregando núcleos, pero debemos mantenernos dentro de nuestro presupuesto de energía. Estamos limitados por la infraestructura energética del centro de datos, que, junto con nuestros módulos de distribución de energía seleccionados, nos da un límite superior determinado para cada bastidor de servidores. Agregar servidores a un rack aumenta el consumo de energía. Los costos operativos aumentarán significativamente si excedemos el límite de energía por rack y tenemos que agregar nuevos racks. Necesitamos aumentar la potencia de procesamiento mientras nos mantenemos dentro del mismo rango de consumo de energía, lo que aumentará las 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 CPU que consumen mucha energía si el TDP por núcleo es mayor que el de la generación actual; esto afectará negativamente nuestra métrica, solicitudes por vatio. Estudiamos cuidadosamente los sistemas listos para funcionar para nuestra generación X en el mercado y tomamos una decisión. Estamos pasando de nuestro diseño de doble socket Intel Xeon Platinum 48 de 6162 núcleos a un diseño de socket único AMD EPYC 48 de 7642 núcleos.

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

-
Intel
AMD

CPU
Xeon Platinum 6162
EPYC 7642

Microarquitectura
"Lago del cielo"
"Zen 2"

Nombre de código
“Skylake SP”
"Roma"

Proceso tecnico
14nm
7nm

núcleos
2 x 24
48

frecuencia
1.9 GHz
2.4 GHz

Caché/zócalo L3
24 x 1.375 MB
16 x 16 MB

Memoria/zócalo
6 canales, hasta DDR4-2400
8 canales, hasta DDR4-3200

TDP
2 x 150W
225W

PCIe/zócalo
48 carriles
128 carriles

ES UN
x86-64
x86-64

De las especificaciones se desprende claramente que el chip de AMD nos permitirá mantener el mismo número de núcleos reduciendo el TDP. La 9ª generación tenía un TDP por núcleo de 6,25 W, y la X generación será de 4,69 W. Reducido en un 25%. Gracias al aumento de frecuencia y quizás a un diseño más simple con un solo zócalo, se puede suponer que el chip AMD funcionará mejor en la práctica. Actualmente estamos realizando varias pruebas y simulaciones para ver cuánto mejor funcionará AMD.

Por ahora, observemos 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 revela que AMD e Intel tienen enfoques diferentes para definir TDP, lo que hace que la especificación no sea confiable. El consumo real de energía de la CPU y, más importante aún, el consumo de energía del servidor, es lo que realmente utilizamos al tomar nuestra decisión final.

Preparación del ecosistema

Para comenzar nuestro viaje para elegir nuestro próximo procesador, analizamos una amplia gama de CPU de diferentes fabricantes que encajaban bien con 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 uno de nuestros artículos de blog. En este caso utilizamos el mismo conjunto: nos permite evaluar la eficiencia 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 una variedad de procesadores con una variedad de recuentos de núcleos, recuentos de sockets y frecuencias. Dado que este artículo trata sobre por qué nos decidimos por el AMD EPYC 7642, todos los gráficos de este blog se centran en el rendimiento de los procesadores AMD en comparación con el Intel Xeon Platinum 6162 de nuestra novena generación.

Los resultados corresponden a mediciones 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 la BIOS configuramos los parámetros correspondientes a los servidores en ejecución. Esto es 3,03 GHz para AMD y 2,5 GHz para Intel. Simplificando mucho, esperamos que con la misma cantidad de núcleos, AMD tenga un rendimiento un 21% mejor que Intel.

Criptografía

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

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

Parece prometedor para AMD. Funciona un 18% mejor en criptografía de clave pública. Con una clave simétrica, pierde con las opciones de cifrado AES-128-GCM, pero en general tiene un rendimiento 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 los datos a través de las bibliotecas C zlib y brotli. Todas las pruebas se ejecutaron en el archivo HTML blog.cloudflare.com en la memoria.

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

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

AMD ganó con una media del 29% al utilizar gzip. En el caso de brotli, los resultados son aún mejores en las pruebas con calidad 7, que utilizamos para la compresión dinámica. En la prueba brotli-9 hay una fuerte caída; esto se explica por el 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 la velocidad de criptografía y compresión en Go con RegExp en líneas de 32 KB usando la biblioteca de cadenas.

Ir criptografía

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

Ir a compresión

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

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

Ir expresión regular

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

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

Ir cuerdas

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

AMD obtiene mejores resultados en todas las pruebas con Go, excepto en ECDSA P256 Sign, donde quedó un 38% por detrás, lo cual es extraño, dado que tuvo un rendimiento un 24% mejor en C. Vale la pena descubrir qué está pasando allí. En general, AMD no gana mucho, pero aun así muestra los mejores resultados.

LuaJIT

A menudo utilizamos LuaJIT en la pila. Este es el pegamento que mantiene unidas todas las partes de Cloudflare. Y nos alegra que AMD también haya ganado aquí.

En general, las pruebas muestran que el 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, pero gana en todas las demás, por término medio. del 25%.

Simulación de carga de trabajo

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

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

Los resultados del gráfico se miden con respecto a la línea base de máquinas basadas en Intel de novena generación, normalizados a un valor de 9 en el eje x. Por ejemplo, tomando solicitudes simples de 1,0 KiB a través de HTTPS, podemos ver que AMD lo hace 10 veces mejor que Intel en términos de solicitudes por segundo. En promedio, AMD obtuvo un rendimiento un 1,5% mejor que Intel en estas pruebas. Teniendo en cuenta que el TDP para un solo AMD EPYC 34 es de 7642 W, y para dos procesadores Intel es de 225 W, resulta que en términos de "solicitudes por vatio", AMD muestra resultados 300 veces mejores que Intel.

En este punto, ya nos estábamos inclinando claramente hacia la opción de un solo socket para AMD EPYC 7642 como nuestras futuras CPU Gen X. Estábamos muy interesados ​​en ver cómo se comportarían los servidores AMD EPYC en el mundo real, e inmediatamente enviamos varios servidores a algunos desde centros de datos.

Trabajo de verdad

El primer paso, por supuesto, fue preparar los servidores para trabajar en condiciones reales. Todas las máquinas de nuestra flota trabajan con los mismos procesos y servicios, lo que brinda una excelente oportunidad para comparar correctamente el rendimiento. Como la mayoría de los centros de datos, tenemos varias generaciones de servidores implementados y agrupamos nuestros servidores en clústeres para que cada clase contenga servidores de aproximadamente las mismas generaciones. En algunos casos, esto puede dar lugar a curvas de reciclaje que difieren entre los grupos. Pero no con nosotros. Nuestros ingenieros han optimizado la utilización de la CPU para todas las generaciones, de modo que, independientemente de si la CPU de una máquina en particular tiene 8 o 24 núcleos, la utilización de la CPU es generalmente la misma que la del resto.

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

El gráfico ilustra nuestro comentario sobre la similitud de utilización: no hay una diferencia significativa entre el uso de CPU AMD en servidores de generación X y el uso de procesadores Intel en servidores de generación 9. Esto significa que tanto los servidores de prueba como los de referencia se cargan por igual. . Excelente. Esto es exactamente lo que buscamos en nuestros servidores y lo necesitamos para una comparación justa. Los dos gráficos siguientes muestran la cantidad de solicitudes procesadas por un núcleo de CPU y todos los núcleos a nivel de servidor.

Cloudflare elige procesadores de AMD para servidores perimetrales de décima generación
Solicitudes por núcleo

Cloudflare elige procesadores de AMD para servidores perimetrales de décima generación
Solicitudes al servidor

Se puede observar que, en promedio, AMD procesa un 23% más de solicitudes. ¡No está mal! A menudo hemos escrito en nuestro blog sobre formas de aumentar el rendimiento de Gen 9. Y ahora tenemos la misma cantidad de núcleos, pero AMD hace más trabajo con menos energía. De las especificaciones sobre el número de núcleos y TDP se desprende inmediatamente que AMD proporciona mayor velocidad con mayor eficiencia energética.

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

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

Según las solicitudes por segundo por vatio gastado, los servidores Gen X que se ejecutan en procesadores AMD son un 28% más eficientes. Se podría esperar más, dado que el TDP de AMD es un 25% menor, pero conviene recordar que el TDP es una característica ambigua. Hemos visto que el consumo de energía real de AMD es casi idéntico al TDP indicado en frecuencias mucho más altas que la base; Intel no tiene eso. Ésta es otra razón por la que el TDP no es una estimación fiable del consumo de energía. Las CPU de Intel en nuestros servidores Gen 9 están integradas en un sistema de múltiples nodos, mientras que las CPU de AMD operan en servidores de factor de forma estándar 1U. Esto no favorece a AMD, ya que los servidores multinodo deberían proporcionar una mayor densidad con menos consumo de energía por nodo, pero AMD aún superó a Intel en términos de consumo de energía por nodo.

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

Resulta que AMD ganó.

Gráficos adicionales muestran la latencia promedio y la latencia p99 ejecutando NGINX durante un período de 24 horas. En promedio, los procesos en AMD se ejecutaron un 25% más rápido. En p99 funciona entre un 20 y un 50% más rápido según la hora del día.

Conclusión

Los ingenieros de hardware y rendimiento de Cloudflare realizan una gran cantidad de pruebas e investigaciones para determinar la mejor configuración de servidor para nuestros clientes. Nos encanta trabajar aquí porque podemos resolver grandes problemas como estos y podemos ayudarlo a resolver sus problemas con servicios como computación perimetral sin servidor y una variedad de soluciones de seguridad como Magic Transit, Argo Tunnel y protección DDoS. Todos los servidores de la red Cloudflare están configurados para funcionar de manera confiable y siempre intentamos que cada próxima generación de servidores sea mejor que la anterior. Creemos que el AMD EPYC 7642 es la respuesta cuando se trata de procesadores Gen X.

Al utilizar Cloudflare Workers, los desarrolladores implementan sus aplicaciones en nuestra red en expansión en todo el mundo. Estamos orgullosos de permitir que nuestros clientes se concentren en escribir código mientras nosotros nos concentramos en la 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 X que ejecutan procesadores AMD EPYC de segunda generación.

Cloudflare elige procesadores de AMD para servidores perimetrales de décima generación
Procesadores EPYC 7642, nombre en clave "Roma" [Roma]

Al utilizar EPYC 7642 de AMD, pudimos aumentar nuestro rendimiento y facilitar la expansión de nuestra red a nuevas ciudades. Roma no se construyó en un día, pero pronto estará más cerca de muchos de vosotros.

En los últimos años hemos estado experimentando con muchos chips x86 de Intel y AMD, así como con procesadores ARM. Esperamos que estos fabricantes de CPU continúen trabajando con nosotros en el futuro para que todos podamos construir juntos una mejor Internet.

Fuente: habr.com

Añadir un comentario