En uppsÀttning Àndringar har antagits i kodbasen som ligger till grund för Linux-kÀrna 7.0, vilket i stresstester i ett 100-gigabit-nÀtverk har möjliggjort en ökning av prestanda för bearbetning av inkommande UDP-paket med 12%. Optimeringen har genomförts genom manuell inlinering av tvÄ funktioner. Det noteras att funktionen timecounter_cyc2time() kan anropas för varje inkommande paket, eftersom moderna protokoll krÀver tidsregistrering för ankomst av paket. PÄ grund av detta pÄ en belastad servern funktionen timecounter_cyc2time() kan anropas mer Àn 100 miljoner gÄnger per sekund.
I denna situation kunde de automatiskt tillÀmpade optimeringarna av kompilatorn, sÄsom FDO (Feedback Directed Optimization), LTO (Link Time Optimization) och PGO (Profile Guided Optimization), inte identifiera den heta kodsegmentet och ignorerade det, förmodligen pÄ grund av att nÀtverkskortens drivrutiner levereras i form av separata moduler. Men manuell inline-utveckling av funktionen gav en betydande prestandaförbÀttring.
KĂ€lla: opennet.ru
