Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Штодня праз сетку Cloudflare Network праходзіць больш за мільярд унікальных IP-адрасоў; яна абслугоўвае больш за 11 млн HTTP-запытаў у секунду; яна знаходзіцца на адлегласці не больш за 100 мс ад 95% інтэрнэт-насельніцтва. Наша сетка раскінулася на 200 гарадоў у больш за 90 краінах, а наша каманда інжынераў пабудавала надзвычай хуткую і надзейную інфраструктуру.

Мы вельмі ганарымся нашай працай і настроены дапамагчы зрабіць інтэрнэт лепшым і бяспечным. Інжынеры Cloudflare, чыя праца злучана з жалезам, старанна разбіраюцца ў серверах і іх кампанентах, каб добра зразумець і абраць найлепшае абсталяванне для максімізацыі яго эфектыўнасці.

Наш праграмны стэк апрацоўвае высоканагружаныя вылічэнні і вельмі залежыць ад хуткасці CPU, з-за чаго нашым інжынерам даводзіцца ўвесь час аптымізаваць эфектыўнасць і надзейнасць Cloudflare на ўсіх узроўнях стэка. На баку сервера прасцей за ўсё павялічыць вылічальную магутнасць, дадаўшы ядраў CPU. Чым больш ядраў можна змясціць у серверы, тым больш ён зможа апрацоўваць дадзеныя. Для нас гэта важна, паколькі разнастайнасць нашых прадуктаў і кліентаў з часам расце, і рост запытаў патрабуе ад сервераў павелічэння прадукцыйнасці. Каб павялічыць іх прадукцыйнасць, нам патрабавалася павялічыць шчыльнасць ядраў - і менавіта гэтую задачу мы выканалі. Ніжэй прыводзім дэталізацыю дадзеных па працэсарах для сервераў, якія разгортваюцца намі з 2015 года, уключаючы і колькасць ядраў:

-
Gen 6
Gen 7
Gen 8
Gen 9

Пачатак працы
2015
2016
2017
2018

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

Фізічных ядраў
2 х 8
2 х 10
2 х 12
2 х 24

TDP
2 х 85W
2 х 85W
2 х 85W
2 х 150W

TDP на ядро
10.65W
8.50W
7.08W
6.25W

У 2018 годзе мы зрабілі вялікі скачок у агульнай колькасці ядраў на адзін сервер з 9-м пакаленнем. Уплыў на навакольнае асяроддзе быў зменшаны на 33% у параўнанні з 8-м пакаленнем, што дало нам магчымасць павялічыць аб'ёмы і вылічальныя магутнасці ў пераліку на стойку. Канструктыўныя патрабаванні па цеплаадводу (Цеплавая канструкцыя магутнасці, TDP) згаданыя, каб падкрэсліць, што наша энергаэфектыўнасць з часам таксама расла. Гэты паказчык важны для нас: па-першае, мы жадаем вылучаць у атмасферу менш вуглярода; па-другое, мы хочам найлепшым чынам выкарыстаць энергію дата-цэнтраў. Але мы ведаем, што ў нас ёсць, да чаго імкнуцца.

Асноўная наша вызначальная метрыка - гэты лік запытаў на ват. Можна павялічыць колькасць запытаў за секунду, дадаўшы ядраў, аднак нам трэба заставацца ў рамках нашага энергетычнага бюджэту. Нас абмяжоўвае інфраструктура харчавання дата-цэнтраў, якая сумесна з нашымі абранымі модулямі размеркавання энергіі дае нам пэўную верхнюю мяжу для кожнай сервернай стойкі. Даданне сервераў у стойку павялічвае энергаспажыванне. Аперацыйныя выдаткі сур'ёзна ўзрастуць, калі мы выйдзем за абмежаванне энергіі на стойку і нам давядзецца дадаваць новыя стойкі. Нам трэба павялічыць вылічальную магутнасць, застаючыся ў тым жа дыяпазоне энергаспажывання, што павялічыць колькасць запытаў на ват - нашу ключавую метрыку.

Як вы маглі здагадацца, мы старанна вывучалі энергаспажыванне яшчэ на этапе праектавання. З табліцы вышэй відаць, што нам не варта марнаваць час на разгортванне больш прагных да энергіі CPU, калі TDP на ядро ​​будзе вышэй, чым у бягучага пакалення - гэта негатыўна адаб'ецца на нашай метрыцы, ліку запытаў на ват. Мы старанна вывучылі гатовыя да працы сістэмы для нашага пакалення Х, прадстаўленыя на рынку, і прынялі рашэнне. Мы пераходзім з нашай схемы з 48-ю ядрамі Intel Xeon Platinum 6162 і двума сокетамі на 48-ядзерны AMD EPYC 7642 з адным сокетам.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

-
Intel
AMD

CPU
Xeon Плаціна 6162
EPYC 7642

Мікраархітэктура
"Skylake"
"Zen 2"

кодавае імя
"Skylake SP"
"Rome"

Тэхнічны працэс
14nm
7nm

Ядзер
2 х 24
48

частата
1.9 Ггц
2.4 Ггц

L3 Cache / socket
24 x 1.375MiB
16 x 16MiB

Memory / socket
6 каналаў, да DDR4-2400
8 каналаў, да DDR4-3200

TDP
2 х 150W
225W

PCIe / socket
48 завулкаў
128 завулкаў

ISA
x86-64
x86-64

З спецыфікацый відаць, што чып ад AMD дазволіць нам пакінуць тое ж колькасць ядраў, панізіўшы TDP. У 9-га пакалення паказчык TDP на ядро ​​быў 6,25 Вт, а ў Х-га пакалення гэта будзе 4,69 Вт. Паніжэнне на 25 працэнтаў. Дзякуючы павелічэнню частаты, і, магчыма, прасцейшай схеме з адным сокетам, можна выказаць здагадку, што чып ад AMD пакажа сябе ў справе лепш. Пакуль мы праводзім розныя тэсты і сімуляцыі, каб зразумець, наколькі лепей пакажа сябе AMD.

А пакуль адзначым, што TDP - гэта спрошчаная метрыка са спецыфікацый вытворцы, якую мы выкарыстоўвалі на ранніх стадыях праектавання сервераў і выбару CPU. Хуткі пошук у Google дэманструе, што AMD і Intel па-рознаму падыходзяць да вызначэння TDP, з-за чаго гэтая спецыфікацыя не з'яўляецца надзейнай. Рэальнае спажыванне энергіі CPU, і, што яшчэ важней, спажыванне энергіі серверам - вось, што мы рэальна выкарыстоўваем пры прыняцці канчатковага рашэння.

Гатоўнасць экасістэмы

У пачатку нашага шляху да выбару наступнага працэсара мы вывучылі вялікі асартымент CPU ад розных вытворцаў, добра падыходных для нашага праграмнага стэка і сэрвісаў (напісаных на C, LuaJIT і Go). Мы ўжо падрабязна апісвалі набор інструментаў для вымярэння хуткасці у адной з артыкулаў нашага блога. У дадзеным выпадку мы выкарыстоўвалі той жа набор - ён дазваляе за разумны час ацаніць эфектыўнасць CPU, пасля чаго нашы інжынеры могуць пачынаць прыстасоўваць нашы праграмы да канкрэтнага працэсара.

Мы выпрабавалі розныя працэсары з разнастайнай колькасцю ядраў, сокетаў і частот. Паколькі ў дадзеным артыкуле мы апісваем, чаму мы спыніліся на AMD EPYC 7642, усе графікі ў дадзеным блогу канцэнтруюцца на тым, як паказваюць сябе працэсары ад AMD у параўнанні з Intel Xeon Platinum 6162 з нашага 9-га пакалення.

Вынікі адпавядаюць вымярэнням працы аднаго сервера з кожным з варыянтаў працэсараў - гэта значыць, з двума 24-ядзернымі працэсарамі ад Intel, альбо з адным 48-ядзерным працэсарам ад AMD (сервер для Intel з двума сокетамі і сервер для AMD EPYC з адным). У BIOS мы выставілі параметры, якія адпавядаюць працавальным серверам. Гэта 3,03 Ггц для AMD і 2,5 Ггц для Intel. Вельмі моцна спрашчаючы, мы чакаем, што пры аднолькавай колькасці ядраў AMD пакажа вынікі на 21% лепш, чым у Intel.

Крыптаграфія

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Выглядае шматабяцальна для AMD. На крыптаграфіі з публічным ключом ён працуе на 18% лепш. З сіметрычным ключом ён прайгравае для варыянтаў шыфравання AES-128-GCM, але ў цэлым паказвае сябе параўнальна.

сціск

На edge-серверах мы сціскаем шмат дадзеных, каб эканоміць на прапускной здольнасці і павялічваць хуткасць дастаўкі кантэнту. Мы прапускаем дадзеныя праз С-бібліятэкі zlib і brotli. Усе тэсты праходзілі на HTML-файле blog.cloudflare.com у памяці.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

AMD перамог у сярэднім на 29% пры выкарыстанні gzip. У выпадку з brotli вынікі яшчэ лепш, на тэстах з якасцю 7, якія мы выкарыстоўваем для дынамічнага сціску. На цесце brotli-9 адбываецца рэзкае падзенне мы тлумачым гэта тым, што Brotli спажывае вельмі шмат памяці і перапаўняе кэш. Тым не менш, AMD выйграе з вялікім адрывам.

Многія нашы сэрвісы напісаны на Go. На наступных графіках мы пераправярае хуткасць крыптаграфіі і сціску на Go з RegExp на радках даўжынёй 32 КБ з выкарыстаннем бібліятэцы strings.

Go крыптаграфія

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Go Сціск

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Go Regexp

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Go Strings

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

AMD паказвае лепшыя вынікі ва ўсіх тэстах з Go акрамя ECDSA P256 Sign, дзе ён адстаў на 38% – што дзіўна, з улікам таго, што на З ён паказаў вынік на 24% лепш. Варта разабрацца, што тамака адбываецца. А ў цэлым, AMD выйграе не моцна, але ўсё ж паказвае лепшыя вынікі.

LuaJIT

Мы часта выкарыстоўваем LuaJIT у стэку. Гэта клей, які ўтрымлівае ўсе часткі Cloudflare. І мы рады, што AMD і тут выйграў.

У цэлым тэсты паказваюць, што EPYC 7642 працуе лепш, чым два Xeon Platinum 6162. На пары тэстаў AMD прайграе - да прыкладу, AES-128-GCM і Go OpenSSL ECDSA-P256 Sign - аднак на ўсіх іншых перамагае, у сярэднім на 25% .

Сімуляцыя працоўнай нагрузкі

Пасля нашых экспрэс-тэстаў мы прагналі сервера праз іншы набор сімуляцый, у якіх сінтэтычная нагрузка прымяняецца да праграмнага edge-стэку. Тут мы сімулюем працоўную нагрузку сцэнарыяў з рознымі тыпамі запытаў, якія можна сустрэць у рэальнай працы. Запыты адрозніваюцца па аб'ёме дадзеных, пратаколам HTTP або HTTPS, крыніцам WAF, Workers, і іншым са мноства зменных. Ніжэй паказана параўнанне прапускной здольнасці ў двух CPU для тых тыпаў запытаў, якія сустракаюцца ў нас найболей часта.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Вынікі на дыяграме вымяраюцца па базавых паказчыках 9-га пакалення машын з працэсарамі Intel, нармалізаваным да значэння 1,0 па восі х. Да прыкладу, узяўшы простыя запыты аб'ёмам 10 КіБ па HTTPS, мы можам бачыць, што AMD спраўляецца ў 1,5 разоў лепш Intel па колькасці запытаў у секунду. У сярэднім для прыведзеных тэстаў AMD зладзілася на 34% лепш, чым Intel. Улічваючы, што TDP для адзінага AMD EPYC 7642 роўныя 225 Вт, а для двух працэсараў Intel – 300 Вт, атрымліваецца, што па паказчыку "запытаў на ват" AMD паказвае ў 2 разы лепшыя вынікі, чым Intel!

Да гэтага моманту мы ўжо відавочна схіляліся да варыянту з адным сокетам для AMD EPYC 7642 у якасці нашых будучых CPU для пакалення Х. Нам было вельмі цікава пазнаць, як серверы AMD EPYC павядуць сябе ў рэальнай працы, і мы адразу ж адправілі некалькі сервераў у некаторыя з дата-цэнтраў.

Рэальная праца

Перш за ўсё, натуральна, трэба было падрыхтаваць сервера да працы ў рэальных умовах. Усе машыны нашага парка працуюць з аднымі і тымі ж працэсамі і сэрвісамі, што дае выдатную магчымасць карэктна параўноўваць хуткадзейнасць. Як у большасці дата-цэнтраў, у нас разгорнута некалькі пакаленняў сервераў, і мы збіраем нашы серверы ў кластары так, каб у кожным класе змяшчаліся серверы прыкладна аднолькавых пакаленняў. У некаторых выпадках гэта можа прывесці да таго, што крывыя ўтылізацыі будуць адрознівацца паміж кластарамі. Але не ў нас. Нашы інжынеры аптымізавалі ўтылізацыю CPU для ўсіх пакаленняў так, каб незалежна ад таго, 8 ядраў у CPU канкрэтнай машыны ці 24, выкарыстанне CPU звычайна не адрозніваецца ад астатніх.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Графік ілюструе наш каментар па падабенстве ўтылізацыі - не відаць значнай розніцы паміж выкарыстаннем CPU ад AMD у серверах пакалення Gen X і выкарыстанні працэсараў Intel у серверах пакалення Gen 9. Гэта азначае, што і тэставыя, і базавыя серверы нагружаныя аднолькава. Выдатна. Менавіта гэтага мы і дамагаемся ў працы нашых сэрвераў, і гэта трэба нам для сумленнага параўнання. Два графікі ніжэй паказваюць колькасць запытаў апрацаваных адным ядром CPU і ўсімі ядрамі на ўзроўні сервера.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD
Запытаў на ядро

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD
Запытаў на сервер

Відаць, што ў сярэднім AMD апрацоўвае на 23% запытаў больш. Зусім нядрэнна! Мы ў сваім блогу часта пісалі аб спосабах павелічэння прадукцыйнасці Gen 9. І вось у нас супадае колькасць ядраў, аднак AMD прарабляе больш працы з меншымі энергазатратамі. Адразу са спецыфікацый па колькасці ядраў і TDP бачна, што AMD выдае вялікую хуткасць з большай энергаэфектыўнасцю.

Але, як мы ўжо згадвалі, TDP - гэта не стандартная спецыфікацыя, і яна не адзіная для ўсіх вытворцаў, таму давайце паглядзім на рэальнае выкарыстанне энергіі. Вымераўшы спажыванне энергіі серверам паралельна з колькасцю запытаў у секунду, мы атрымалі наступны графік:

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD

Па колькасці запытаў у секунду на выдаткаваны ват сервер Gen X на працэсарах AMD працуе на 28% больш эфектыўна. Можна было чакаць і большага, улічваючы што ў AMD TDP на 25% ніжэй, аднак варта памятаць, што TDP характарыстыка неадназначная. Мы бачылі, што рэальнае спажыванне энергіі ў AMD практычна супадае з паказанымі TDP пры частаце, моцна якая перавышае базавую; у Intel такога няма. Гэта яшчэ адна прычына, па якой TDP не з'яўляецца надзейнай ацэнкай энергаспатравання. CPU ад Intel у нашых серверах Gen 9 інтэграваныя ў мультинодную сістэму, а ад AMD працуюць у стандартных серверах формаў-фактару 1U. Гэта кажа не на карысць AMD, паколькі мультинодные сервера павінны забяспечваць вялікую шчыльнасць пры меншым спажыванні энергіі на адну ноду, аднак AMD усё роўна абагнала Intel па паказчыку спажывання энергіі на ноду.

У большасці параўнанняў па спецыфікацыям, выпрабавальным сімуляцыям і рэальнай працы, канфігурацыя 1P AMD EPYC 7642 паказала сябе значна лепш, чым 2P Intel Xeon 6162. У некаторых умовах AMD можа працаваць на 36% лепш, і мы лічым, што аптымізаваўшы жалеза і праграмы зможам дасягнуць такога паляпшэння на пастаяннай аснове.

Атрымліваецца, AMD выйграла.

На дадатковых графіках паказаны сярэдняя затрымка і затрымка p99 у працы NGINX на працягу 24 гадзін. У сярэднім працэсы на AMD працавалі на 25% хутчэй. На p99 ён працуе на 20-50% хутчэй у залежнасці ад часу сутак.

Заключэнне

Інжынеры аддзела абсталявання і хуткадзейнасці ў Cloudflare робяць значныя аб'ёмы выпрабавальнай і даследчай працы каб абраць найлепшую канфігурацыю сервераў для нашых кліентаў. Нам падабаецца працаваць тут таму, што мы можам вырашаць такія грандыёзныя задачы, а таксама дапамагаем вам вырашаць вашыя задачы пры дапамозе такіх сэрвісаў, як бессерверныя edge-вылічэнні і масіва рашэнняў задач па бяспецы, у прыватнасці, Magic Transit, Argo Tunnel і абароны ад DDoS. . Усе серверы ў сетцы Cloudflare настроены на надзейную працу, і мы заўсёды спрабуем зрабіць кожнае наступнае пакаленне сервераў лепшым за папярэдні. Мы лічым, што AMD EPYC 7642 з'яўляецца адказам на пытанне аб выбары працэсараў для Gen X.

Пры дапамозе сэрвісу Cloudflare Workers распрацоўшчыкі разгортваюць свае прыкладанні ў нашай сетцы, якая пашыраецца па ўсім свеце. Мы з гонарам даем нашым кліентам магчымасць сканцэнтравацца на напісанні кода, пакуль мы займаемся бяспекай і надзейнасцю ў воблаку. І сёння нам яшчэ больш радасна паведаміць, што іх праца будзе разгорнута на нашых серверах пакалення Gen X, якія працуюць пад кіраваннем працэсараў AMD EPYC другога пакалення.

Для edge-сервераў дзясятага пакалення Cloudflare выбірае працэсары ад AMD
Працэсары EPYC 7642, кодавае імя "Rome" [Рым]

Дзякуючы выкарыстанню EPYC 7642 ад AMD мы змаглі павялічыць наша хуткадзейнасць і аблегчыць пашырэнне сеткі на новыя гарады. Рым будаваўся не за адзін дзень, аднак хутка ён апынецца бліжэй да шматлікіх з вас.

У апошнія пару гадоў мы эксперыментавалі са шматлікімі x86-чыпамі ад Intel і AMD, а таксама з працэсарамі ад ARM. Мы чакаем, што і ў будучыні гэтыя вытворцы CPU будуць працаваць сумесна з намі, каб мы ўсе разам маглі будаваць палепшаны інтэрнэт.

Крыніца: habr.com

Дадаць каментар