Desempenho otimizado

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.

Ilustração de um velocímetro indicando alta velocidade, representando a otimização de desempenho com o novo patch do kernel Linux.

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.