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.