Diit.cz - Novinky a informace o hardware, software a internetu

CorePrio až zdvojnásobí výkon Threadripper 2990WX [video]

Výkon Threadripperu 2990WX od vydání obklopují otazníky. Jejich odstranění bránila řada dezinformací, nicméně nyní je jasno…

První recenze 32jádrového Threadripperu 2990WX předložily výkon, který se v některých aplikacích prakticky nelišil od 16jádrového Threadripperu 2950X. Dá se zcela obecně říct, že když se něco nechová dle očekávání, má každý lidský tvor snahu najít vysvětlení. Jde o důsledek přirozené lidské zvědavosti, či chcete-li, zvídavosti. Taková touha je naprosto v pořádku a v některých situacích může být i hnacím strojem lidského pokroku.

Problém nastává, pokud nejde o nijak triviální situaci a problém se snaží vysvětlit osoba nebo osoby, jejichž znalosti problému nebo schopnost logické úvahy nejsou na úrovni, která je potřeba k odhalení skutečného jádra problému. Pak obvykle nastává jednoduchá úvaha, která by se dala schematizovat zhruba následujícím způsobem: „Je s nějakým objektem problém? Pak je příčinou problému první pozorovatelný rozdíl, který problémový objekt odlišuje od bezproblémového objektu.“ Samotné zjištění pak není autorem onoho zjištění chápáno jako pracovní hypotéza (která by vyžadovala buďto empirické ověření nebo alespoň logickou konfrontaci s dalšími známými fakty), ale je jím chápáno jako fakt.

Dalším stupněm je pak předložení této „informace“ širším masám, které zpravidla nejsou pro objektivní hodnocení situace vybaveny lépe, než autor hypotézy. Protože jsou ale zvídavé a chtějí znát vysvětlení, hypotézu (předloženou jako fakt) přijmou. Paradoxně jí často dají přednost i v situaci, kdy je již známa skutečné podstata. Její pochopení ale vyžaduje hlubší znalost situace, která většinou chybí, a tak je přirozené, že je přijato jednoduché (byť nepravdivé a mnohdy absurdní) vysvětlení než to, které odráží realitu, jíž však lze porozumět jen při určité znalosti problematiky.

Bloodborne Screenshot 07

Tento mechanizmus provází lidstvo odnepaměti. Umírají mi krávy a ostatním ve vsi ne? Určitě to bude tím, že zrovna já mám toho podivínského souseda, který je jistě upír a kravám pije krev. O nějakých virech nebo bakteriích jsem nikdy neslyšel, takže to musí být tím sousedem. Onemocněla starostovi manželka po návratu z města? Určitě to bude tím, že při cestě potkala naštvanou kořenářku, které nezaplatila za byliny, a ta ji proto uřkla a musí být upálena. Že se do města dostala morová nákaza a starostová ji přinesla do vsi, nikdo neví, takže za to jistě může kořenářka. Když po smrti starostové onemocní i starosta se zbytkem rodiny, je to jen další důkaz toho, že je kořenářka čarodějnice. Smrt starostové jí nestačí a chce se pomstít celé rodině. A tak dále.

Přestože již neupalujeme čarodějnice a nedekapitujeme upíry, snaha vysvětlovat problémy, jejichž rozsah je mimo naše vědomosti či chápání, přehnaně jednoduchými postupy, existuje stále. Angličtina pro to má dokonce pěkný jednoslovný termín oversimplification, ke kterému chybí stejně přiléhavý jednoslovný český ekvivalent. Přinejmenším mě žádný nenapadá (jste-li na tom lépe, určitě se ozvěte v diskuzi).

Informační technologie, které jsou velmi komplikované a ještě rozlišené na svět softwaru a hardwaru (kdy navíc znalost pouze jedné strany může vést k mylné představě o tom, jak to funguje na straně druhé), jsou přirozeně živnou půdou pro vznik mnoha chybných, byť za fakty vydávaných teorií, které se mnohdy vžijí a po celou dobu prodejů určitého hardwaru nebo softwaru zůstanou široce přijaté a uznávané.

Nebudu již tak dost obšírný úvod protahovat výčtem příkladů z minulosti - jistě jste si již sami některé vybavili - a půjdeme rovnou k jádru. Vlastně k jádrům. Ale postupně. Když vyšly recenze 32jádrového procesoru Threadripper a v některých aplikacích dosahoval výkonu na úrovni 16jádrového modelu, přišly četné recenze se závěrem, že je to tím, že 32jádrový Threadripper má paměti připojené jen ke dvěma křemíkovým modulů ze čtyř, tím pádem je omezený paměťovou propustností a má stejný výkon jako 16jádrový model.

Schéma připojení pamětí u 32jádrového Threadripperu

Přestože se tuto teorii - vydávanou často jako fakt - autoři nepokoušeli konfrontovat ani se základní logickou úvahou (např. jak to, že k tomuto chování dochází i v aplikacích, jejichž výkon se jinak skvěle škáluje s počtem jader a navíc vcelku nezávisle na paměťové propustnosti), ani ji ověřit experimentálně, byla obratem přijata velkou částí jejich publika. Threadripper 2990WX má paměti připojené jen ke každému druhému procesorovému modulu, to je nejviditelnější rozdíl oproti 16jádrovému modelu, tak to musí být i příčina problému.

Logický rozpor daný faktem, že se toto podivné chování projevovalo pouze pod OS Windows, zatímco v OS Linux žádný podobný zádrhel nebyl, jaksi nevadil. Byť tento fakt přímo rozporoval, že problém není v hardwaru, protože pak by změna softwarové vrstvy nemohla mít na situaci vliv, byl tento fakt překvapivě široce ignorován. Není divu, paměti připojené ke každému druhému procesorovému modulu jsou zkrátka lépe vidět, zní to hezky, jednoduše a pochopitelně. Proč si takovou krásnou a zřejmou verzi nahrazovat nějakým těžko uchopitelným a představitelným problémem na úrovni nejnižších softwarových vrstev komunikujících s hardwarem?

Přitom nesmyslnost teorie o připojení pamětí bylo možné snadno vyvrátit i bez potřeby testování v Linuxu. Threadripper 2990WX totiž existuje i ve verzi, která má paměti připojené ka každému ze čtyř procesorových modulů. Jmenuje se Epyc. A chová se pod OS Windows identicky jako Threadripper 2990WX bez ohledu na paměťové kanály připojené ke každému modulu.

32jádrový Epyc (vlevo), byť má paměti připojené ke každému procesorovému modulu, vykazuje ve Windows prakticky totožné chování jako 32jádrový Threadripper (vpravo), který má paměti připojené přímo jen pro dva procesorové moduly za čtyř (ostatní k nim přistupují prostřednictvím vedlejšího jádra)

Tedy v aplikacích, kde má 32jádrový Threadripper 2990WX výkon na úrovni 16jádrového procesoru, má plus mínus stejný výkon i 32jádrový Epyc. K žádnému domnělému magickému zdvojnásobení výkonu v důsledku přímého připojení pamětí ke každému procesorovému modulu nedochází.

I bez platformy pro Epyc však bylo možné ověřit, že teorie o paměťových kanálech má trhliny, neboť osazením poloviny pamětí k 16jádrovému Threadripperu 2950X také neklesne výkon na polovinu, na úroveň osmijádrového modelu, ale o procenta, nanejvýš nižší desítky procent.

Ilustrovali jsme si tedy dva přístupy: Špatný - vydávání chybné teorie za fakt (bez snahy tuto teorii ověřit alespoň logickou úvahou, když už ne experimentem). Správný - zavržení nesmyslné teorie a zjištění možného zdroje problému. Existuje ale ještě třetí cesta: Nadstandardní. Tou se vydal zakladatel webu level1techs, Wendell Wilson, kterého můžete znát mj. ve spojitosti s někdejšími projekty a weby jako tecsyndicate, razetheworld nebo společností Wendell Wilson Consulting.

Wendell nejdříve zvolil aplikaci Indigo, kde se problém projevuje a která je zároveň dostupná pro Linux i Windows a jal se testovat. Ověřil, že se pod Windows situace nezlepší s použitím procesorů Epyc, ověřil že výkon Threadripperu je nízký jen pod Windows a nikoli pod Linuxem. Ověřil dokonce i to, že problém není v samotné aplikaci, respektive v její verzi pro Windows. Vzal totiž verzi pro Linux a otestoval jí na Linuxu běžícím pod OS Windows. Výkon byl opět degradovaný jako pod čistými Windows. Vylučovací metodou tedy vyvrátil všechny ostatní možnosti, až zůstala jediná - tedy že je problém v operačním systému Windows, nejpravděpodobněji v jeho kernelu, který nezvládá pracovat s daným počtem jader / vláken.

Dalším experimentováním, kdy různými metodami zasahoval do způsobu, jakým Windows využívají jednotlivá vlákna, přišel na to, že ač OS reportuje všechna jádra procesoru jako vytížená, je ve skutečnosti polovina výpočetních prostředků zkonzumována na jakýsi řízený chaos, kdy OS přesouvá vlákna z jednoho jádra na druhé a zpět. Zkrátka že z důvodu nějakého bugu v kernelu zkonzumuje OS polovinu výkonu hardwaru na režii.

CorePrio ke stažení

Wendell dále zjistil, jakými zásahy lze tento stav eliminovat a oslovil Jeremyho Collake z Bitsum, který ve spolupráci s ním připravil aplikaci nazvanou CorePrio. Ta přináší funkci nazvanou NUMA Dissociater (sic), jejíž aktivace (ideálně po deaktivaci funkce Enable Dynamic Local Mode) předá potenciál procesoru (původně vyplýtvaný režií kernelu Windows) aplikaci.

Je vcelku překvapivé, že bug Windows, který se de facto metodou pokus-omyl podařilo odhalit a obejít člověku, který o sobě tvrdí, že Windows příliš nerozumí a specializuje se na Linux, nedokázal za prakticky půl roku od vydání procesorů izolovat a alespoň provizorně opravit Microsoft, autor Windows a problematického kernelu.

Zdroje: 

Diskuse ke článku CorePrio až zdvojnásobí výkon Threadripper 2990WX [video]

Úterý, 8 Leden 2019 - 13:55 | Peter Fodrek | ani to nie je úplne OK AMD https://www.osadl.org/...
Úterý, 8 Leden 2019 - 13:55 | Karáš Svorka | Oproti Intelu relativně málo, třeba na CZC jsem...
Úterý, 8 Leden 2019 - 09:31 | del42sa | nene
Pondělí, 7 Leden 2019 - 23:14 | Matess | protoze epyc a TR jsou slozene z vice kusu...
Pondělí, 7 Leden 2019 - 15:50 | Peter Fodrek | ono je to účel.. Výrobci pamětí jsou zklamaní z...
Pondělí, 7 Leden 2019 - 13:50 | Waffer47 | Microsoft resi v aktualizacich 10 dulezitejsi...
Pondělí, 7 Leden 2019 - 12:08 | Pety | To by mohlo být - kdyby se problém neobjevoval...
Pondělí, 7 Leden 2019 - 11:54 | Peter Fodrek | Ale bude ich viac. od 1.1. do 6.1.2019 doalo AMD...
Pondělí, 7 Leden 2019 - 11:38 | Peter Fodrek | pro hodnemocjadrove to je synonymum pre manycore...
Pondělí, 7 Leden 2019 - 11:33 | Redmarx | Souhlas, viz testovane Lenovo, kolik notasu jede...

Zobrazit diskusi