Enquanto a janela de mesclagem do Linux 6.4 está fechando neste fim de semana, hoje, no último dia completo do período, Jens Axboe está enviando o suporte ao pipe FMODE_NOWAIT como o que ele descreveu como uma grande melhoria de desempenho e eficiência.

Com uma encarnação anterior do suporte FMODE_NOWAIT para pipes patches, Axboe explicou:

“Uma coisa que sempre foi um pouco mais lenta do que eu gostaria com io_uring é lidar com pipes. Eles não suportam IOCB_NOWAIT e, portanto, precisamos punt-los para io-wq para manipulação. Esta série adiciona suporte para FMODE_NOWAIT para pipes.”

Mas onde as coisas realmente ficam selvagens é a escala do ganho de desempenho/eficiência dele:

“Curioso sobre como grande diferença que isso faz, eu escrevi um pequeno benchmark que simplesmente abre 128 pipes e então faz 256 rodadas de leitura e gravação neles. Isso foi executado 10 vezes, descartando a primeira execução, pois é sempre um pouco mais lento. Antes do patch:

Média: 262,52 ms
Stdev: 2,12 ms
Min: 261,07 ms
Máx 267,91 ms

e após o patch:

Média: 24,14 ms
Stdev: 9,61 ms
Min: 17,84 ms
Máx.: 43,75 ms

ou cerca de uma melhoria de 10x no desempenho (e eficiência).

Eu executei os patches através dos testes ltp pipe e splice, sem regressões observadas. Olhando para os rastros io_uring, podemos ver que não temos mais rastros io_uring_queue_async_work() após o patch, onde anteriormente tudo era feito via io-wq.”

Ele mais tarde adicionado nessa série de patches:

“Os itens acima o teste foi para um canal vazio quando a leitura é emitida, se o teste for alterado para ter dados quando, então parecerá ainda melhor:

Antes:

Avg: 249,24 ms
Stdev: 0,20 ms
Min: 248,96 ms
Máx: 249,53 ms

Depois:

Médio: 10,86 ms
Stdev: 0,91 ms
Min: 10,02 ms
Máx: 12,67 ms

ou cerca de uma melhoria de 23x.”

Os patches definidos para mesclagem no Linux 6.4 definem o suporte FMODE_NOWAIT para pipes, mas desativam-no se estiver usando splice/vmsplice no canal. Esta solicitação pull é o que há agora pendente para o suporte do canal FMODE_NOWAIT.

Categories: IT Info