Novos patches foram recentemente propostos para o sistema de arquivos Flash-Friendly File-System (F2FS), trazendo uma melhoria significativa na velocidade de exclusão de arquivos grandes, com um ganho de aproximadamente 54% no desempenho. Yi Sun, da Unisoc, apresentou dois patches focados em otimizar o processo de truncamento de arquivos no F2FS, uma operação que tradicionalmente consome muito tempo.
O que é F2FS?
O F2FS (Flash-Friendly File-System) é um sistema de arquivos desenvolvido especialmente para dispositivos de armazenamento baseados em flash, como SSDs e cartões de memória. Ele foi projetado para oferecer um desempenho superior ao manipular arquivos nesses dispositivos, utilizando técnicas que aproveitam as características de leitura e escrita da memória flash.
O que muda com os novos patches?
O problema enfrentado pelo F2FS na exclusão de grandes arquivos é o tempo excessivo gasto nas operações de bloqueio e liberação de segmentos de memória, uma etapa necessária para garantir que os dados sejam gerenciados corretamente. Tradicionalmente, essas operações utilizam as funções chamadas down_write() e up_write(), que, quando realizadas repetidamente, acabam aumentando o tempo total do processo.
A solução proposta pelos patches permite que blocos de dados contínuos e pertencentes ao mesmo segmento sejam processados ao mesmo tempo. Isso reduz a quantidade de operações necessárias, resultando em uma exclusão de arquivos muito mais rápida.
Explicando o truncamento de arquivos
O truncamento de arquivos é o processo de reduzir o tamanho de um arquivo ou liberar o espaço que ele ocupava no disco. No contexto do F2FS, ao apagar arquivos grandes, o sistema precisa liberar grandes blocos de memória. No entanto, sem as otimizações recentes, esse processo pode ser demorado devido à forma como os dados são organizados no disco.
Procedimentos e testes realizados
Para verificar a eficácia dos patches, Yi Sun realizou testes configurando as frequências da CPU e da memória DDR ao máximo, simulando a exclusão de um grande arquivo de 100 GB. O processo de teste incluiu:
- Criar um arquivo de 100 GB usando o comando
dd if=/dev/random of=./test.txt bs=1M count=100000
. Isso cria um arquivo de grande porte, cheio de dados aleatórios, que simula um cenário típico de uso intenso do sistema. - Sincronizar o sistema de arquivos com o comando
sync
. Esse comando garante que todas as operações pendentes de escrita no disco sejam concluídas antes de prosseguir. - Excluir o arquivo com o comando
rm test.txt
, que remove o arquivo do sistema.
Resultados do teste
Os resultados mostraram uma melhoria significativa na eficiência do processo de exclusão de arquivos grandes:
- Tempo original: 7,17 segundos
- Com otimização: 3,27 segundos
- Ganho de desempenho: 54,39%
Próximos passos
Esses patches estão atualmente em fase de solicitação de comentários (RFC), o que significa que eles ainda estão sendo revisados e discutidos pelos desenvolvedores da comunidade Linux. No entanto, espera-se que a otimização seja integrada em breve, trazendo uma melhoria considerável para usuários que dependem do F2FS para gerenciar grandes volumes de dados.