Um conjunto de alterações foi aceito na base de código que forma o núcleo do Linux 7.0, durante testes de estresse em uma rede de 100 gigabits, permitindo melhorar o desempenho do processamento de pacotes UDP recebidos em 12%. A otimização foi implementada através da injeção manual de duas funções. Observa-se que a função timecounter_cyc2time() pode ser chamada a cada pacote recebido, visto que os protocolos modernos exigem a contabilização do tempo de chegada do pacote. Devido a isso, em uma situação de alta carga servidor a função timecounter_cyc2time() pode ser chamada mais de 100 milhões de vezes por segundo.
Nesta situação, as otimizações automáticas aplicadas pelo compilador, como FDO (Feedback Directed Optimization), LTO (Link Time Optimization) e PGO (Profile Guided Optimization), não conseguiram detectar o segmento crítico do código e o ignoraram, aparentemente porque os drivers de placas de rede são fornecidos na forma de módulos separados. No entanto, o desdobramento inline manual da função resultou em um ganho significativo de desempenho.
Fonte: opennet.ru
