Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Повече от един милиард уникални IP адреса преминават през мрежата Cloudflare всеки ден; обслужва повече от 11 милиона HTTP заявки в секунда; тя е в рамките на 100 ms от 95% от интернет населението. Нашата мрежа обхваща 200 града в над 90 страни, а екипът ни от инженери е изградил изключително бърза и надеждна инфраструктура.

Ние се гордеем с нашата работа и сме ангажирани да помогнем да направим интернет по-добро и по-безопасно място. Хардуерните инженери на Cloudflare имат дълбоко разбиране за сървърите и техните компоненти, за да разберат и изберат най-добрия хардуер, за да увеличат максимално неговата производителност.

Нашият софтуерен стек се справя с изчисления с голямо натоварване и е силно зависим от процесора, което изисква от нашите инженери непрекъснато да оптимизират ефективността и надеждността на Cloudflare на всяко ниво на стека. От страна на сървъра, най-лесният начин за увеличаване на процесорната мощност е чрез добавяне на CPU ядра. Колкото повече ядра може да побере един сървър, толкова повече данни може да обработва. Това е важно за нас, защото разнообразието от нашите продукти и клиенти нараства с времето, а нарастването на заявките изисква повишена производителност от сървърите. За да увеличим тяхната производителност, трябваше да увеличим плътността на ядрата - и точно това постигнахме. По-долу предоставяме подробни данни за процесорите за сървъри, които сме внедрили от 2015 г., включително броя на ядрата:

-
Gen 6
Gen 7
Gen 8
Gen 9

Първи стъпки
2015
2016
2017
2018

процесор
Intel Xeon E5-2630 v3
Intel Xeon E5-2630 v4
Intel Xeon Сребърна 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 г. направихме голям скок в общия брой ядра на сървър с Gen 9. Въздействието върху околната среда е намалено с 33% в сравнение с 8-мо поколение, което ни дава възможност да увеличим обема и изчислителната мощност на шкаф. Проектни изисквания за разсейване на топлината (Мощност на термичен дизайн, TDP) се споменават, за да се подчертае, че нашата енергийна ефективност също се е увеличила с течение на времето. Този показател е важен за нас: първо, искаме да отделяме по-малко въглерод в атмосферата; второ, искаме да използваме по най-добрия начин енергията от центровете за данни. Но знаем, че има към какво да се стремим.

Нашият основен определящ показател е броят заявки на ват. Можем да увеличим броя на заявките в секунда чрез добавяне на ядра, но трябва да останем в рамките на бюджета си за мощност. Ние сме ограничени от инфраструктурата за захранване на центъра за данни, която заедно с избраните от нас модули за разпределение на мощността ни дава определена горна граница за всеки сървърен шкаф. Добавянето на сървъри към шкаф увеличава консумацията на енергия. Оперативните разходи ще се увеличат значително, ако надхвърлим енергийния лимит за шкаф и трябва да добавим нови шкафове. Трябва да увеличим мощността на обработка, като същевременно останем в рамките на същия диапазон на консумация на енергия, което ще увеличи заявките на ват, нашата ключова метрика.

Както може би се досещате, ние внимателно проучихме потреблението на енергия на етапа на проектиране. Таблицата по-горе показва, че не трябва да губим време за внедряване на по-гладни за енергия процесори, ако TDP на ядро ​​е по-висок от текущото поколение - това ще се отрази негативно на нашата метрика, заявки на ват. Ние внимателно проучихме готовите за работа системи за нашето поколение X на пазара и взехме решение. Преминаваме от нашия 48-ядрен Intel Xeon Platinum 6162 двоен сокет дизайн към 48-ядрен AMD EPYC 7642 дизайн с един сокет.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

-
Intel
AMD

процесор
Xeon Platinum 6162
EPYC 7642

микроархитектура
"Скайлейк"
„Дзен 2“

Кодово име
"Skylake SP"
“Рим”

Технически процес
14nm
7nm

ядра
2 х 24
48

честота
1.9 GHz
2.4 GHz

L3 кеш/сокет
24 x 1.375 MiB
16 x 16 MiB

Памет/гнездо
6 канала, до DDR4-2400
8 канала, до DDR4-3200

TDP
2 х 150W
225W

PCIe/гнездо
48 ленти
128 ленти

ISA
x86-64
x86-64

От спецификациите става ясно, че чипът на AMD ще ни позволи да запазим същия брой ядра, като същевременно намалим TDP. 9-то поколение имаше TDP на ядро ​​от 6,25 W, а X-то поколение ще бъде 4,69 W. Намалена с 25%. Благодарение на повишената честота и може би по-опростен дизайн с един сокет, може да се предположи, че чипът на AMD ще се представи по-добре на практика. В момента провеждаме различни тестове и симулации, за да видим колко по-добре ще работи AMD.

Засега нека отбележим, че TDP е опростен показател от спецификациите на производителя, който използвахме в ранните етапи на проектиране на сървъра и избор на процесор. Бързо търсене в Google разкрива, че AMD и Intel имат различни подходи за определяне на TDP, което прави спецификацията ненадеждна. Реалната консумация на мощност на процесора и по-важното консумация на мощност на сървъра е това, което наистина използваме, когато вземаме окончателното си решение.

Готовност на екосистемата

За да започнем пътуването си към избора на следващия ни процесор, разгледахме широка гама от процесори от различни производители, които са подходящи за нашия софтуерен стек и услуги (написани на C, LuaJIT и Go). Вече описахме подробно набор от инструменти за измерване на скоростта в една от статиите в нашия блог. В този случай използвахме същия набор - той ни позволява да оценим ефективността на процесора за разумно време, след което нашите инженери могат да започнат да адаптират нашите програми към конкретен процесор.

Тествахме различни процесори с различен брой ядра, брой гнезда и честоти. Тъй като тази статия е за това защо се спряхме на AMD EPYC 7642, всички диаграми в този блог се фокусират върху представянето на AMD процесорите в сравнение с Intel Xeon Platinum 6162 от нашето 9-то поколение.

Резултатите съответстват на измервания на един сървър с всеки вариант на процесор - тоест с два 24-ядрени процесора от Intel или с един 48-ядрен процесор от AMD (сървър за Intel с два сокета и сървър за AMD EPYC с един) . В BIOS задаваме параметрите, съответстващи на работещите сървъри. Това е 3,03 GHz за AMD и 2,5 GHz за Intel. Опростявайки много, очакваме, че със същия брой ядра AMD ще се представи с 21% по-добре от Intel.

Криптография

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Изглежда обещаващо за AMD. Представя се с 18% по-добре при криптография с публичен ключ. Със симетричен ключ той губи за опциите за криптиране AES-128-GCM, но като цяло се представя сравнимо.

компресия

На крайните сървъри ние компресираме много данни, за да спестим честотна лента и да увеличим скоростта на доставка на съдържание. Прекарваме данните през C библиотеките zlib и brotli. Всички тестове бяха проведени на HTML файла blog.cloudflare.com в паметта.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

AMD печели средно с 29% при използване на gzip. При brotli резултатите са още по-добри при тестове с качество 7, което използваме за динамична компресия. При теста brotli-9 има рязък спад - обясняваме това с факта, че Brotli консумира много памет и препълва кеша. AMD обаче печели с голяма разлика.

Много от нашите услуги са написани на Go. В следващите графики проверяваме двойно скоростта на криптографията и компресията в Go с RegExp на 32 KB редове, използвайки библиотеката с низове.

Преминете към криптографията

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Go Compression

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Отидете на Regexp

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Отидете на струни

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

AMD се представя по-добре във всички тестове с Go, с изключение на ECDSA P256 Sign, където изостава с 38% - което е странно, като се има предвид, че се представи с 24% по-добре в C. Струва си да разберем какво се случва там. Като цяло AMD не печели много, но все пак показва най-добри резултати.

LuaJIT

Често използваме LuaJIT в стека. Това е лепилото, което държи всички части на Cloudflare заедно. И се радваме, че AMD спечели и тук.

Като цяло, тестовете показват, че EPYC 7642 се представя по-добре от два Xeon Platinum 6162. AMD губи на няколко теста - например AES-128-GCM и Go OpenSSL ECDSA-P256 Sign - но печели на всички останали, средно от 25%.

Симулация на работното натоварване

След нашите бързи тестове, ние проведохме сървърите през друг набор от симулации, в които се прилага синтетично натоварване към стека на крайния софтуер. Тук симулираме сценарийно натоварване с различни типове заявки, които могат да се срещнат в реална работа. Заявките се различават по обем данни, HTTP или HTTPS протоколи, WAF източници, Работници и много други променливи. По-долу е сравнение на пропускателната способност на двата процесора за типовете заявки, които срещаме най-често.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Резултатите в диаграмата са измерени спрямо базовата линия на машини, базирани на Intel от 9-то поколение, нормализирани до стойност 1,0 по оста x. Например, като вземем прости заявки от 10 KiB през HTTPS, можем да видим, че AMD се справя 1,5 пъти по-добре от Intel по отношение на заявки в секунда. Средно AMD се представи с 34% по-добре от Intel за тези тестове. Като се има предвид, че TDP за един AMD EPYC 7642 е 225 W, а за два Intel процесора е 300 W, се оказва, че по отношение на „заявките на ват“ AMD показва 2 пъти по-добри резултати от Intel!

В този момент вече явно се насочвахме към опцията с един сокет за AMD EPYC 7642 като нашите бъдещи процесори Gen X. Бяхме много заинтересовани да видим как сървърите AMD EPYC ще се представят в реална работа и незабавно изпратихме няколко сървъра на някои от центровете за данни.

Истинска работа

Първата стъпка естествено беше да подготвим сървърите за работа в реални условия. Всички машини в нашия парк работят с едни и същи процеси и услуги, което предоставя отлична възможност за правилно сравняване на производителността. Като повечето центрове за данни, ние разполагаме с няколко поколения сървъри и събираме нашите сървъри в клъстери, така че всеки клас да съдържа сървъри от приблизително едни и същи поколения. В някои случаи това може да доведе до криви на рециклиране, които се различават между клъстерите. Но не и при нас. Нашите инженери са оптимизирали използването на процесора за всички поколения, така че независимо от това дали процесорът на дадена машина има 8 ядра или 24, използването на процесора като цяло е същото като останалите.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Графиката илюстрира нашия коментар относно сходството на използването - няма съществена разлика между използването на AMD CPU в сървъри от поколение X и използването на процесори Intel в сървъри от поколение Gen 9. Това означава, че както тестовите, така и базовите сървъри са натоварени еднакво . Страхотен. Точно към това се стремим в нашите сървъри и имаме нужда от това за честно сравнение. Двете графики по-долу показват броя на заявките, обработени от едно процесорно ядро ​​и всички ядра на ниво сървър.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение
Заявки на ядро

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение
Заявки към сървъра

Вижда се, че средно AMD обработва 23% повече заявки. Никак не е зле! Често сме писали в нашия блог за начини за увеличаване на производителността на Gen 9. И сега имаме същия брой ядра, но AMD върши повече работа с по-малко енергия. От спецификациите за брой ядра и TDP веднага става ясно, че AMD осигурява по-голяма скорост с по-голяма енергийна ефективност.

Но както вече споменахме, TDP не е стандартна спецификация и не е еднаква за всички производители, така че нека да разгледаме действителното потребление на енергия. Измервайки потреблението на енергия на сървъра успоредно с броя на заявките в секунда, получихме следната графика:

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение

Въз основа на заявки за секунда на изразходван ват, Gen X сървърите, работещи на AMD процесори, са с 28% по-ефективни. Може да се очаква повече, като се има предвид, че TDP на AMD е с 25% по-нисък, но трябва да се помни, че TDP е двусмислена характеристика. Видяхме, че действителната консумация на енергия на AMD е почти идентична с заявената TDP при честоти, много по-високи от базовата; Intel го няма това. Това е друга причина, поради която TDP не е надеждна оценка на потреблението на енергия. Централните процесори на 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 извършват значително количество тестове и изследвания, за да определят най-добрата сървърна конфигурация за нашите клиенти. Харесва ни да работим тук, защото можем да разрешим големи проблеми като тези и можем да ви помогнем да разрешите проблемите си с услуги като периферни изчисления без сървър и набор от решения за сигурност като Magic Transit, Argo Tunnel и DDoS защита. Всички сървъри в мрежата Cloudflare са конфигурирани да работят надеждно и ние винаги се опитваме да направим всяко следващо поколение сървъри по-добро от предишното. Вярваме, че AMD EPYC 7642 е отговорът, когато става въпрос за процесори Gen X.

Използвайки Cloudflare Workers, разработчиците внедряват своите приложения в нашата разширяваща се мрежа по целия свят. Горди сме, че позволяваме на нашите клиенти да се съсредоточат върху писането на код, докато ние се фокусираме върху сигурността и надеждността в облака. И днес имаме още по-голямо удоволствие да обявим, че тяхната работа ще бъде разгърната на нашите сървъри от поколение X, работещи с процесори AMD EPYC от второ поколение.

Cloudflare избира процесори от AMD за крайни сървъри от десето поколение
Процесори EPYC 7642, кодово име "Рим" [Рим]

Използвайки EPYC 7642 на AMD, успяхме да повишим нашата производителност и да улесним разширяването на нашата мрежа до нови градове. Рим не е построен за един ден, но скоро ще бъде по-близо до много от вас.

През последните няколко години експериментирахме с много x86 чипове от Intel и AMD, както и процесори от ARM. Очакваме тези производители на процесори да продължат да работят с нас в бъдеще, за да можем всички заедно да изградим по-добър интернет.

Източник: www.habr.com

Добавяне на нов коментар