Cloudflare seleciona processadores AMD para servidores de ponta da décima geração



Mais de um bilhão de endereços IP exclusivos passam diariamente pela Cloudflare Network; Atende a mais de 11 milhões de solicitações HTTP por segundo; está localizado a uma distância não superior a 100 ms de 95% da população da Internet. Nossa rede abrange 200 cidades em mais de 90 países e nossa equipe de engenharia construiu uma infraestrutura extremamente rápida e confiável.

Temos muito orgulho do nosso trabalho e estamos comprometidos em ajudar a tornar a Internet melhor e mais segura. Os engenheiros da Cloudflare, cujo trabalho está relacionado ao hardware, são versados ​​em servidores e seus componentes, a fim de entender e escolher o melhor equipamento para maximizar sua eficiência.

Nossa pilha de software lida com computação de alta carga e depende muito da velocidade da CPU, e é por isso que nossos engenheiros precisam otimizar constantemente a eficiência e a confiabilidade do Cloudflare em todos os níveis da pilha. No lado do servidor, a maneira mais fácil é aumentar o poder da computação adicionando núcleos de CPU. Quanto mais núcleos você puder caber em um servidor, mais ele poderá processar dados. Isso é importante para nós, pois a diversidade de nossos produtos e clientes cresce com o tempo e o crescimento de solicitações exige que os servidores aumentem a produtividade. Para aumentar sua produtividade, precisávamos aumentar a densidade dos núcleos - e é exatamente isso que realizamos. Abaixo, fornecemos detalhes dos dados do processador para servidores que implantamos desde 2015, incluindo o número de núcleos:

---Gen 6Gen 7Gen 8Gen 9
Início do trabalho2015201620172018
CPUIntel 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


Em 2018, demos um grande salto no número total de núcleos por servidor com a 9ª geração. O impacto ambiental foi reduzido em 33% em comparação com a 8ª geração, o que nos deu a oportunidade de aumentar o volume e a capacidade de computação por rack. Os requisitos de projeto TDP ( Thermal Design Power ) são mencionados para enfatizar que nossa eficiência energética também aumentou ao longo do tempo. Este indicador é importante para nós: primeiro, queremos emitir menos carbono na atmosfera; segundo, queremos fazer o melhor uso da energia dos data centers. Mas sabemos o que devemos nos esforçar.

Nossa principal métrica de definição é o número de solicitações por watt. Podemos aumentar o número de solicitações por segundo adicionando núcleos, mas precisamos permanecer dentro do nosso orçamento de energia. Estamos limitados pela infraestrutura de energia dos datacenters, que, juntamente com nossos módulos de distribuição de energia selecionados, nos fornece um certo limite superior para cada rack de servidor. Adicionar servidores a um rack aumenta o consumo de energia. Os custos operacionais aumentarão drasticamente se formos além do limite de energia de um rack e precisarmos adicionar novos racks. Precisamos aumentar o poder de computação, permanecendo na mesma faixa de energia, o que aumentará o número de solicitações por watt - nossa principal métrica.

Como você deve ter adivinhado, estudamos cuidadosamente o consumo de energia na fase de projeto. A tabela acima mostra que não devemos perder tempo implantando CPUs com maior consumo de energia, se o TDP por núcleo for superior à geração atual - isso afetará negativamente nossa métrica, o número de solicitações por watt. Examinamos cuidadosamente os sistemas prontos para operação de nossa geração X no mercado e tomamos uma decisão. Estamos saindo do nosso circuito com 48 núcleos Intel Xeon Platinum 6162 e dois soquetes para um AMD EPYC 7642 de 48 núcleos com um soquete.



---IntelAMD
CPUXeon Platinum 6162EPYC 7642
Microarquitetura"Skylake""Zen 2"
Nome de códigoSkylake SP é seu negócio?"Roma"
Processo tecnológico14nm7nm
Cores2 x 2448.
Frequência1,9 GHz2,4 GHz
Cache / soquete L324 x 1.375MiB16 x 16MiB
Memória / soquete6 canais, até DDR4-24008 canais, até DDR4-3200
TDP2 x 150W225W
PCIe / soquete48 pistas128 pistas
É UMx86-64x86-64


Pelas especificações, fica claro que o chip da AMD nos permitirá deixar o mesmo número de núcleos, diminuindo o TDP. Na 9a geração, o TDP por núcleo foi de 6,25 watts e na Xa geração será de 4,69 watts. Uma redução de 25%. Devido ao aumento da frequência e, possivelmente, um circuito mais simples com um soquete, podemos assumir que o chip da AMD se mostrará melhor nos negócios. Enquanto estamos realizando vários testes e simulações para entender o desempenho da AMD.

Enquanto isso, observamos que o TDP é uma métrica simplificada das especificações do fabricante, que usamos nos estágios iniciais do design do servidor e da seleção da CPU. Uma rápida pesquisa no Google demonstra que a AMD e a Intel têm abordagens diferentes para a definição de TDP, razão pela qual essa especificação não é confiável. O consumo real de energia da CPU e, mais importante, o consumo de energia do servidor, é o que realmente usamos quando tomamos a decisão final.

Preparação do ecossistema


No início de nossa jornada para escolher o próximo processador, estudamos uma grande variedade de CPUs de diferentes fabricantes que eram adequadas para a nossa pilha e serviços de software (escritos em C, LuaJIT e Go). Já descrevemos em detalhes um conjunto de ferramentas para medir a velocidade em um artigo em nosso blog . Nesse caso, usamos o mesmo conjunto - ele permite avaliar a eficácia da CPU em um tempo razoável, após o qual nossos engenheiros podem começar a adaptar nossos programas a um processador específico.

Testamos vários processadores com um número diversificado de núcleos, soquetes e frequências. Como estamos descrevendo o motivo pelo qual optamos pelo AMD EPYC 7642 neste artigo, todos os gráficos deste blog se concentram no desempenho dos processadores AMD em comparação com o Intel Xeon Platinum 6162 danossa 9ª geração .

Os resultados correspondem às medições da operação de um servidor com cada variante de processador - ou seja, com dois processadores de 24 núcleos da Intel ou com um processador de 48 núcleos da AMD (servidor para Intel com dois soquetes e servidor para AMD EPYC com um). No BIOS, definimos os parâmetros correspondentes aos servidores em funcionamento. Estes são 3,03 GHz para AMD e 2,5 GHz para Intel. Simplificando bastante, esperamos que, com o mesmo número de núcleos, a AMD mostre resultados 21% melhores que a Intel.

Criptografia






Parece promissor para a AMD. Funciona 18% melhor na criptografia de chave pública. Com uma chave simétrica, perde para as opções de criptografia AES-128-GCM, mas em geral se mostra comparável.

Compressão


Nos servidores de borda, compactamos muitos dados para economizar largura de banda e aumentar a velocidade da entrega de conteúdo. Passamos dados pelas bibliotecas zlib e brotli C. Todos os testes foram realizados no arquivo HTML blog.cloudflare.com na memória.





A AMD ganhou uma média de 29% ao usar o gzip. No caso do brotli, os resultados são ainda melhores em testes com qualidade 7, que usamos para compactação dinâmica. Ocorre uma queda acentuada no teste brotli-9 - atribuímos isso ao fato de que Brotli consome muita memória e sobrecarrega o cache. No entanto, a AMD vence por uma ampla margem.

Muitos de nossos serviços estão escritos em Go. Nos gráficos a seguir, verificamos novamente as taxas de criptografia e compactação no Go with RegExp em linhas de 32 KB usando a biblioteca de strings.

Ir criptografia




Vá compressão






Ir regexp






Ir strings




A AMD mostra os melhores resultados em todos os testes com o Go, exceto o sinal ECDSA P256, onde está 38% atrás - o que é estranho, considerando que apresentou resultados 24% melhores em C. Vale a pena descobrir o que está acontecendo lá. Mas, em geral, a AMD não ganha muito, mas ainda mostra os melhores resultados.

Luajit


Costumamos usar LuaJIT na pilha. Esta é a cola que contém todas as partes do Cloudflare. E estamos felizes que a AMD tenha vencido aqui.

Em geral, os testes mostram que o EPYC 7642 tem desempenho melhor que dois Xeon Platinum 6162. A AMD perde em um par de testes - por exemplo, AES-128-GCM e Go OpenSSL ECDSA-P256 Sign - no entanto, vence em todos os outros, em média, 25% .

Simulação de carga de trabalho


Após nossos testes expressos, executamos o servidor através de outro conjunto de simulações em que a carga sintética é aplicada à pilha de borda do software. Aqui simulamos uma carga de trabalho de scripts com vários tipos de consultas que podem ser encontradas no trabalho real. As solicitações variam em termos de volume de dados, protocolos HTTP ou HTTPS, WAF, fontes Workers e outras de uma variedade de variáveis. Abaixo está uma comparação da taxa de transferência das duas CPUs para os tipos de solicitações que encontramos com mais freqüência.



Os resultados no diagrama são medidos pelos indicadores básicos da 9ª geração de máquinas com processadores Intel, normalizados para um valor de 1,0 ao longo do eixo x. Por exemplo, aceitando solicitações simples de 10 KiB via HTTPS, podemos ver que a AMD é 1,5 vezes melhor que a Intel em termos do número de solicitações por segundo. Em média, a AMD teve um desempenho 34% melhor nos testes apresentados do que a Intel. Considerando que o TDP para o único AMD EPYC 7642 é de 225 W e para dois processadores Intel - 300 W, verifica-se que, em termos de "solicitações por watt", a AMD mostra resultados 2 vezes melhores que a Intel!

Nesse ponto, estávamos claramente inclinados para a opção de um soquete para o AMD EPYC 7642 como nossos futuros processadores para a geração X. Estávamos muito interessados ​​em saber como os servidores AMD EPYC se comportam no trabalho real e imediatamente enviamos vários servidores para alguns dos data centers.

Trabalho real


A primeira coisa, é claro, foi preparar o servidor para o trabalho em condições reais. Todas as máquinas da nossa frota trabalham com os mesmos processos e serviços, o que torna uma ótima oportunidade para comparar corretamente o desempenho. Como na maioria dos datacenters, temos várias gerações de servidores implantados e montamos nossos servidores em clusters para que cada classe contenha servidores de aproximadamente a mesma geração. Em alguns casos, isso pode resultar em curvas de utilização variando entre os clusters. Mas não conosco. Nossos engenheiros otimizaram a utilização da CPU para todas as gerações, de modo que, independentemente de a CPU possuir 8 núcleos em uma máquina específica ou 24, o uso da CPU geralmente não é diferente do resto.



O gráfico ilustra nosso comentário sobre a similaridade de utilização - não há diferença significativa entre o uso de CPUs AMD em servidores Gen X e o uso de processadores Intel em servidores Gen 9. Isso significa que os servidores de teste e núcleo são carregados igualmente. Bem. É exatamente isso que alcançamos no trabalho de nossos servidores e precisamos disso para uma comparação honesta. Os dois gráficos abaixo mostram o número de solicitações processadas por um núcleo da CPU e todos os núcleos no nível do servidor.


Consultas para o


servidor Consultas para o servidor

Pode-se observar que, em média, a AMD processa 23% mais solicitações. Nada mal! Muitas vezes escrevemos em nosso blog sobre maneiras de aumentar o desempenho da geração 9. E aqui temos o mesmo número de núcleos, mas a AMD está trabalhando mais com menos energia. Imediatamente a partir das especificações para o número de núcleos e TDP, pode-se ver que a AMD oferece mais velocidade com maior eficiência energética.

Mas, como já mencionamos, o TDP não é uma especificação padrão e não é a mesma para todos os fabricantes, portanto, vejamos o uso real de energia. Ao medir o consumo de energia do servidor em paralelo com o número de solicitações por segundo, obtivemos o seguinte gráfico:



Pelo número de solicitações por segundo gasto por watt, o servidor Gen X nos processadores AMD é 28% mais eficiente. Poder-se-ia esperar mais, dado que o TDP da AMD é 25% menor, no entanto, deve-se lembrar que o TDP é uma característica ambígua. Vimos que o consumo real de energia da AMD quase coincide com o TDP indicado em uma frequência bem acima da base; A Intel não tem isso. Essa é outra razão pela qual o TDP não é uma estimativa confiável do consumo de energia. As CPUs Intel em nossos servidores Gen 9 são integradas ao sistema multicode, enquanto as CPUs AMD trabalham em servidores de fator de forma padrão de 1U. Isso não é favorável à AMD, já que os servidores multinode devem fornecer maior densidade com menor consumo de energia por nó, porém a AMD ainda está à frente da Intel em termos de consumo de energia por nó.

Na maioria das comparações de especificações, simulações de teste e trabalho real, a configuração do 1P AMD EPYC 7642 provou ser muito melhor que o 2P Intel Xeon 6162. Em algumas condições, a AMD pode funcionar 36% melhor, e acreditamos que, ao otimizar o hardware e os programas, podemos obter essa melhoria continuamente.

Acontece que a AMD venceu.

Gráficos adicionais mostram o atraso médio e o atraso p99 na operação do NGINX por 24 horas. Em média, os processos da AMD foram 25% mais rápidos. Na p99, ele roda 20-50% mais rápido, dependendo da hora do dia.

Conclusão


Os engenheiros de hardware e desempenho da Cloudflare fazem uma quantidade significativa de testes e pesquisas para selecionar a melhor configuração de servidor para nossos clientes. Gostamos de trabalhar aqui porque podemos resolver tarefas grandiosas e também ajudá-lo a resolver seus problemas com serviços como computação de borda sem servidor e uma variedade de soluções para problemas de segurança, em particular proteção contra trânsito mágico, túnel Argo e DDoS . Todos os servidores da rede Cloudflare estão configurados para uma operação confiável, e estamos sempre tentando tornar cada próxima geração de servidores melhor que a anterior. Acreditamos que o AMD EPYC 7642 é a resposta para a pergunta sobre a escolha de processadores para a geração X.

Usando o serviço Cloudflare Workers, os desenvolvedores implantam seus aplicativos em nossa rede, expandindo-se em todo o mundo. Temos orgulho em oferecer a nossos clientes a oportunidade de nos concentrarmos na criação de código enquanto trabalhamos em segurança e confiabilidade na nuvem. E hoje temos o prazer de anunciar que o trabalho deles será implantado em nossos servidores da geração Gen X executando processadores AMD EPYC de segunda geração.


Processadores EPYC 7642, codinome “Rome” [Rome]

Usando o EPYC 7642 da AMD, conseguimos aumentar nossa velocidade e facilitar a expansão da rede para novas cidades. Roma não foi construída em um dia, mas em breve estará mais perto de muitos de vocês.

Nos últimos anos, experimentamos muitos chips x86 da Intel e AMD, bem como processadores da ARM. Esperamos que, no futuro, esses fabricantes de CPU trabalhem conosco, para que possamos construir juntos uma Internet aprimorada.

All Articles