Nel kernel di Linux, il processamento dei pacchetti UDP in ingresso è stato accelerato del 12%.

Nel codice sorgente su cui si basa il kernel Linux 7.0, è stato adottato un insieme di modifiche che, durante i test di stress in una rete da 100 gigabit, hanno permesso di aumentare le prestazioni nella gestione dei pacchetti UDP in ingresso del 12%. L'ottimizzazione è stata realizzata attraverso l'inlining manuale di due funzioni. Si nota che la funzione timecounter_cyc2time() può essere chiamata per ogni pacchetto in ingresso, poiché i protocolli moderni richiedono la registrazione del tempo di arrivo del pacchetto. A causa di ciò, su carichi elevati server la funzione timecounter_cyc2time() può essere chiamata oltre 100 milioni di volte al secondo.

In questa situazione, le ottimizzazioni automatiche applicate dal compilatore, come FDO (Feedback Directed Optimization), LTO (Link Time Optimization) e PGO (Profile Guided Optimization), non sono riuscite a individuare il segmento di codice caldo e lo hanno ignorato, apparentemente a causa del fatto che i driver delle schede di rete sono forniti come moduli separati. Tuttavia, il dispiegamento manuale inline della funzione ha portato a un guadagno significativo in termini di prestazioni.

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster