Pequenas, mas significativas melhorias de performance para as operações de arquivos no Virtual File-System (VFS) foram integradas ao Linux 6.15. Essa atualização faz parte de um conjunto de mudanças submetidas e já incorporadas ao kernel.
Um dos envios mais notáveis para o Linux 6.15, liderado pelo engenheiro de kernel da Microsoft, Christian Brauner, foi a implementação de suporte a tamanhos de bloco maiores que os tamanhos de página. Paralelamente, a integração de otimizações no subsistema de arquivos do VFS, embora pareçam modestas à primeira vista, merecem destaque por seus ganhos de performance. Afinal, toda e qualquer otimização no desempenho do kernel é bem-vinda.
Christian Brauner resumiu o trabalho de otimização do VFS, desenvolvido por Mateusz Guzik, da seguinte forma:
“Este conjunto de alterações traz melhorias de desempenho para o novo mecanismo de contagem de referências da estrutura file
, além de outros trabalhos focados em performance:
- O kernel padrão, ao transicionar um arquivo para o estado sem referências, impõe uma penalidade ao chamador com uma operação atômica extra para bloquear quaisquer incrementos futuros. Em cenários onde o arquivo provavelmente será descartado em breve, essa sobrecarga pode ser evitada. Para otimizar o caso comum em que o fechamento de um descritor de arquivo também opera na última referência, foi adicionada a função
file_ref_put_close()
. As funçõesfput_close_sync()
efput_close()
foram construídas sobre essa nova base. Essa mudança proporciona uma melhoria de performance de aproximadamente 1%, eliminando uma operação atômica no caso mais frequente. - Implementamos uma previsão de ausência de erros na chamada de sistema
close()
, visto que na grande maioria das vezes ela retorna 0. - O trabalho realizado em
fdget_pos()
foi reduzido através da previsão de que o arquivo será encontrado, da comparação explícita da contagem de referências com o valor um e da exclusão da ‘zona morta’.”
Para obter todos os detalhes sobre essas alterações que agora fazem parte do código principal do Linux 6.15, você pode consultar este pull request.