Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Każdego dnia przez sieć Cloudflare przechodzi ponad miliard unikalnych adresów IP; obsługuje ponad 11 milionów żądań HTTP na sekundę; znajduje się w promieniu 100 ms od 95% populacji internetowej. Nasza sieć obejmuje 200 miast w ponad 90 krajach, a nasz zespół inżynierów zbudował niezwykle szybką i niezawodną infrastrukturę.

Jesteśmy dumni z naszej pracy i angażujemy się w uczynienie Internetu lepszym i bezpieczniejszym miejscem. Inżynierowie sprzętu Cloudflare dogłębnie rozumieją serwery i ich komponenty, aby zrozumieć i wybrać najlepszy sprzęt w celu maksymalizacji jego wydajności.

Nasz stos oprogramowania obsługuje obliczenia o dużym obciążeniu i jest w dużym stopniu zależny od procesora, co wymaga od naszych inżynierów ciągłej optymalizacji wydajności i niezawodności Cloudflare na każdym poziomie stosu. Po stronie serwera najłatwiejszym sposobem zwiększenia mocy obliczeniowej jest dodanie rdzeni procesora. Im więcej rdzeni może zmieścić serwer, tym więcej danych może przetworzyć. Jest to dla nas ważne, ponieważ różnorodność naszych produktów i klientów rośnie z biegiem czasu, a wzrost liczby żądań wymaga zwiększonej wydajności serwerów. Aby zwiększyć ich wydajność, musieliśmy zwiększyć gęstość rdzeni - i właśnie to osiągnęliśmy. Poniżej podajemy szczegółowe dane dotyczące procesorów do serwerów, które wdrożyliśmy od 2015 roku, łącznie z liczbą rdzeni:

-
gen 6
gen 7
gen 8
gen 9

Pierwsze kroki
2015
2016
2017
2018

CPU
Intel Xeon E5 2630 v3
Intel Xeon E5 2630 v4
Intel Xeon Silver 4116
Intel Xeon Platinum 6162

Rdzenie fizyczne
X 2 8
X 2 10
X 2 12
X 2 24

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

TDP na rdzeń
10.65W
8.50W
7.08W
6.25W

W 2018 r. dokonaliśmy dużego skoku w całkowitej liczbie rdzeni na serwer dzięki generacji 9. Wpływ na środowisko został zmniejszony o 33% w porównaniu z 8. generacją, co dało nam możliwość zwiększenia objętości i mocy obliczeniowej na szafę. Wymagania projektowe dotyczące odprowadzania ciepła (Moc cieplna, TDP), aby podkreślić, że nasza efektywność energetyczna również wzrosła z biegiem czasu. Ten wskaźnik jest dla nas ważny: po pierwsze chcemy emitować mniej dwutlenku węgla do atmosfery; po drugie, chcemy jak najlepiej wykorzystać energię z centrów danych. Wiemy jednak, że jest o co walczyć.

Naszym głównym miernikiem definiującym jest liczba żądań na wat. Możemy zwiększyć liczbę żądań na sekundę, dodając rdzenie, ale musimy mieścić się w założonym budżecie mocy. Ogranicza nas infrastruktura zasilania centrum danych, co w połączeniu z wybranymi przez nas modułami dystrybucji zasilania daje nam pewien górny limit dla każdej szafy serwerowej. Dodanie serwerów do szafy zwiększa zużycie energii. Koszty operacyjne znacznie wzrosną, jeśli przekroczymy limit energii na szafę i będziemy musieli dodać nowe szafy. Musimy zwiększyć moc obliczeniową, utrzymując się w tym samym zakresie zużycia energii, co zwiększy liczbę żądań na wat, czyli nasz kluczowy wskaźnik.

Jak można się domyślić, już na etapie projektowania dokładnie zbadaliśmy zużycie energii. Powyższa tabela pokazuje, że nie powinniśmy tracić czasu na wdrażanie bardziej energochłonnych procesorów, jeśli TDP na rdzeń jest wyższy niż obecna generacja – będzie to miało negatywny wpływ na nasz wskaźnik żądań na wat. Dokładnie przestudiowaliśmy gotowe do uruchomienia systemy dla naszej generacji X na rynku i podjęliśmy decyzję. Przechodzimy z 48-rdzeniowej konstrukcji z dwoma gniazdami Intel Xeon Platinum 6162 na 48-rdzeniową konstrukcję z jednym gniazdem AMD EPYC 7642.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

-
Intel
AMD

CPU
Xeon Platinum 6162
EPYC 7642

Mikroarchitektura
„Niebiańskie Jezioro”
„Zen 2”

Kryptonim
„Skylake SP”
"Rzym"

Proces techniczny
14nm
7nm

rdzenie
X 2 24
48

częstotliwość
1.9 GHz
2.4 GHz

Pamięć podręczna/gniazdo L3
24 x 1.375 MB
16 x 16 MB

Pamięć/gniazdo
6 kanałów, do DDR4-2400
8 kanałów, do DDR4-3200

TDP
2 x 150W
225W

PCIe/gniazdo
48 pasów
128 pasów

JEST
x86-64
x86-64

Ze specyfikacji jasno wynika, że ​​chip od AMD pozwoli nam zachować tę samą liczbę rdzeni przy jednoczesnym obniżeniu TDP. 9. generacja miała TDP na rdzeń na poziomie 6,25 W, a X. generacja będzie to 4,69 W. Obniżono o 25%. Dzięki zwiększonej częstotliwości i być może prostszej konstrukcji z jednym gniazdem można przypuszczać, że chip AMD sprawdzi się lepiej w praktyce. Obecnie przeprowadzamy różne testy i symulacje, aby zobaczyć, o ile lepsza będzie wydajność AMD.

Na razie zauważmy, że TDP to uproszczona metryka wynikająca ze specyfikacji producenta, z której korzystaliśmy na wczesnych etapach projektowania serwera i doboru procesora. Szybkie wyszukiwanie w Google pokazuje, że AMD i Intel mają różne podejścia do definiowania TDP, przez co specyfikacja jest niewiarygodna. Rzeczywiste zużycie energii procesora, a co ważniejsze, zużycie energii serwera, jest tym, co naprawdę bierzemy pod uwagę przy podejmowaniu ostatecznej decyzji.

Gotowość ekosystemu

Aby rozpocząć naszą drogę do wyboru kolejnego procesora, przyjrzeliśmy się szerokiej gamie procesorów różnych producentów, które dobrze pasowały do ​​naszego stosu oprogramowania i usług (napisanych w C, LuaJIT i Go). Opisaliśmy już szczegółowo zestaw narzędzi do pomiaru prędkości w jednym z naszych artykułów na blogu. W tym przypadku zastosowaliśmy ten sam zestaw - pozwala on nam w rozsądnym czasie ocenić wydajność procesora, po czym nasi inżynierowie mogą przystąpić do dostosowywania naszych programów do konkretnego procesora.

Przetestowaliśmy różne procesory o różnej liczbie rdzeni, liczbie gniazd i częstotliwościach. Ponieważ w tym artykule wyjaśniono, dlaczego zdecydowaliśmy się na procesor AMD EPYC 7642, wszystkie wykresy w tym blogu skupiają się na wydajności procesorów AMD w porównaniu z procesorem Intel Xeon Platinum 6162 firmy nasze 9 pokolenie.

Wyniki odpowiadają pomiarom pojedynczego serwera z każdym wariantem procesora - czyli z dwoma 24-rdzeniowymi procesorami Intela lub jednym 48-rdzeniowym procesorem AMD (serwer dla Intela z dwoma gniazdami i serwer dla AMD EPYC z jednym) . W BIOS-ie ustawiamy parametry odpowiadające działającym serwerom. Jest to 3,03 GHz dla AMD i 2,5 GHz dla Intela. W wielkim uproszczeniu spodziewamy się, że przy tej samej liczbie rdzeni AMD będzie działać o 21% lepiej niż Intel.

Kryptografia

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Wygląda obiecująco dla AMD. Działa o 18% lepiej w kryptografii klucza publicznego. W przypadku klucza symetrycznego przegrywa w przypadku opcji szyfrowania AES-128-GCM, ale ogólnie działa porównywalnie.

kompresja

Na serwerach brzegowych kompresujemy dużo danych, aby zaoszczędzić na przepustowości i zwiększyć szybkość dostarczania treści. Dane przekazujemy przez biblioteki C zlib i brotli. Wszystkie testy przeprowadzono na pliku HTML blog.cloudflare.com w pamięci.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

AMD wygrało średnio o 29% przy użyciu gzipa. W przypadku brotli wyniki są jeszcze lepsze w testach o jakości 7, którą stosujemy do kompresji dynamicznej. W teście brotli-9 następuje gwałtowny spadek - tłumaczymy to faktem, że Brotli zużywa dużo pamięci i przepełnia pamięć podręczną. Jednak AMD wygrywa z dużą przewagą.

Wiele naszych usług jest napisanych w Go. Na poniższych wykresach dokładnie sprawdzamy szybkość kryptografii i kompresji w Go z RegExp na liniach 32 KB przy użyciu biblioteki ciągów.

Przejdź do kryptografii

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Przejdź do kompresji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Przejdź do Regexp

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Idź na Stringi

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

AMD radzi sobie lepiej we wszystkich testach z Go z wyjątkiem ECDSA P256 Sign, gdzie pozostało 38% w tyle – co jest dziwne, biorąc pod uwagę, że w C radziło sobie o 24% lepiej. Warto dowiedzieć się, co się tam dzieje. Ogólnie rzecz biorąc, AMD nie wygrywa dużo, ale i tak pokazuje najlepsze wyniki.

LuaJIT

Często używamy LuaJIT na stosie. To jest klej, który spaja wszystkie części Cloudflare. I cieszymy się, że i tutaj AMD zwyciężyło.

Ogólnie testy pokazują, że EPYC 7642 działa lepiej niż dwa Xeon Platinum 6162. AMD przegrywa w kilku testach – na przykład AES-128-GCM i Go OpenSSL ECDSA-P256 Sign – ale we wszystkich pozostałych średnio wygrywa z 25%.

Symulacja obciążenia

Po naszych szybkich testach poddaliśmy serwery kolejnemu zestawowi symulacji, w których do brzegowego stosu oprogramowania przykładane jest obciążenie syntetyczne. Tutaj symulujemy obciążenie scenariuszowe z różnymi typami żądań, które można napotkać w prawdziwej pracy. Żądania różnią się ilością danych, protokołami HTTP lub HTTPS, źródłami WAF, procesami roboczymi i wieloma innymi zmiennymi. Poniżej znajduje się porównanie przepustowości dwóch procesorów dla typów żądań, z którymi spotykamy się najczęściej.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Wyniki na wykresie mierzono w odniesieniu do wartości bazowych maszyn z procesorami Intel dziewiątej generacji, znormalizowanych do wartości 9 na osi x. Na przykład, biorąc proste żądania o wielkości 1,0 KiB przez HTTPS, widzimy, że AMD radzi sobie 10 razy lepiej niż Intel pod względem żądań na sekundę. Średnio AMD wypadło w tych testach o 1,5% lepiej niż Intel. Biorąc pod uwagę, że TDP dla pojedynczego AMD EPYC 34 wynosi 7642 W, a dla dwóch procesorów Intela 225 W, okazuje się, że pod względem „żądań na wat” AMD wykazuje 300 razy lepsze wyniki niż Intel!

W tym momencie już wyraźnie skłanialiśmy się ku opcji z jednym gniazdem dla AMD EPYC 7642 jako naszych przyszłych procesorów Gen X. Byliśmy bardzo zainteresowani tym, jak serwery AMD EPYC będą działać w rzeczywistej pracy, i natychmiast wysłaliśmy kilka serwerów do niektóre z centrów danych.

Prawdziwa praca

Pierwszym krokiem było oczywiście przygotowanie serwerów do pracy w rzeczywistych warunkach. Wszystkie maszyny w naszej flocie pracują w oparciu o te same procesy i usługi, co stanowi doskonałą okazję do prawidłowego porównania wydajności. Podobnie jak większość centrów danych, mamy wdrożonych kilka generacji serwerów i łączymy nasze serwery w klastry, tak aby każda klasa zawierała serwery mniej więcej tej samej generacji. W niektórych przypadkach może to spowodować, że krzywe recyklingu będą się różnić w zależności od klastra. Ale nie z nami. Nasi inżynierowie zoptymalizowali wykorzystanie procesora dla wszystkich generacji, tak że niezależnie od tego, czy procesor konkretnej maszyny ma 8 rdzeni, czy 24, wykorzystanie procesora jest zasadniczo takie samo jak pozostałych.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Wykres ilustruje nasz komentarz na temat podobieństwa wykorzystania - nie ma znaczącej różnicy pomiędzy wykorzystaniem procesorów AMD w serwerach generacji X a wykorzystaniem procesorów Intel w serwerach generacji Gen 9. Oznacza to, że zarówno serwery testowe, jak i bazowe są obciążone jednakowo . Świetnie. Właśnie do tego dążymy w przypadku naszych serwerów i potrzebujemy tego do uczciwego porównania. Dwa poniższe wykresy pokazują liczbę żądań przetworzonych przez jeden rdzeń procesora i wszystkie rdzenie na poziomie serwera.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji
Żądania na rdzeń

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji
Żądania do serwera

Można zauważyć, że AMD przetwarza średnio o 23% więcej żądań. Tak ogólnie to nieźle! Często pisaliśmy na naszym blogu o sposobach na zwiększenie wydajności Gen 9. I teraz mamy tę samą liczbę rdzeni, ale AMD robi więcej pracy przy mniejszym poborze mocy. Ze specyfikacji dotyczących liczby rdzeni i TDP od razu wynika, że ​​AMD zapewnia większą prędkość przy większej efektywności energetycznej.

Ale jak już wspomnieliśmy, TDP nie jest standardową specyfikacją i nie jest taki sam dla wszystkich producentów, więc przyjrzyjmy się faktycznemu zużyciu energii. Mierząc zużycie energii serwera równolegle z liczbą żądań na sekundę, otrzymaliśmy następujący wykres:

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji

Na podstawie żądań na sekundę i wydanego watu serwery Gen X działające na procesorach AMD są o 28% wydajniejsze. Można było oczekiwać więcej, biorąc pod uwagę, że TDP AMD jest o 25% niższe, jednak trzeba pamiętać, że TDP jest cechą niejednoznaczną. Widzieliśmy, że rzeczywiste zużycie energii przez AMD jest prawie identyczne z podanym TDP przy częstotliwościach znacznie wyższych niż bazowe; Intel tego nie ma. Jest to kolejny powód, dla którego TDP nie jest wiarygodnym oszacowaniem zużycia energii. Procesory firmy Intel w naszych serwerach Gen 9 są zintegrowane w systemie wielowęzłowym, podczas gdy procesory firmy AMD działają w standardowych serwerach o obudowie 1U. Nie jest to na korzyść AMD, ponieważ serwery wielowęzłowe powinny zapewniać większą gęstość przy mniejszym zużyciu energii na węzeł, ale AMD i tak wyprzedziło Intela pod względem zużycia energii na węzeł.

W większości porównań specyfikacji, symulacji testowych i wydajności w świecie rzeczywistym konfiguracja 1P AMD EPYC 7642 działała znacznie lepiej niż 2P Intel Xeon 6162. W niektórych warunkach AMD może działać nawet o 36% lepiej i wierzymy, że dzięki optymalizacji sprzętu i oprogramowania, możemy na bieżąco osiągać tę poprawę.

Okazuje się, że AMD wygrało.

Dodatkowe wykresy przedstawiają średnie opóźnienie i opóźnienie p99 podczas działania NGINX w okresie 24 godzin. Średnio procesy na AMD działały o 25% szybciej. Na p99 działa 20-50% szybciej w zależności od pory dnia.

wniosek

Inżynierowie sprzętu i wydajności Cloudflare przeprowadzają znaczną liczbę testów i badań, aby określić najlepszą konfigurację serwera dla naszych klientów. Uwielbiamy tu pracować, ponieważ możemy rozwiązywać takie duże problemy, a także możemy pomóc Ci rozwiązać Twoje problemy dzięki usługom takim jak bezserwerowe przetwarzanie brzegowe i szereg rozwiązań bezpieczeństwa, takich jak Magic Transit, Argo Tunnel i ochrona DDoS. . Wszystkie serwery w sieci Cloudflare są skonfigurowane tak, aby działały niezawodnie i zawsze staramy się, aby każda kolejna generacja serwerów była lepsza od poprzedniej. Wierzymy, że AMD EPYC 7642 jest odpowiedzią na procesory Gen X.

Korzystając z Cloudflare Workers, programiści wdrażają swoje aplikacje w naszej rozwijającej się sieci na całym świecie. Jesteśmy dumni, że pozwalamy naszym klientom skupić się na pisaniu kodu, podczas gdy my skupiamy się na bezpieczeństwie i niezawodności w chmurze. A dziś z jeszcze większą przyjemnością ogłaszamy, że ich prace zostaną wdrożone na naszych serwerach generacji X z procesorami AMD EPYC drugiej generacji.

Cloudflare wybiera procesory AMD do serwerów brzegowych dziesiątej generacji
Procesory EPYC 7642, kryptonim „Rzym” [Rzym]

Używając karty AMD EPYC 7642, byliśmy w stanie zwiększyć naszą wydajność i ułatwić rozbudowę naszej sieci do nowych miast. Nie od razu Rzym zbudowano, ale już niedługo dla wielu z Was będzie on bliższy.

W ciągu ostatnich kilku lat eksperymentowaliśmy z wieloma chipami x86 firm Intel i AMD, a także procesorami ARM. Oczekujemy, że ci producenci procesorów będą kontynuować z nami współpracę w przyszłości, abyśmy wszyscy mogli wspólnie budować lepszy Internet.

Źródło: www.habr.com

Dodaj komentarz