Categorias
Tecnologia

Codificação de 5 minutos gera aumento de mais de 6% no desempenho de E/S do Linux

Com apenas cerca de 5 minutos de codificação, um desenvolvedor conseguiu gerar um aumento de mais de 6% no desempenho de E/S do Linux. O criador do IO_uring e mantenedor do subsistema de bloco Linux, Jens Axboe, passou cerca de cinco minutos trabalhando em dois patches para implementar o cache para consulta de tempo do lado do problema na camada de bloco e pode render 6% ou mais de melhor desempenho de E/S.

Axboe compartilhou sobre sua mais recente e interessante otimização de desempenho de E/S do Linux:

“Algo que tenho em mente há anos e finalmente consegui hoje. O que é meio triste, já que foi literalmente um trabalho de 5 minutos, rendendo uma melhoria de mais de 6%. Provavelmente seria ainda maior em uma configuração de kernel estilo distribuição em grande escala.”

Cerca de 5 minutos de codificação geram um aumento de mais de 6% no desempenho de E/S do Linux

Codificação de 5 minutos gera aumento de mais de 6% no desempenho de E/S do Linux

Axboe explicou que normalmente desativa iostats durante o teste devido à sobrecarga de desempenho do tempo de consulta por padrão. Mas ao fornecer algum cache básico para a consulta de tempo do lado do problema, ele está vendo um aumento de cerca de 6% no IOPS e para um kernel de fornecedor de distribuição Linux mais inchado, os ganhos são provavelmente mais significativos.

Ele detalhou na série de patches RFC:

Nenhum dos chamadores realmente precisa de granularidade nsec. Aproveite isso armazenando em cache a hora atual no plugue,com a suposição aqui de que qualquer verificação de tempo será temporalmente próxima o suficiente para que a ligeira perda de precisão não importe.Se

o plugue do bloco for descarregado,por exemplo, em preempção ou agendamento,então invalidamos o relógio em cache.

o que representa uma melhoria de mais de 6% no desempenho. Observando a diferença de desempenho, podemos ver uma enorme redução na sobrecarga de tempo:

10,55% -9,88% [kernel.vmlinux] [k] read_tsc
1,31% -1,22 % [kernel.vmlinux] [k] ktime_get

Observe que, como isso depende de blk_plug para o cache, ele só é aplicável ao lado do problema. Mas é aqui que a maioria das chamadas acontecem de qualquer maneira. Também não vale a pena que o teste acima não habilite nenhum dos itens de CPU de custo mais alto no lado da camada de bloco, como wbt, cgroups, iocost, etc, o que adicionaria tempo adicional de consulta. IOW, os resultados provavelmente pareceriam ainda melhores em comparação com aqueles habilitados, como fariam as distros.”

Por Claylson Martins

Jornalista com pós graduações em Economia, Jornalismo Digital e Radiodifusão. Nas horas não muito vagas, professor, fotógrafo, apaixonado por rádio e natureza.

Sair da versão mobile