V kodno bazo, na osnovi katere se oblikuje jedro Linux 7.0, je bil sprejet niz sprememb, ki so med stresnim testiranjem v 100-gigabitni mreži omogočile povečanje zmogljivosti obdelave prihajajočih UDP paketov za 12%. Optimizacija je bila izvedena z ročnim inliningom dveh funkcij. Opozarja se, da se funkcija timecounter_cyc2time() lahko kliče ob vsakem prihajajočem paketu, saj sodobni protokoli zahtevajo upoštevanje časa prihoda paketa. Zaradi tega je obremenjena strežnikom funkcija timecounter_cyc2time() lahko kliče več kot 100 milijonov krat na sekundo.
V tej situaciji avtomatske optimizacije, ki jih uporablja prevajalnik, kot so FDO (Feedback Directed Optimization), LTO (Link Time Optimization) in PGO (Profile Guided Optimization), niso uspele odkriti vročega segmenta kode in so ga očitno prezrle, ker se gonilniki omrežnih kartic dobavljajo v obliki ločenih modulov. Vendar je ročno inline razširjanje funkcije prineslo pomembno izboljšanje zmogljivosti.
Izvor: opennet.ru
