❗️Toto je původní verze internetového fóra ISPforum.cz do února 2020 bez možnosti registrace nových uživatelů. Aktivní verzi fóra naleznete na adrese https://telekomunikace.cz

Ladění NATu, přednáška z podzimní Jezerky 2016

Příspěvky, které nespadají do žádného z vytvořených fór.
Uživatelský avatar
zdenek.svarc
Administrator
Příspěvky: 1635
Registrován: 20 years ago
antispam: Ano

Ladění NATu, přednáška z podzimní Jezerky 2016

Příspěvekod zdenek.svarc » 8 years ago

0 x

dagus
Příspěvky: 1288
Registrován: 14 years ago

Příspěvekod dagus » 8 years ago

Z toho slajdu nevím jestli správně chápu závěr z testování HT. Znamená to, že i když ROS bude psát dvojnásobné vytížení na 4 jádra, tak to stále bude rychlejší, než kdyby to psalo poloviční vytížení na 8jader? Je tedy psané vytížení pouze nirvana, kterou nám předhazuje HT? Pokud tedy jede CPU s HT ve špičkách na 50% jede tedy na max? Jak to chápete vy? Škoda že netestovali nat skrz ROS různé cpu různé verze. Sice by to byla asi pro ROS potupa, ale alespoň bychom věděli na čem jsme. Jinak pěkné měření a chválihodné to zveřejnění.
0 x

drazil
Příspěvky: 5
Registrován: 9 years ago

Příspěvekod drazil » 8 years ago

Já začnu tím co je HT. Dneska Intelovský procesory umožňují spustit 2 vlákna na 1 jádru. Dělá se to tak, že jsou reálně na čipu některé jednotky zdvojené (např. register file, reorder buffer, instruction decode unit). Problém je v tom, že počet exekučních jednotek (ALU, FPU, AVX ...) je stejný ať je HT zapnutý nebo vypnutý. HT obecně těží z toho, že běží 2 vlákna, která vyžadují různé exekuční jednotky. Při zapnutém HT je také sdílený přístup do hlavní paměti přes jedno rozhraní a stejně tak je L1 cache paměť sdílena mezi 2 procesy.

Btw vykonávání intrukcí v různých exekučních jednotkách probíhá paralelně (jedná se o paralelizaci na velmi nízké úrovni, která je programátorům skrytá)

Jenže ve chvíli, kdy dojde na zpracování paketů, tak se na všech paketech provádějí vesměs stejné operace a tedy se používají stejné exekuční jednotky. Tedy HT v tomto případě nijak nepřispívá. Na druhou stranu pokud se HT vypne, tak Intel TurboBoost může vytáhnout z procesoru o něco vyšší frekvenci. Co pravděpodobně dál pomůže při vypnutém HT je přístup k paměti. Když síťová karta přijme paket, tak ho vloží do jedné z N front (kde N je počet dostupných vláken). Každá jedna fronta je následně mapována do paměti. Pokud budu z jednoho fyzického jádra přistupovat do 2 různých front, pak pokazím lineární přístup do paměti a snížím tak její propustnost. Stejně tak existují fronty pro zapsání paketů, které jsou určeny k odeslání.

Vytížení jádra v procentech popisuje kolik taktů jádra bylo přiděleno úloze, která něco dělá (tedy neběží tam idle task). Takže pokud OS hlásí, že 2 virtuální jádra (reálně 1 fyzické jádro) jsou vytížena na 50%, pak to zpravidla znamená, že běží 2 úlohy, které jsou schopny využít jen polovinu taktů z dostupné frekvence (operace, které se počítají do těchto taktů jsou: počítání v exekučních jednotkách, čekání na uvolnění exekučních jednotek, čekání na data z RAM). Druhá polovina je ztracená např. při čekání na data z HDD, čeká se na vstup uživatele, v kódu se vyskytuje volání funkce sleep, apod. Zároveň to také znamená, že OS nemá k dispozici jiný proces, který by zrovna mohl spustit, aby vytížil jádro na 100%. Celkově je tedy možné, aby i při zapnutém HT byly všechna jádra vytížena na 100% a to tak, že procesy sice "běží", ale reálně mohou čekat většinu času na uvolnění EU, či na data z RAM. Takže zobrazovaný load od OS není úplně vycucaná hodnota z prstu, ale nejde z tohoto čísla určit jestli je HT vhodný pro danou sadu úloh. Vesměs jediný způsob, jak zjistit jestli je HT prospěšné, či ne je změřit výkon aplikace se zapnutým a vypnutým HT.

Ale ze zkušeností, i z jiných než jen z NATu, které máme s HT v rámci zpracování síťových dat už víme, že HT spíše propustnost snižuje.
0 x

Uživatelský avatar
hapi
Příspěvky: 12989
Registrován: 18 years ago

Příspěvekod hapi » 8 years ago

to je hodně silnej příspěvek. Bohužel s nim nemohu souhlasit.

- nenapadá mě jedinný důvod proč by zapnutí HT mělo vliv na turbo boost

- zpracování jednoho paketu je celkem triviální záležitost která bude jistě extrémně závislá na externích věcech jako jsou latence sběrnic, ramek atd. takže se čeká a HT musí extrémně pomáhat protože druhý vlákno obsadí volná místa kdy zrovna první vlákno na něco čeká a nic nedělá. Tohle je typicky naprosto extrémně vidět na starých atomech s HT. Po zapnutí HT se výrazně pod mikrotikem zvýší propustnost. U moderních CPU je třeba znát zapnutí HT téměř na všech frontách. Stačí si spustit cinebench s a bez HT a uvidíte markantní rozdíl který může dostahovat klidně 60-80% nárůstu výkonu.

- zapnutí HT musí zákonitě zvednout výkon protože se umožní zapojit 2x víc vláken bez toho aniž by OS vědělo o tom že to reálně tolik jader ve skutečnosti nemá. To je například vidět na IRQ frontách u ethernetů kdy i hardware to bere jako že 2x větší počet jader a tim i ethernet úměrně tomu navýší počet IRQ a z vlastní zkušenosti vím že to sakra hodně pomáhá. Tim pádem dojde i ke "zdvojení" všech front celým systémem a když zrovna nic nedělá jedna trasa, druhá vesele maká. Hodně účinná zbraň která v dnešních věcech pomáhá.

- to s tím 2x širším přístupem do paměti bych fakt neřešil. To bych taky mohl říct že cpu co má 2x tolik fyzických jader nebude fungovat tak rychle protože musí do paměti přistupovat 2x častěji což je nesmysl že? To že se přistupuje několika vlákny na jednou kamkoliv obecně vždy zvyšuje efektivitu daný věci. A to vůbec nezmiňuji, že všechny možný paměti co v pcčkách jsou umožňují několikanásobný přístup jak čtení tak zápisu na jednou.

- zobrazení vytížení jader je s HT problématické. Resp. zaleží na konkrétním OS.

za mě mohu říct že HT pomáhá ale zároveň člověk pořádně neví, jestli je CPU už na dorazu nebo není. Rozhodně ale dávám přednost možnosti zpracovat 2x vláken "za stejnej čas" ačkoliv se to říct doslova nedá. Ale taky je třeba vzít v úvahu že moje zkušenosti nepochází z pouze NAT mašiny ale s obecně NAT + SHAPING kde nat dělá opravdu minoritní zatížení a HT pomáhá nejspíš jenom u shapingu který bude o dost náročnější.

Mimochodem, z toho slajdu je vidět pouze jedna věc a to ta, že výkon natu je extrémně závislí na frekvenci cpu a že AMD nebrat ani zadarmo :-D což je ostatně obecný fakt.
0 x
Supermicro + Mikrotik = SuperTik
high speed routery podle požadavků

dagus
Příspěvky: 1288
Registrován: 14 years ago

Příspěvekod dagus » 8 years ago

No s tou frekvencí bych to neviděl až tak jednoznačně. Starej Prescott jádro má taky vysokou frekvencí, ale stejného výkonu by nedosáhl. Bude to spíš výkon na jádro, který je úměrný architektuře a hlavně frekvenci.
0 x

Uživatelský avatar
hapi
Příspěvky: 12989
Registrován: 18 years ago

Příspěvekod hapi » 8 years ago

nepočítám že by někdo dneska kupoval 15 let starej cpu :-) a když to vemeš takhle tak všechny cpu od nehalemu až po dnešek jsou prakticky stejný takže jediný co rozhoduje je frekvence. Intel se totiž za tu dobu nikam neposunul kromě lepší spotřeby a víc jader na chip případně dosažení větší základní frekvencí. Reálný výkon na jádro se stejnou frekvencí neni o moc větší mezi nehalemem a dnešním skylake, bohužel. Resp. není tak velký aby to odpovídalo rozdílu 10 let. Jo, neni konkurence, AMD je v pasti.
0 x
Supermicro + Mikrotik = SuperTik
high speed routery podle požadavků

drazil
Příspěvky: 5
Registrován: 9 years ago

Příspěvekod drazil » 8 years ago

hapi píše:- nenapadá mě jedinný důvod proč by zapnutí HT mělo vliv na turbo boost


Pokud se vypne HT, vypnou se některé nepotřebné komponenty na čipu, sníží se příkon a tím i vyzařovaná teplota. Jeden z principů, na kterým funguje TurboBoost je sledování teploty na čipu a pokud se domnívá, že je to možné uchladit, tak zvýší frekvenci. Samozřejmě TurboBoost má ještě další techniky, jak zvyšovat frekvenci procesoru, ale ty se HT netýkají.

hapi píše:- to s tím 2x širším přístupem do paměti bych fakt neřešil. To bych taky mohl říct že cpu co má 2x tolik fyzických jader nebude fungovat tak rychle protože musí do paměti přistupovat 2x častěji což je nesmysl že? To že se přistupuje několika vlákny na jednou kamkoliv obecně vždy zvyšuje efektivitu daný věci. A to vůbec nezmiňuji, že všechny možný paměti co v pcčkách jsou umožňují několikanásobný přístup jak čtení tak zápisu na jednou.


DRAMky mají několik kanálů, na které je možné přistupovat paralelně, ale v procesoru s HT je v jednom fyzickém jádru jediná jednotka, která "řadí" požadavky na data z paměti (označme to jako interface pro přístup k RAM). RAMky v PC mají rádi sekvenční přístup (sekvenční přístup je predikovatelný a procesor může zažádat o přenos dat z RAM, dřív než se objeví reálný požadavek z nějaké instrukce). Jenže při zapnutí HT vzniknou 2 na sobě nezávislé procesy s totálně rozdílným přístupem k paměti, což vede k nárůstu náhodného přístupu, ztrácí se linearita čtení a zvýšuje se latence přístupů.

hapi píše:- zpracování jednoho paketu je celkem triviální záležitost která bude jistě extrémně závislá na externích věcech jako jsou latence sběrnic, ramek atd.


Zpracování paketu není v kernelu až zas tak triviální, jak se to může zdát (a to raděj ani nemluvím o IPv6), ale je pravda, že to čekání na data je nezanedbatelná. Největší problém paketů je, že to jsou poměrně malé datové chunky, a zpracování více paketů zahrnuje spoustu transakcí mezi pamětí a procesorem a opět narážíme na problém s 1 sdíleným interfacem.

hapi píše:- zapnutí HT musí zákonitě zvednout výkon protože se umožní zapojit 2x víc vláken bez toho aniž by OS vědělo o tom že to reálně tolik jader ve skutečnosti nemá. To je například vidět na IRQ frontách u ethernetů kdy i hardware to bere jako že 2x větší počet jader a tim i ethernet úměrně tomu navýší počet IRQ a z vlastní zkušenosti vím že to sakra hodně pomáhá. Tím pádem dojde i ke "zdvojení" všech front celým systémem a když zrovna nic nedělá jedna trasa, druhá vesele maká. Hodně účinná zbraň která v dnešních věcech pomáhá.


No ke zdvojení všech front nedojde, počet exekučních jedotek je stále stejný, počet interfaců k paměti je pořád stejný. Stejně tak se zapnutím HT se nenafoukne L1 - L3 cache (i když nejnáchylnější na HT je L1).

Jako na normální výpočty je běžně HT dobrý a zvyšuje výkon (a příkon), ale zpracování paketů je v tomto ohledu zvláštní problém. Mluvil jsem s klukama, kteří pracují na aplikacích pro 100 Gbps sítě a i oni mají zkušenost, že HT jim snižuje výkon jejich aplikací.
0 x