Depois de revolucionar a E/S de armazenamento Linux, a interface IO_uring do kernel continua a ser aprimorada para lidar com as necessidades de rede Linux também.
Nos últimos meses, houve trabalho no envio do IO _uring network zero copy e outros esforços para tornar o IO_uring atraente para casos de uso de rede no Linux. O mantenedor do subsistema de bloco Linux e desenvolvedor líder do IO_uring Jens Axboe esteve envolvido neste esforço de rede e na quarta-feira anunciou mais otimizações. A nova série de patches do Axboe atinge uma redução de 3 a 4% para cargas de trabalho relacionadas à rede com IO_uring. Esse teste de desempenho é baseado em um modelo de gerenciamento de rede do Thrift.
As cargas de trabalho em rede são intensivas no lado do armamento de pesquisa, pois a maioria das operações de recebimento será acionada assíncrona por pesquisa. Para esse tipo de acionamento de enquete, alocamos req->apoll dinamicamente e isso serve como nossa entrada de enquete. Isso significa que poll->events e poll->head não fazem parte das cachelines do io_kiocb e, portanto, geralmente não são quentes no caminho de conclusão. Ao criar perfis de cargas de trabalho, io_poll_check_events() aparece mais quente do que deveria, exatamente porque temos que puxar essa linha de cache separadamente.
Estado de cache no próprio io_kiocb, o que evita puxar dados desnecessários no caminho poll task_work. Isso reduz a sobrecarga em cerca de 3-4%.
Dado todo o interesse e esforços promissores em torno do IO_uring, será divertido ver onde ele terminará até o final do ano.
Até a próxima !!
Nenhum comentário:
Postar um comentário