Categorias
Kernel

Patches otimizam exclusão de arquivos no F2FS em 54% no Linux

Novos patches para o F2FS aceleram a exclusão de arquivos em até 54%, otimizando o processo de truncamento ao processar blocos contínuos simultaneamente e reduzir chamadas repetitivas de funções.

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?

Dois tipos de armazenamento SSD: um SSD de 2,5 polegadas e um SSD M.2 sobre um fundo verde.

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:

  1. 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.
  2. 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.
  3. 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.

Por Emanuel Negromonte

Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e tudo mais difícil quando nos separamos.

Sair da versão mobile