O tom, že AMD začíná tlačit na Intel, se píše mnoho článků. Tento fakt dělá radost i zarytým fandům Intelu, protože Intel pod tlakem zlevňuje. Nyní se procesory AMD EPYC druhé generace dostaly do patnácté generace serverů DELL PowerEdge.
Z řady recenzí vychází procesory AMD EPYC dobře a oproti srovnatelným protějškům u Intelu jsou řádově o desítky procent levnější. Což uvítají hlavně naši zákazníci při nákupu serverů. Na druhou stranu občas slýcháme „historky“, že se pro nějaké použití nehodí (např. databáze).
Naším cílem bylo zjistit skutečný potenciál těchto serverů s AMD a rozhodnout se, zdali je doporučit našim zákazníkům, či nikoliv. Od našeho partnera, společnosti DNS a.s., jsme dostali k otestování jeden z prvních Dell serverů 15. generace s procesorem AMD, který se ocitl v ČR.
Já osobně jsem měl poslední CPU od AMD v herním počítači na střední škole (Athlon 2500+ Burton @3200+). Stejně tak k dnešnímu datu máme všechny servery u našich zákazníků s procesory Intel. A asi se moc nespletu, když si myslím, že jsme na tom všichni podobně. 😊 Na testování jsem se proto velice těšil.
Nejčastější bottlenecky na CPU
Předtím, než našim zákazníkům doporučíme nějaké serverové řešení, provádíme důkladné měření jejich prostředí. Cílem je optimalizovat finanční prostředky. Chceme, aby zákazník pokryl své potřeby, avšak zbytečně nepřeplácel, ale ani nešetřil na nesprávném místě. Tím, že změříme, jak se jeho systémy chovají a kde mají z pohledu výkonu úzká hrdla (bottleneck), můžeme dopředu předpovědět a garantovat, o kolik se zrychlí práce jeho zaměstnanců v informačních systémech.
Srdcem každého serveru je duet CPU-RAM a jeho spolupráce s ostatními komponentami jako jsou SSD disky, síťové karty a ostatní PCIe zařízení. Co se týče CPU, nejčastěji se setkávám se 4 druhy bottlenecků:
- První a nejčastěji omezující je „single thread performance“. Velká část programů stále není napsána tak, aby dokázala rozdělit 1 výpočetní problém na více CPU jader. V takovém případě je výkon přímo úměrný frekvenci procesoru (určitou roli hraje i architektura) a jediné co vás zde může zachránit, je nákup procesorů s vysokou frekvencí.
- Příliš vysoká celková zátěž – vzniklá velkým počtem uživatelů, velkým počtem virtuálních serverů na jednom hypervizoru či prostě jen programy, které využívají (ať už efektivně, či neefektivně) výkon více jader. Zde pomůže CPU s více jádry.
- Třetí scénář, který vídám, je nedostatečná rychlost komunikace mezi pamětí a CPU. Intel má 6kanálový řadič. Abyste dosáhli nejvyššího průtoku dat do/z operační paměti, musíte rovnoměrně osadit všech 6 kanálů. RAM tedy do serveru kupujete nejenom kvůli celkové kapacitě, ale také kvůli rychlosti, s jakou jste do ní schopni ukládat/číst data. Toto je typické pro High Performance výpočty. V RAM máte například matici o velikosti pouze 10 GB, ale to, jak rychle budete počítat numerickou simulaci, je přímo závislé na propustnosti sběrnice.
- Nakonec jsou zde latence přístupu do paměti. Zde z měření vídám, že servery s jedním socketem jsou na tom lépe než víceprocesorové systémy. Procesory určené pro single-socket nemají řadiče paměti, které musí počítat s mezi-procesovou komunikací, NUMA architekturou a jsou tak jednodušší/rychlejší.
Proč nestačí porovnat frekvenci a počet jader
Až do této chvíle, kdy jsem testoval pouze procesory Intel, byla moje metodika celkem jednoduchá. V rámci stejné architektury je výkon přímo úměrný frekvenci. Osazení RAM stačí v podstatě pouze „nepokazit“ (tzn. vždy osadit rovnoměrně všechny paměťové kanály 😊).
Pokud jsem chtěl odpovědět zákazníkovi na otázku „O kolik bude jeho nový server rychlejší než jeho 6 let starý?“, benchmarky za mě odvedly práci v počítání mezigeneračního rozdílu. Tedy faktu, že se zvyšuje kromě frekvence procesoru i výkon na jednotku frekvence. Toto testování nám mimo jiné slouží hlavně proto, abychom po nákupu a instalaci nového serveru ověřili jeho reálný výpočetní výkon, tedy správné nastavení firmware atd.
AMD má však odlišnou architekturu. Trochu mi to připomíná atletický víceboj, kde se výsledky jednotlivých disciplín přepočítávají na body. Do této chvíle se atleti rovnoměrně zlepšovali ve všech disciplínách každým rokem. Nyní se do závodu přihlásili závodníci jiného kontinentu, kteří sice nedohodí oštěpem tak daleko, kladivo neuzvednou, ale zato mají mnohem lepší výsledky ve vytrvalosti a skoku do výšky. Najednou se může stát, že celkové bodové hodnocení může být shodné, přestože jsou velké rozdíly v jednotlivých disciplínách. 😊
Při porovnání Intelu a AMD vám syntetické testy odpoví na otázku, který procesor je lepší pro určitou disciplínu. Vy však budete muset odpovědět na otázku, z jakého typu zátěže se vaše konkrétní prostředí skládá. To v podstatě znamená identifikovat, jak se chovají všechny jednotlivé aplikace. V praxi dost časově náročné. Takže se zaměříte na ty softwarové nástroje a výpočetní úlohy, které jsou pro konkrétního zákazníka dominantní.
Po přečtení mnoha recenzí a pár studií jsem si vytvořil následující očekávání ohledně AMD EPYC 2. generace:
- AMD EPYC bude rychlejší v úlohách, které využívají celkovou propustnost mezi CPU a RAM
- AMD EPYC bude pomalejší v single thread výkonu než nejvýkonnější procesory Intel
- AMD EPYC bude horší v SQL výkonu než Intel
- AMD EPYC bude levnější při shodném výpočetním výkonu
Jak jsme měření prováděli
Protože srovnávacích syntetických testů je plný internet, rozhodl jsem se pro srovnávací studii z praxe. Požádali jsme 4 naše zákazníky, aby si připravili pro ně typickou výpočetní úlohu. Tu jsem nejprve změřil na jejich serverech s procesory Intel a následně na zapůjčeném serveru Dell PowerEdge R7515 s procesorem AMD EPYC 2. generace.
Na zapůjčený server jsem vždy přenášel celé virtuální servery (Hyper-V), měření jsem několikrát opakoval a měřil jsem mimo pracovní dobu zákazníka. Od našeho partnera jsme měli zapůjčený následující server…
Zapůjčený server: DELL PowerEdge R7515, procesor AMD EPYC 7302P 16 jader 3.0 Ghz, 128 GB RAM (8 kanálů x 16 GB), SSD 960 GB read intensive. Firmware nastaven na performance profil, reálná frekvence díky Dell Controlled Turbo 3256 MHz a zakázán přechod do úsporných C stavů.
Zákazník 1 – High performance computing
První zákazník se specializuje na fyzikální výzkum, konkrétně numerické simulace. Nedávno jsme pro něj prováděli výkonové měření. Měli numerickou simulaci, jejíž výpočet trval na jednom jádru zhruba 40 minut, na dvou jádrech 20 minut, na čtyřech jádrech rovněž 20 minut. 😊 Cílem bylo přijít na to, proč se výpočet dále nezrychluje.
Výsledkem studie bylo zjištění, že na každé výpočetní jádro bylo nutné mít bandwith do operační paměti zhruba 9000 MB/s, přitom celá úloha zabírala v RAM pouze 7 GB. Na jejich čtyřjádrovém serveru 3,6 Ghz s 16 GB RAM se úloha již nezrychlovala, protože měli osazené pouze dva paměťové kanály. SSD disky serveru byly bez zátěže.
Tehdy jsme jim, přesunem na vhodně navržený server DELL R640, dokázali urychlit výpočet až na čas „necelé tři minuty“ (přesně 165 sekund), kdy došlo k úplné saturaci paměťové sběrnice daným typem zátěže při cca 118 500 MB/s. Byl jsem zvědavý, jak si s tímto typem zátěže poradí zapůjčený server s AMD, protože jeho paměťová sběrnice je jinak navržená.
Očekávání jsem měl nastavená vysoko díky skvělé prezentaci Drew Gallatina z Netflixu na EuroBSDcon 2019. Jejich závěr, co se týče paměťové propustnosti, byl, že jeden procesor AMD EPYC je pro jejich potřeby téměř stejně výkonný jako dva Intely. Navíc za pouhou čtvrtinu jejich celkové ceny.
Zákazníkův server: DELL PowerEdge R640, procesor 2x Intel Xeon Gold 6244 8 jader 3.6 GHz, 192 GB RAM (12 kanálů x 16 GB), SSD 1,92 TB read intensive. Firmware nastaven na performance profil, reálná frekvence díky Dell Controlled Turbo 4,28 GHz, je zakázán přechod do úsporných C stavů.
Zákazníkův VM jsem obnovil na zapůjčený server a pustil jsem se do měření. Do grafu níže jsem zanesl vliv počtu jader na délku trvání výpočtu jak pro procesor Intel (zákazníkův server), tak AMD (zapůjčený server).
Finální čas trvání úlohy na zapůjčeném serveru (AMD) byl 182 sekund. Stejná úloha na zákazníkově serveru (2x Intel) trvá 165 sekund. To je sice o 10 % déle, avšak při zhruba osminové ceně za procesor (zhruba – Intel 2x 80.000 Kč, AMD 1x 20.000 Kč)!
Potvrdilo se tak moje očekávání. AMD má zde svojí architekturou jasně navrch. Nutno však říct, že tato výpočetní úloha nebyla náročná ani na frekvenci procesoru, ani na SSD disky. Bottleneck zde byl průtok dat mezi CPU a operační pamětí, což je ale u podobných výpočetních úloh běžné. Při návrhu nového serveru bychom u tohoto zákazníka určitě sahali po AMD EPYC.
Zákazník 2 – Vývojářská firma
Druhy zákazník je vývojářská firma, které provozujeme hypervizor pro jejich vývojové prostředí. Jedná se o konfiguračně shodný server jako u zákazníka 1. Tato konfigurace je moje oblíbená díky vysokému single-thread výkonu. 😊
Měřená úloha je statická analýza PHP kódu, která probíhá na linuxovém serveru. Zákazník tuto úlohu vybral, protože jej při práci brzdí nejvíce. Zjistil jsem, že každá taková analýza jednoho projektu naplno vytíží jedno jádro na maximum, průtok do RAM je zanedbatelný a SSD disky rovněž nic nedělají. Naprosto výstavní ukázka single-thread zátěže.
Moje očekávání bylo, že zde musí Intel jasně dominovat. Procesor Intel Xeon Gold 6244 je nejrychlejším osmijádrem vůbec. Standardně procesor operuje na své základní frekvenci 3,6 GHz. Díky technologii Dell Controlled Turbo operuje stabilně na 4,28 GHz.
Zákazník vybral konkrétní statickou analýzu a na svém Intel serveru provedl 6 po sobě jdoucích identických měření. My jsme jeho virtuální server přesunuli na AMD a provedli jsme stejnou analýzu. Výsledky jsou následující:
- 2x Intel Xeon Gold 6244 – průměrný čas běhu úlohy 106,4 sekund
- 1x AMD EPYC 7302P – průměrný čas běhu úlohy 124,2 sekund
Potvrdilo se očekávání, že Intel bude rychlejší. Domníval jsem se však, že rozdíl bude výraznější. Protože, když se podíváme na syntetický benchmark Geekbech5, vidíme, že Intel je v mnoha disciplínách výkonnější větším poměrem.
Zde se však vracím zpět k těm disciplínám, jak jsem psal na začátku článku. Při návrhu serveru musíme znát druh zátěže zákazníka. Například ve floating point operacích je výkon obou procesorů blízký – což je právě hlavní zátěž u našeho zákazníka (resp. této úlohy).
Zároveň nesmíme zapomenout, že porovnáváme 2x 8jádrový procesor Intel proti 16jádrovému procesoru AMD na nižší frekvenci s nižší cenou. Zde mě proto výsledek AMD velice příjemně překvapil.
Odbočka k Intel Turbo a Dell Controlled Turbo
Tyto technologie jsem již v článku zmínil, ale zatím nevysvětlil. Obě technologie slouží k vytažení extra výkonu z procesorů. Každá na to jde ale trochu jinak.
Například procesor Intel Xeon Gold 6244 standardně operuje na frekvenci 3,6 GHz. Díky technologii Intel Turbo dokáže krátkodobě svoji frekvenci zvýšit až na 4,4 GHz, dokud se teplotní koeficient TJMAX nepřiblíží mezní hodnotě.
Výhodou Intel Turbo je krátkodobý vysoký výkon. Nevýhodou je tzv. „jitter“, neboli neustále přepínání násobičů sběrnic a frekvence podle zátěže. Procesoru tak vždy trvá nenulový čas, než se na maximální výkon z klidového stavu dostane. Obzvláště, když jsou ještě defaultně povoleny úsporné C stavy.
Dell se svou technologií Dell Controlled Turbo dělá obdobné, jen trochu jinak. Procesor nastaví na maximální možnou frekvenci, po kterou se uchladí. Tato frekvence se různí podle modelu, vždy je vyšší než základní frekvence a vždy je nižší než maximální frekvence Intel Turbo.
Konkrétně
u procesoru Intel Xeon Gold 6244 je trvalá frekvence Dell Controlled Turbo 4,28
GHz a „dočasná“ frekvence Intel Turbo 4,4 GHz. Rozdíl je zde minimální, zejména
protože se jedná o dobře vyrobené osmijádro, které se lépe uchladí. U AMD EPYC
7302P je základní frekvence 3.0 GHz a trvalá frekvence DCT 3,256 GHz.
Zákazník 3 – IS Helios a SQL
Třetím zákazníkem je strojírenská firma využívající Helios ve spojení s SQL serverem. I zde máme identický server jako u prvního zákazníka. Náš zákazník má dlouhodobé problémy s optimalizací Heliosu, který má moduly vyvíjené na míru. Zákazník sice tlačí na dodavatele kvůli optimalizaci Heliosu na úrovni architektury software, ale dodavatelská firma nestíhá ani implementaci nových funkcí, natož optimalizaci rychlosti. To je bohužel častý scénář, který v praxi vídám napříč informačními systémy.
Zákazník si připravil 3 úlohy, které se každý den často opakují a stojí ho čas. Ty jsme opět změřili na jeho i zapůjčeném serveru. Očekával jsem, že Intel bude rychlejší hlavně díky lepšímu single threadu. K mému překvapení vyšlo o trochu lépe AMD, což nedávalo smysl.
Změřil jsem vše ještě jednou, avšak s větším počtem sledovaných ukazatelů. Zjistil jsem, že během měření SQL server vytěžoval všechna jádra CPU, ovšem ne na maximum. Byly zde vidět zápisové operace na SSD disky, takže mé podezření padlo právě na ně.
Změřil jsem výkon SSD disků na zákazníkově i zapůjčeném serveru. Zákazníkův Intel server má sice větší SSD s lepším sekvenčním zápisem i čtením a také zvládnou více celkových 4k IOPS, ale SSD v AMD zvládají o něco lepší výkon při 4k IOPS v single-thread zápisu/čtení.
Abych co nejvíce vyloučil vliv SSD, vytvořil jsem na AMD serveru RAM disk a přesměroval do něj TEMP DB. Časy úloh se ještě zrychlily. Objevila se zde zvýšená zátěž jednoho jádra. Ve skutečnosti zde byla i předtím, pouze nebyla tak výrazná.
Oproti stávajícím SSD diskům bychom tedy další urychlení pravděpodobně získali NVMe disky s lepší latencí zápisu. To by ale výrazně prodražilo celý server. Konečný bottleneck by pak mohla být zmíněná single threadová zátěž, která je pravděpodobně odpovědná za část operací s daty a podléhá návrhu dané úlohy v Heliosu.
Místo toho, abych zde porovnal procesory, jsem vlastně zjistil, v čem je skutečný problém. Obě CPU dokázaly dodat dostatečný výkon, aby se projevil bottleneck jinde. Praxe. Zákazníkovi by, podle tohoto zjištění, stačil výrazně levnější AMD server či Intel server s levnějšími a méně výkonnými procesory. Z výkonu CPU Intel Xeon 6244 by v této úloze dokázal těžit až při snížení latencí úložiště.
Zákazník 4 – Money S5 a SQL
Zákazník má 3 roky starý server, který slouží jako hypervizor pro více VM. V rámci jednoho VM provozujeme Money S5 nad MS SQL s business inteligence modulem. V Money S5 a BI je několik úloh, které trvají delší dobu a jejich zrychlení by zákazník uvítal. Nás zajímalo, o kolik by se vše zrychlilo „pouhou“ výměnou serveru za ten zapůjčený.
Zákazníkův server: DELL PowerEdge R530, procesor 2x Intel Xeon E5-2620 v3 6 jader 2.4 GHz, 96 GB RAM (5x 16 GB), SSD 1,92 TB read intensive. Firmware nastaven na performance profil, reálná frekvence díky Dell 2.54 GHz, je zakázán přechod do úsporných C stavů.
Typ zátěže u úloh, které si vybral zákazník, je kombinovaně single thread a multi thread a bottleneck je procesor. Pouhou výměnou serveru se čas potřebný k dokončení úloh zkrátil průměrně o 30 %, což není špatné. Procesor Intel Xeon E5-2620 v3 je samozřejmě starší stejně jako server Dell 13. generace. Nicméně je příjemné vidět, že v případě obnovy serveru si může zákazník vybrat levnější jednosocketový server a zároveň získat vyšší výkon (cca o 42 %).
Zhodnocení
Nová platforma procesorů AMD EPYC v serverech DELL mě velice příjemně překvapila. Pro výpočty závislé na propustnosti RAM je to jasný vítěz nad Intelem. Za mnohem nižší pořizovací náklady dostanete vyšší výkon. Stejně i pro klasické použití je to velice všestranný procesor za dobré peníze.
Intel stále zůstává jedničkou, pokud budete potřebovat nejvyšší výkon na single-thread. Např. pokud máte software optimalizovaný pro AVX 512 instrukce, je Intel mnohem výkonnější volbou.
Který procesor je tedy vítězem? Bohužel neexistuje jeden univerzální vítěz. Pro každého zákazníka to bude jiný výrobce i model. Při návrhu serveru je klíčové správně identifikovat zátěž (workload) zákazníka. Porozumět, jak se jeho softwarové nástroje chovají, a umět je exaktně změřit. Stejně tak je důležité vše změřit po nasazení serveru. Je nutné si ověřit, že server podává očekávaný výkon. Nevhodné nastavení serveru, chyba v ovladačích nebo jiná nekompatibilita dokáží server zpomalit na polovinu.
Nás i naše zákazníky však nové servery Dell PowerEdge s AMD EPYC druhé generace zaujaly natolik, že se nám již tři kusy vyrábí. Po 15 letech jsem tedy znovu objednal CPU z dílny Advanced Micro Devices.