Do kódové základny, na jejímž základě se formuje jádro Linux 7.0, byla přijata sada změn, které při provádění stresového testování v 100-gigabitové síti umožnily zvýšit výkon zpracování příchozích UDP paketů o 12 %. Optimalizace byla realizována pomocí ručního inline stylu dvou funkcí. Je poznamenáno, že funkce timecounter_cyc2time() může být volána na každý příchozí paket, protože moderní protokoly vyžadují zohlednění času přijetí paketu. Z tohoto důvodu na zatíženém serveru funkce timecounter_cyc2time() může být volána více než 100 milionůkrát za sekundu.
V této situaci automaticky aplikované optimalizace kompilátorem, jako FDO (Optimalizace řízená zpětnou vazbou), LTO (Optimalizace v čase spojení) a PGO (Optimalizace řízená profilováním), nedokázaly odhalit horký segment kódu a ignorovaly ho, zřejmě kvůli tomu, že ovladače síťových karet jsou dodávány ve formě samostatných modulů. Ruční inline nasazení funkce však přineslo významné zvýšení výkonu.
Zdroj: opennet.ru
