
Cloudflare ցանցը ամեն օր սպասարկում է մեկ միլիարդից ավելի եզակի 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 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 մեկ միջուկի համար
10.65W
8.50W
7.08W
6.25W
2018 թվականին մենք մեծ աճ գրանցեցինք 9-րդ սերնդի սերվերի միջուկների ընդհանուր քանակի առումով։ Շրջակա միջավայրի վրա ազդեցությունը 33-րդ սերնդի համեմատ կրճատվել է 8%-ով, ինչը թույլ է տվել մեզ ավելացնել յուրաքանչյուր դարակի ծավալը և հաշվողական հզորությունը։ Ջերմային նախագծման պահանջներ (, TDP) նշվում են՝ ընդգծելու համար, որ մեր էներգաարդյունավետությունը նույնպես ժամանակի ընթացքում բարելավվել է։ Այս չափանիշը կարևոր է մեզ համար. նախ, մենք ցանկանում ենք ավելի քիչ ածխածին արտանետել մթնոլորտ, երկրորդ, մենք ցանկանում ենք լավագույնս օգտագործել մեր տվյալների կենտրոնների էներգիան։ Սակայն մենք գիտենք, որ ունենք որոշակի բարելավման տեղ։
Մեր հիմնական չափանիշը վատտի հաշվով հարցումների քանակն է։ Մենք կարող ենք ավելացնել վայրկյանում հարցումները՝ ավելացնելով միջուկներ, բայց մենք պետք է մնանք մեր էներգիայի բյուջեի սահմաններում։ Մենք սահմանափակված ենք տվյալների կենտրոնների էներգետիկ ենթակառուցվածքով, որը, մեր ընտրած էներգիայի բաշխման մոդուլների հետ միասին, մեզ տալիս է որոշակի վերին սահման յուրաքանչյուր սերվերի դարակի համար։ Սերվերներ դարակին ավելացնելը մեծացնում է էներգիայի սպառումը։ Գործառնական ծախսերը զգալիորեն աճում են, եթե մենք գերազանցում ենք դարակի հաշվով հզորության սահմանաչափը և ստիպված ենք լինում ավելացնել ավելի շատ դարակներ։ Մենք պետք է մեծացնենք հաշվողական հզորությունը՝ մնալով նույն էներգիայի բյուջեի սահմաններում, ինչը մեծացնում է վատտի հաշվով հարցումները, որը մեր հիմնական չափանիշն է։
Ինչպես գուցե կռահել եք, նախագծման փուլում մենք շատ ուշադիր դիտարկել ենք էներգիայի սպառումը։ Վերևում ներկայացված աղյուսակից կարող ենք տեսնել, որ չենք ուզում ժամանակ վատնել ավելի շատ էներգասպառող պրոցեսորներ տեղակայելու վրա, եթե մեկ միջուկի TDP-ն ավելի բարձր է, քան ներկայիս սերնդինը. դա բացասաբար կանդրադառնա մեր չափանիշի՝ մեկ վատտի հարցումների վրա։ Մենք ուշադիր դիտարկեցինք մեր X սերնդի արտադրական համակարգերը, որոնք շուկայում են, և որոշում կայացրինք։ Մենք անցնում ենք մեր 48-միջուկանի Intel Xeon Platinum 6162 երկակի միակցիչով դիզայնից դեպի 48-միջուկանի AMD EPYC 7642 մեկ միակցիչով դիզայն։

-
Intel
֏
CPU
Xeon Platinum 6162
EPYC 7642
միկրոճարտարապետություն
«Սքայլեյք»
«Զեն 2»
Կոդանուն
«Սքայլեյք ՍՊ»
«Հռոմ»
Տեխնիկական գործընթաց
14nm
7nm
Միջուկային
2 x 24
48
Հաճախականություն
1.9 GHz
2.4 GHz
L3 քեշ / սոքեթ
24 x 1.375 ՄԲ
16 x 16 ՄԲ
Հիշողություն / միակցիչ
6 ալիք, մինչև DDR4-2400
8 ալիք, մինչև DDR4-3200
TDP
2 x 150W
225W
PCIe/վարդակ
48 գոտի
128 գոտի
ISA
x86-64
x86-64
Տեխնիկական բնութագրերից պարզ է դառնում, որ AMD չիպը թույլ կտա մեզ պահպանել միջուկների նույն քանակը՝ միաժամանակ նվազեցնելով TDP-ն: 9-րդ սերունդը յուրաքանչյուր միջուկի համար ուներ 6,25 Վտ TDP, մինչդեռ X-րդ սերունդը կունենա 4,69 Վտ: Սա 25% նվազում է: Հաճախականության բարձրացման և, հնարավոր է, ավելի պարզ մեկ վարդակիցով դիզայնի շնորհիվ կարող ենք ենթադրել, որ AMD չիպն ավելի լավ կաշխատի գործողության մեջ: Առայժմ մենք անցկացնում ենք տարբեր թեստեր և սիմուլյացիաներ՝ տեսնելու համար, թե որքանով ավելի լավ կաշխատի AMD-ն:
Առայժմ նկատենք, որ TDP-ն արտադրողի տեխնիկական բնութագրերից պարզեցված չափանիշ է, որը մենք օգտագործել ենք սերվերի նախագծման և պրոցեսորի ընտրության վաղ փուլերում: Google-ում արագ որոնումը ցույց է տալիս, որ AMD-ն և Intel-ը տարբեր մոտեցումներ ունեն TDP-ի սահմանման հարցում, ինչը այս տեխնիկական բնութագրությունը դարձնում է անհուսալի: CPU-ի իրական էներգիայի սպառումը, և ավելի կարևորը՝ սերվերի էներգիայի սպառումը, այն է, ինչ մենք իրականում օգտագործում ենք մեր վերջնական որոշումները կայացնելիս:
Էկոհամակարգի պատրաստվածություն
Մեր հաջորդ պրոցեսորը ընտրելու մեր ճանապարհորդության սկզբում մենք դիտարկեցինք տարբեր մատակարարների կողմից առաջարկվող պրոցեսորների լայն տեսականի, որոնք հարմար էին մեր ծրագրային ապահովման և ծառայությունների համար (գրված C, LuaJIT և Go լեզուներով): Մենք արդեն մանրամասնորեն քննարկել ենք արագության չափման գործիքակազմը: Այս դեպքում մենք օգտագործեցինք նույն հավաքածուն՝ այն թույլ է տալիս մեզ գնահատել պրոցեսորի արդյունավետությունը ողջամիտ ժամանակահատվածում, որից հետո մեր ինժեներները կարող են սկսել մեր ծրագրերը հարմարեցնել որոշակի պրոցեսորի։
Մենք փորձարկել ենք տարբեր պրոցեսորներ՝ տարբեր միջուկների քանակով, սոկետներով և ժամացույցի հաճախականությամբ։ Քանի որ այս հոդվածը նկարագրում է, թե ինչու ենք կանգ առել AMD EPYC 7642-ի վրա, այս բլոգի բոլոր գրաֆիկները կենտրոնանում են այն բանի վրա, թե ինչպես են AMD պրոցեսորները համեմատվում Intel Xeon Platinum 6162-ի հետ։ .
Արդյունքները համապատասխանում են պրոցեսորի յուրաքանչյուր տարբերակով աշխատող մեկ սերվերի չափումներին, այսինքն՝ երկու 24-միջուկանի Intel պրոցեսորներով կամ մեկ 48-միջուկանի AMD պրոցեսորով (երկակի միակցիչով Intel սերվեր և մեկ միակցիչով AMD EPYC սերվեր): Մենք BIOS-ը սահմանել ենք աշխատող սերվերներին համապատասխանող պարամետրերով: Սա 3,03 ԳՀց է AMD-ի համար և 2,5 ԳՀց Intel-ի համար: Ավելի պարզեցնելու համար մենք ակնկալում ենք, որ նույն քանակությամբ միջուկներով AMD-ն կցուցադրի 21%-ով ավելի լավ արդյունքներ, քան Intel-ը:
Գաղտնագրություն


AMD-ի համար խոստումնալից է թվում։ Այն 18%-ով ավելի լավ է աշխատում հանրային բանալիով կրիպտոգրաֆիայի վրա։ AES-128-GCM տարբերակների համար այն զիջում է սիմետրիկ բանալիով կրիպտոգրաֆիայի վրա, բայց ընդհանուր առմամբ այն համեմատելի է աշխատում։
Սեղմում
Եզրային սերվերներում մենք մեծ քանակությամբ տվյալներ ենք սեղմում՝ թողունակությունը խնայելու և բովանդակության առաքման արագությունը մեծացնելու համար: Մենք տվյալները փոխանցում ենք zlib և brotli C գրադարաններով: Բոլոր թեստերը կատարվել են հիշողության մեջ գտնվող blog.cloudflare.com HTML ֆայլի վրա:


AMD-ն gzip-ն օգտագործելիս միջինում հաղթում է 29%-ով։ Brotli-ն նույնիսկ ավելի լավ է աշխատում՝ 7 որակով, որը մենք օգտագործում ենք դինամիկ սեղմման համար։ Brotli-9 թեստում կա կտրուկ անկում, որը մենք բացատրում ենք Brotli-ի հիշողության մեծ սպառմամբ և քեշի լցոնմամբ։ Այնուամենայնիվ, AMD-ն հաղթում է մեծ տարբերությամբ։
Մեր ծառայություններից շատերը գրված են Go լեզվով: Հետևյալ գրաֆիկներում մենք վերստուգում ենք գաղտնագրությունը և սեղմման արագությունը Go լեզվով՝ RegExp-ի միջոցով, 32 KB տողերի վրա՝ օգտագործելով տողերի գրադարանը:
Գնալ կրիպտոգրաֆիայի

Գնալ սեղմում


Regexp-ի անցում


Գոու Սթրինգս

AMD-ն բոլոր Go թեստերում ավելի լավ է հանդես գալիս, բացառությամբ ECDSA P256 Sign-ի, որտեղ այն 38%-ով հետ է մնում, ինչը տարօրինակ է, հաշվի առնելով, որ C թեստում այն 24%-ով ավելի լավ է հանդես եկել։ Արժե ուսումնասիրել, թե ինչ է կատարվում այնտեղ։ Ընդհանուր առմամբ, AMD-ն մեծ առավելություն չունի, բայց միևնույն է, ավելի լավ է հանդես գալիս։
ԼուաՋԻԹ
Մենք շատ ենք օգտագործում LuaJIT-ը սթեքում։ Այն այն սոսինձն է, որը միասին է պահում Cloudflare-ի բոլոր մասերը։ Եվ մենք ուրախ ենք, որ AMD-ն այստեղ նույնպես հաղթեց։
Ընդհանուր առմամբ, թեստերը ցույց են տալիս, որ EPYC 7642-ը ավելի լավ է աշխատում, քան երկու Xeon Platinum 6162-ները: AMD-ն պարտվում է մի քանի թեստերում, օրինակ՝ AES-128-GCM-ում և Go OpenSSL ECDSA-P256 Sign-ում, բայց հաղթում է մյուս բոլոր թեստերում՝ միջինը 25%-ով:
Աշխատանքային ծանրաբեռնվածության մոդելավորում
Մեր արագ փորձարկումներից հետո մենք սերվերները անցկացրեցինք սիմուլյացիաների մեկ այլ հավաքածուով, որը սինթետիկ բեռ է կիրառում ծրագրային ապահովման եզրային կույտի վրա: Այստեղ մենք մոդելավորում ենք սցենարների աշխատանքային ծանրաբեռնվածությունը՝ օգտագործելով տարբեր տեսակի հարցումներ, որոնք կարող եք տեսնել արտադրության մեջ: Հարցումները տարբերվում են տվյալների չափսով, HTTP կամ HTTPS արձանագրությամբ, WAF աղբյուրներով, աշխատողներով և շատ այլ փոփոխականներով: Ստորև ներկայացված է երկու պրոցեսորների թողունակության համեմատությունը՝ այն հարցումների տեսակների համար, որոնք մենք ամենից հաճախ տեսնում ենք:

Գրաֆիկի արդյունքները չափվում են Intel-ի 9-րդ սերնդի մեքենաների հիման վրա, որոնք x առանցքի վրա նորմալացված են մինչև 1,0: Օրինակ, վերցնելով պարզ 10 ԿԲ HTTPS հարցումներ, կարող ենք տեսնել, որ AMD-ն վայրկյանում հարցումների քանակով 1,5 անգամ ավելի լավ է կատարում, քան Intel-ը: Միջին հաշվով, AMD-ն ցույց տրված թեստերի ժամանակ Intel-ից 34%-ով ավելի լավ է կատարում: Հաշվի առնելով, որ մեկ AMD EPYC 7642 պրոցեսորի TDP-ն 225 Վտ է, իսկ երկու Intel պրոցեսորների համար՝ 300 Վտ, պարզվում է, որ «մեկ վատտի հարցումների» առումով AMD-ն Intel-ից 2 անգամ ավելի լավ է կատարում:
Այս պահին մենք արդեն հստակորեն հակված էինք AMD EPYC 7642-ի համար մեկ սոկետով տարբերակին, որը կդառնա մեր ապագա X սերնդի պրոցեսորը։ Մենք շատ հետաքրքրված էինք տեսնել, թե ինչպես կաշխատեն AMD EPYC սերվերները իրական աշխարհում, և անմիջապես մի քանի սերվեր ուղարկեցինք մեր տվյալների կենտրոններից մի քանիսը։
Իրական աշխատանք
Առաջին քայլը, իհարկե, սերվերները իրական աշխարհում օգտագործելու համար պատրաստելն էր: Մեր նավատորմի բոլոր մեքենաները գործարկում են նույն գործընթացներն ու ծառայությունները, ինչը մեզ հիանալի հնարավորություն է տալիս ճշգրիտ համեմատել արտադրողականությունը: Ինչպես տվյալների կենտրոնների մեծ մասը, մենք ունենք տեղակայված սերվերների մի քանի սերունդ, և մենք մեր սերվերները խմբավորում ենք այնպես, որ յուրաքանչյուր դաս պարունակում է մոտավորապես նույն սերնդի սերվերներ: Որոշ դեպքերում սա կարող է հանգեցնել կլաստերների միջև օգտագործման կորերի տարբերության: Բայց ոչ մերում: Մեր ինժեներները օպտիմալացրել են պրոցեսորի օգտագործումը բոլոր սերունդների համար, որպեսզի անկախ նրանից, թե տվյալ մեքենան ունի 8 միջուկ, թե 24, պրոցեսորի օգտագործումը, ընդհանուր առմամբ, չտարբերվի մնացածից:

Գրաֆիկը պատկերում է մեր մեկնաբանությունը օգտագործման նմանության վերաբերյալ. X սերնդի սերվերներում AMD պրոցեսորի օգտագործման և 9-րդ սերնդի սերվերներում Intel պրոցեսորի օգտագործման միջև էական տարբերություն չկա: Սա նշանակում է, որ և՛ թեստային, և՛ բազային սերվերները հավասարապես բեռնված են: Հիանալի է: Սա հենց այն է, ինչ մենք փնտրում ենք մեր սերվերներում, և սա է այն, ինչ մեզ անհրաժեշտ է արդար համեմատության համար: Ստորև բերված երկու գրաֆիկները ցույց են տալիս մեկ պրոցեսորի միջուկի և բոլոր միջուկների կողմից մշակված հարցումների քանակը սերվերի մակարդակում:

Հարցումներ մեկ միջուկի համար

Հարցումներ սերվերին
Ակնհայտ է, որ AMD-ն միջինում մշակում է 23%-ով ավելի շատ հարցումներ։ Ամենևին էլ վատ չէ։ Մենք մեր բլոգում հաճախ ենք գրել 9-րդ սերնդի պրոցեսորների արտադրողականությունը բարձրացնելու եղանակների մասին։ Եվ այստեղ մենք ունենք նույն քանակությամբ միջուկներ, բայց AMD-ն ավելի շատ աշխատանք է կատարում՝ ավելի քիչ էներգիայի սպառմամբ։ Միջուկների քանակի և TDP-ի տեխնիկական բնութագրերից անմիջապես պարզ է դառնում, որ AMD-ն ապահովում է ավելի բարձր արագություն՝ ավելի մեծ էներգաարդյունավետությամբ։
Սակայն, ինչպես նշեցինք, TDP-ն ստանդարտ սպեցիֆիկացիա չէ և բոլոր արտադրողների համար նույնը չէ, ուստի եկեք նայենք իրական էներգիայի սպառմանը: Սերվերի էներգիայի սպառումը չափելով վայրկյանում հարցումների քանակի հետ զուգահեռ, մենք ստանում ենք հետևյալ գրաֆիկը.

Մեկ վատտի համար RPS-ի առումով, AMD-ով աշխատող X սերնդի սերվերը 28%-ով ավելի արդյունավետ է: Դուք կարող եք ավելին ակնկալել, հաշվի առնելով, որ AMD-ն ունի 25%-ով ցածր TDP, բայց հիշեք, որ TDP-ն բարդ բան է: Մենք տեսել ենք, որ AMD-ի իրական էներգիայի սպառումը գրեթե ամբողջությամբ համապատասխանում է իր թվարկված TDP-ին՝ բազային ժամացույցից զգալիորեն բարձր հաճախականությունների դեպքում. Intel-ը դա չունի: Սա ևս մեկ պատճառ է, թե ինչու TDP-ն էներգիայի սպառման հուսալի գնահատական չէ: Մեր 9-րդ սերնդի սերվերների Intel պրոցեսորները ինտեգրված են բազմահանգույցային համակարգում, մինչդեռ AMD պրոցեսորները գտնվում են ստանդարտ 1U սերվերներում: Սա AMD-ի օգտին չէ, քանի որ բազմահանգույցային սերվերները ենթադրաբար պետք է ապահովեն ավելի բարձր խտություն՝ մեկ հանգույցի համար ավելի ցածր էներգիայի սպառմամբ, բայց AMD-ն դեռևս գերազանցում է Intel-ին մեկ հանգույցի համար էներգիայի սպառման առումով:
Սպեցիֆիկացիաների, սիմուլյացիոն թեստերի և իրական աշխարհի կատարողականության համեմատությունների մեծ մասում, 1P AMD EPYC 7642 կոնֆիգուրացիան զգալիորեն ավելի լավ է աշխատում, քան 2P Intel Xeon 6162-ը: Որոշ պայմաններում AMD-ն կարող է մինչև 36%-ով ավելի լավ աշխատել, և մենք կարծում ենք, որ ապարատային և ծրագրային ապահովման օպտիմալացման միջոցով մենք կարող ենք հասնել այս բարելավմանը հետևողականորեն:
Այսպիսով, պարզվեց, որ AMD-ն հաղթեց։
Լրացուցիչ գրաֆիկները ցույց են տալիս NGINX-ի միջին և p99 լատենտությունը 24 ժամվա ընթացքում: Միջին հաշվով, AMD-ի վրա պրոցեսները 25%-ով ավելի արագ էին: p99-ի վրա այն 20-50%-ով ավելի արագ էր՝ կախված օրվա ժամից:
Ամփոփում
Cloudflare-ի սարքավորումների և կատարողականության ինժեներները մեծ քանակությամբ փորձարկումներ և հետազոտություններ են կատարում՝ մեր հաճախորդների համար լավագույն սերվերի կոնֆիգուրացիաները ընտրելու համար: Մենք սիրում ենք այստեղ աշխատել, քանի որ մենք լուծում ենք այս մեծ խնդիրները, և մենք օգնում ենք ձեզ լուծել ձեր խնդիրները՝ առաջարկելով այնպիսի ծառայություններ, ինչպիսիք են առանց սերվերի եզրային հաշվարկը և անվտանգության լուծումների լայն շրջանակ, ինչպիսիք են Magic Transit-ը, Argo Tunnel-ը և DDoS պաշտպանությունը: Cloudflare ցանցի յուրաքանչյուր սերվեր կարգավորված է հուսալիության համար, և մենք միշտ փորձում ենք սերվերների յուրաքանչյուր սերունդը դարձնել նախորդից լավը: Մենք կարծում ենք, որ AMD EPYC 7642-ը X սերնդի պրոցեսորի հարցի պատասխանն է:
Cloudflare Workers-ի միջոցով մշակողները տեղակայում են իրենց ծրագրերը մեր աշխարհով մեկ աճող ցանցում: Մենք հպարտ ենք թույլ տալ մեր հաճախորդներին կենտրոնանալ կոդ գրելու վրա, մինչդեռ մենք պահպանում ենք ամպային անվտանգությունն ու հուսալիությունը: Եվ այսօր մենք ավելի մեծ ոգևորությամբ հայտարարում ենք, որ նրանց աշխատանքը կտեղակայվի մեր X սերնդի սերվերների վրա, որոնք աշխատում են 2-րդ սերնդի AMD EPYC պրոցեսորներով:

EPYC 7642 պրոցեսորներ, կոդային անվանում՝ «Հռոմ» [Հռոմ]
AMD-ի EPYC 7642-ը օգտագործելով՝ մենք կարողացանք բարձրացնել մեր արտադրողականությունը և նպաստել ցանցի ընդլայնմանը դեպի նոր քաղաքներ: Հռոմը մեկ օրում չի կառուցվել, բայց շուտով այն ավելի մոտ կլինի ձեզանից շատերին:
Վերջին մի քանի տարիների ընթացքում մենք փորձարկումներ ենք կատարել Intel-ի և AMD-ի բազմաթիվ x86 չիպերի, ինչպես նաև ARM-ի պրոցեսորների հետ։ Մենք ակնկալում ենք, որ այս պրոցեսորների արտադրողները կշարունակեն համագործակցել մեզ հետ ապագայում, որպեսզի մենք բոլորս կարողանանք կառուցել ավելի լավ ինտերնետ։
Source: www.habr.com
