Anketa

Čo mám používať ?

AMD
Intel

AMD vs Intel pre programátora + problem optimalizacie

ByCzech

  • *****
  • 1 857
    • Zobrazit profil
    • E-mail
Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #15 kdy: 17. 07. 2020, 13:47:37 »
Tam je pruser v tom, ze scheduler windows vi prd o cipletove architekture pouzityho CPU a pak prehazuje zatez z jednoho cipletu na druhej, misto na jadro ve stejnym cipletu

Jinak Metatrader je i pro Linux, je-li to server ciste pro Metatrader (nebo je potreba pro nej vyssi vykon), tak bych ho provozoval na Linuxu, kterej problemem s planovacem netrpi

Osobně si myslím, že Ziktofel udeřil hřebíček na hlavičku. Windows a jejich CPU scheduler stojí za starou bačkoru, to je známá věc - stačí se zeptat Google (příklad viz níže). Předváděli jsme to na školeních, kdy vhodně nastavené virtualizované Windows spuštěné pod Linuxem byly rychlejší, než Windows instalované přímo na stejném stroji.
Provoz toho samého pod Linuxem tomu může velmi napomoci. Osobně bych zkusil také jít touto cestou.

Příklad: https://www.anandtech.com/show/15483/amd-threadripper-3990x-review/3


Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #16 kdy: 18. 07. 2020, 00:02:05 »
Tam je pruser v tom, ze scheduler windows vi prd o cipletove architekture pouzityho CPU a pak prehazuje zatez z jednoho cipletu na druhej, misto na jadro ve stejnym cipletu

Jinak Metatrader je i pro Linux, je-li to server ciste pro Metatrader (nebo je potreba pro nej vyssi vykon), tak bych ho provozoval na Linuxu, kterej problemem s planovacem netrpi

Osobně si myslím, že Ziktofel udeřil hřebíček na hlavičku. Windows a jejich CPU scheduler stojí za starou bačkoru, to je známá věc - stačí se zeptat Google (příklad viz níže). Předváděli jsme to na školeních, kdy vhodně nastavené virtualizované Windows spuštěné pod Linuxem byly rychlejší, než Windows instalované přímo na stejném stroji.
Provoz toho samého pod Linuxem tomu může velmi napomoci. Osobně bych zkusil také jít touto cestou.

Příklad: https://www.anandtech.com/show/15483/amd-threadripper-3990x-review/3

Odkaz mluvi o limitu 64 vlaken na socket, kdezto Threadripper umi 128. Widle todle workaroundujou tim, ze CPU prohlasi za dvousocketovy reseni aby mohly vyuzit vsechny vlakna, coz s sebou nese dalsi problemy, ale todle je jinej pribeh, ale je to ovsem dalsi ukazka neschopnosti scheduleru Windows. Kdo si koupi nej Threadripper, tak jemu fakt nic nezbejva, nez naistalovat OS, kterej zcela zna topologii CPU a vi jak s ni pracovat (Linux)

anonacct

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #17 kdy: 18. 07. 2020, 15:17:52 »
Ještě by to mohl být nějaký home-made spinlock, který nikdo nevyzkoušel na AMD :) K tomu shitty win scheduler, no ladit bych to nechtěl - 100% to nejsou optimalizace, bude to špatný kód.

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #18 kdy: 18. 07. 2020, 20:10:38 »
Příčin může být hodně. Při složitosti dnešních x64 procesorů je to skoro na detektivku. Nedávno mi kamarád ukazoval zajímavý případ. Algoritmus, který fungoval na novější generaci Intelu o 50 % pomaleji než na staré. Při bližším zkoumání se ukázalo, že "nový vylepšený" branch predictor byl těžce zmaten v innermost loop, rozhodoval se příliš často blbě a jen tohle způsobilo celé to zpomalení. Dost si s tím vyhrál, aby to upravil tak, aby to jelo dobře na obou. A pak to diagnostikuj na dvou zcela různých procesorech, když i u jednoho výrobce se ti může stát taková věc. Stačí použít nějakou exotickou instrukci, která na jedné platformě jde dobře a na druhé špatně a je vymalováno.

TR ma oproti ringbusovým intelům větší latenci přístupu k paměti. Apky, které jsou na to citlivé, pak mají horší výkon. Pak jsou apky, které se snaží řídit afinitu threadů samy, jako třeba FarCry 5 a výsledky jsou tragické
https://www.kitguru.net/wp-content/uploads/2019/11/Game-1440p-Far-Cry-5.jpg
mimochodem to nikdy neopravili, pokud si to chceš zahrát, musíš vypnout jádra (to ve windows znamená reboot, neumí je hotplugovat jako linux).

Zatím to je stále tak, že na Intelu svojí apku otestuje každý a na AMD zdaleka ne. Každý se řídí doporučeními Intelu atd. Takže ta obava tazatele není zcela mimo.

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #19 kdy: 18. 07. 2020, 20:49:21 »
On to asi ani tak není problém CPU jako toho, že ten program má problémy pod vším co je novější než Windows server 2008.


Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #20 kdy: 18. 07. 2020, 23:52:11 »
Kazdopadne bych napred resil problem vymenou OS (SW, ktery tazatel zminil, ma verzi i pro Linux) za takovy, ktery s topologii CPU umi pracovat

BTW funguje FarCry5 na Linuxu (Wine, Proton)? Dost by me zajimalo, zda na Linuxu ten problem zmizi, nebo bude pretrvavat

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #21 kdy: 20. 07. 2020, 17:55:03 »
Odkaz mluvi o limitu 64 vlaken na socket, kdezto Threadripper umi 128. Widle todle workaroundujou tim, ze CPU prohlasi za dvousocketovy reseni aby mohly vyuzit vsechny vlakna, coz s sebou nese dalsi problemy, ale todle je jinej pribeh, ale je to ovsem dalsi ukazka neschopnosti scheduleru Windows. Kdo si koupi nej Threadripper, tak jemu fakt nic nezbejva, nez naistalovat OS, kterej zcela zna topologii CPU a vi jak s ni pracovat (Linux)

A tak něco podobného se mi stalo asi před devíti lety v Linuxu. Chtěl jsem úspornou Sandy Bridge i7, ale pořád nebyla k mání. Čekal jsem asi dva měsíce od uvedení na trh, ale v české distribuci byla jen úsporná i5, tak jsem nakonec koupil tu i5. Měsíc na to se objevila i ta i7, tak jsem i5 poslal do světa a koupil i7. Ta i7 měla HT, o 100MHz víc a asi větší cache. Podle benchmarku měla být rychlejší asi o 30% a co jsem si sám změřil nějaké časy, tak to sedělo.

Jen u jednoho konkrétního programu byl naopak propad výkonu i7 skoro až na polovinu té předchozí i5. Připadalo mi to, jako by na i5 čtyři vlákna daného programu běžely na čtyřech jádrech a na té i7 se to trefilo do dvou jader + HT na těch jádrech. Byla to nějaká nepodstatná blbost, tak jsem to neřešil a dnes už ani nevím, co to byl za program.

Tom K

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #22 kdy: 21. 07. 2020, 16:02:19 »
CPU nebol vobec vytazeny ale Metatradre sa zacali sekat. Stacila mensia zataz a zacalo to ist cele vsetko mimoriadne zvlastne. Urobil som klasicke veci od diagnostiky serveru az po benchmarky a vsetko vyzera super. ale proste metatrader ide ako keby na starom intel celeron a neuveritelne sa seka ked AMD Epyc je vytazeny co aj viem len na 40 percent. Aj nacitavania grafov tam trva sekundy co na xeonoch je nepostrehnutelna vec.
podobnym.

Prisel jsi na neco? Tvuj problem mne zaujal.
Jeste mne napadly dalsi moznosti, takze rekapitulace co bych proveril:

A) Problem ve Win scheduleru (nekompatibilita s NUMA architekturou).

B) Problem s uspornymi rezimy CPU (vyzkouset ve Win powers schema=performance, overit v Resource monitoru ze i bez zateze bezi CPU ve full speed). Dale zkusit povypinat v BIOSu vsechny Cx state ap.

C) Problem ve spatne detekci noveho CPU v SW. Priklad pro Intel Math Kernel Library https://diit.cz/clanek/matlab-po-3-letech-stiznosti-opravil-10-radku-kodu-ktere-snizovaly-vykon-zenu , ale muze to byt jakakoliv jina knihovna/komponenta.

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #23 kdy: 22. 07. 2020, 09:52:25 »
A) Problem ve Win scheduleru (nekompatibilita s NUMA architekturou).

TR 3960X (obecně TR trojkové řady a Epycy generace Rome) nejsou NUMA

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #24 kdy: 23. 07. 2020, 23:33:05 »
Intel ma nástroj na ladění architekturálních optimalizací dostupný v rámci jejich "IDE" Intel System Studio (buď jejich postavené nad eclipse nebo doplněk do Visual Studia). Umí to zbírat informace z HW čítačů a dělat statistiky o cache hit/miss , branch predikcích, apod. Výsedky pak ukáže přímo do kódu nebo ASM. Umí to i nějaké optimalizace pro .NET a myslím (ale nejsem si uplně jist, moc mě to nezajímá), že i Javu.

Protože to ale používá interní věci architektury procesoru od Intelu, tak to má 2 zásadní omezení. Nefunguje to na AMD (logicky) a nefunguje to ani na starších procesorech od Intelu, které to ještě neuměli. Nevím jestli funguje vše na všech architekturách, možná některé něco nepodporují.

Jinak mimochodem se to dá používat i v kombinaci s debuggerem přes Intel DCI a dá se tak profilovat (a debugovat) nejen userspace aplikace, ale i OS a jeho kernel nebo dokonce bootloader (třeba ladění GRUBu, apod. je možné) či kód BIOSu (takže např UEFi applikace nebo drivery). Detaily má intel pod NDA, něco málo se dá vyčíst z leaknutých informací.

Ymzk

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #25 kdy: 05. 08. 2020, 14:43:52 »
Ahojte, prepacte ze som dlho neodpovedal ale bol som na dovolenke no aj tak som stihol nejake veci z odporucenych veci co ste mi sem napisali.

Najskor ze idem skusit dat CentOS ale prisiel som nato ze ta appka nema vobec linuxovu verziu. Takze som nakoniec musel stale zostat u windowsu. Nasledne tu padli veci ze treba Windows Server 2008 R2. To som urobil ale nepomohlo a problem bol ten isty. Dalej som skusal v task managery nastavit Processor affinity a to tiez nikam neviedlo.

Nasledne som to znovu dal na Windows Server a skusil virtualizaciu a dal som Hyper-V na Windows Server 2019.

A tu som prisiel na veci ktore som este nevidel. CPU ma 24 jadier a 48 Threadov. Klasicky ked mate intel a nastavite ako pocet CPU 48 jadier do vsetkych virtualok. Tak sa az nic take extra nestane a on to zvladne vytazit.
Ale pri tomto AMD som si vsimol ze maximum co on dokaze dat je 24 jadier a Thready uplne ignoroval. Cize akonahle som nastavil medzi 6 virtualnych strojov viac ako 24 Jadier. Co pri intel nerobi ziaden problem. Tak AMD zacalo robit dost problem a defacto sa v ziadnej virtualke nedalo nic robit a aj refresh ikon na ploche trvalo 2-3 minutky. CPU v task managery ukazovali vytazenie na 50 percent.

Cele mi to pride ako keby AMD proste vobec pod windows a hyper-v nevedelo pracovat s threadami. Chcem este upozornit ze v tomto konkretnom konfigu na SSD su NVMe nastavene v RAID10 a read je najkych 10 000 MB/s a Write 6000 MB/s takze diskovy vykon mu ozaj nechybal.

Nasledne som hladal ci ten CPU AMD Epyc 7401p je vobec kompatibilny ale nic som nenasiel iba tuto stranku kde pri starsich sa odporuca vypnut SMT ale to neviem ci sa ma tyka.

https://support.microsoft.com/en-us/help/4514607/windows-server-support-and-installation-instructions-for-amd-rome-proc

Akoze fakt som uz z tohoto zhrozeny a investoval som do toho desiatky hodin a som sklamany. Takze fakt zvazujem ze do dev pocitaca nakoniec dam i9-10900K a bude vybavene. Aj ked ten procesor je nemoderny a tak podobne.




RDa

  • *****
  • 2 476
    • Zobrazit profil
    • E-mail
Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #26 kdy: 06. 08. 2020, 23:12:25 »
Holt ten procesor je moderni a potrebujes tam jet Linux.
Nativne.
A aplikace co pouzivaji soudobe knihovny & preklad idealne ze zdrojaku poslednimi prekladaci, zadne takove binarni 10-12 lete srajdy jak tam ted tlacis :)

Ymzk

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #27 kdy: 07. 08. 2020, 10:20:15 »
Holt ten procesor je moderni a potrebujes tam jet Linux.
Nativne.
A aplikace co pouzivaji soudobe knihovny & preklad idealne ze zdrojaku poslednimi prekladaci, zadne takove binarni 10-12 lete srajdy jak tam ted tlacis :)

JJ, ja viem :( len inak sa mi neda. Toto riesim pripadne kvoli developmentu. som .NET a Python programator, ale to nevadi pretoze pod Linuxom mi ide Rider IDE ktore je moderne. Len sa bojim ze nahodou budem musiet skocit naspat do windowsu a tam ked uz nainstalujem Visual Studio ktore ma milion obstaroznych komponentov skompilovanych s ICC tak sa bojim ake to bude. Ale keby viem ze mam ficat pod CentOS workstation s riderom a tak . Tak sa nebojim vobec.

Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #28 kdy: 07. 08. 2020, 11:27:53 »
Ja by som trochu ubral z toho ICC hate, ignoroval Windows hate a nevytvaral by som zavery z jedneho testovaneho usecase...,

ano ICC ma niektore usecases rucne optimalizovane ale to neznamena teraz ze vsetok ICC software ti pojde o 50% pomalsie ako by siel na Intel CPU, pokial nepouzivas software ktory vyslovene zneuziva konkretne intelovske optimalizacie tak rozdiely sposobene kompilatorom budu na urovni jednotiek percent.

ano Windows nie je az tak velmi dobre optimalizovany pre velathreadove stroje, ale NUMA je podporovana uz od Windows 7 / Windows Server 2008R2 a Zen1 nie je az tak nova a moderna architektura (ten link pre amd support sa tyka novsich procesorov ako 7401p) ze by s nou nejaky operacny system mal mat take prehnane problemy ako ocakavas z toho tvojho jedineho pripadu pouzitia ktory si tu zatial predviedol.. https://www.tomshardware.com/news/amd-no-windows-scheduler-isnt-selecting-wrong-ryzen-3000-cores-to-boost

skusal si tam pustit nejaky synteticky benchmark (co testuje surovu silu procesora a ignoruje I/O), ci vobec vies vytazit ten CPU na 100%? ak ano, dostal si vysledky porovnatelne takym ake by si mal dostavat na danom CPU (vygoogli)? ak nie, skus si zistit, ci sa ti to neprehrieva a ci mas dostatocne vykonny zdroj....

skusal si si na tych tvojich SSD-ckach testovat aj IOPS nie len sequential read/write?

skusal si pozriet ake nastavenie tykajuce sa CPU mas v UEFI settingoch? tieto starsie zeny vedeli bezat aj v nejakom compatibility mode, kde Windowsu nic o svojej NUMA internej architekture nepovedia, vtedy sa neukazuju vsetky thready a o scheduling sa snazi sam procesor a moze to ovplyvnovat I/O odozvy diskov vid. https://www.micron.com/about/blog/2020/february/numa-configuration-on-amd-rome-processors-and-nvme-performance-on-windows-servers


ByCzech

  • *****
  • 1 857
    • Zobrazit profil
    • E-mail
Re:AMD vs Intel pre programátora + problem optimalizacie
« Odpověď #29 kdy: 07. 08. 2020, 12:31:39 »
Zkusit to pustit ve virtualizovaných Windows pod Linuxem vás nenapadlo?