În nucleul Linux, procesarea pachetelor UDP primite a fost accelerată cu 12%.

În baza de cod pe care se formează nucleul Linux 7.0, a fost acceptat un set de modificări în timpul testelor de stres efectuate într-o rețea de 100 de gigabiți, care au permis creșterea performanței procesării pachetelor UDP primite cu 12%. Optimizarea a fost realizată prin inline manual pentru 2 funcții. Se observă că funcția timecounter_cyc2time() poate fi apelată pentru fiecare pachet primit, deoarece protocoalele moderne necesită înregistrarea timpului sosirii pachetului. Din cauza aceasta, pe un sistem împovărat, server funcția timecounter_cyc2time() poate fi apelată de peste 100 de milioane de ori pe secundă.

În această situație, optimizările automate aplicate de compilator, cum ar fi FDO (Feedback Directed Optimization), LTO (Link Time Optimization) și PGO (Profile Guided Optimization), nu au reușit să detecteze segmentul critic de cod și l-au ignorat, cel mai probabil din cauza faptului că driverele plăcii de rețea sunt livrate sub formă de module separate. Totuși, desfășurarea manuală inline a funcției a adus un câștig semnificativ în performanță.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster