Graças ao engenheiro da Sony, Yuezhang Mo, um novo patchset melhora o desempenho do exFAT do kernel 6.2 ao criar arquivos e pastas.
exFAT (Extended FAT) é um sistema de arquivos proprietário da Microsoft. Além disso, a maioria das câmeras digitais modernas usa exFAT. Os cartões de memória SDXC de alta capacidade são pré-formatados com o sistema de arquivos exFAT.
Isso porque ele é mais leve, ao contrário do NTFS, e suporta arquivos maiores que 4 GB. Portanto, se você tiver uma memória SD exFAT, copiará rapidamente um filme de alta definição, o que não é o caso do FAT32.
O sistema de arquivos exFAT está prestes a ficar mais rápido no kernel 6.2, pelo menos ao criar arquivos e diretórios, com o aumento de desempenho especialmente perceptível em processadores de baixo custo.
Novo patchset melhora o desempenho do exFAT do kernel 6.2
A Microsoft lançou a especificação exFAT e anunciou o suporte ao Linux em agosto de 2019, que foi seguido por uma nova implementação exFAT no Linux 5.7 (junho de 2020) da Samsung.
Mas as pessoas ainda estão trabalhando para melhorar o suporte exFAT Linux, e Yuezhang Mo, um engenheiro da Sony, efetivou um patchset para o kernel 6.2 que reduz a travessia repetida de entradas de diretório para aumentar o desempenho do exFAT:
“Depois de percorrer todas as entradas de diretório, indique a entrada de diretório vazia, independentemente de haver ou não entradas de diretório vazias suficientes.
Após este commit, indique as entradas de diretório vazias como esta:
1. Indique as entradas de diretório excluídas, se suficientes;
2. Sugira as entradas de diretório excluídas e não utilizadas que estão no final da cadeia de cluster, independentemente de serem suficientes ou não (Adicionar por este commit);
3. Se não houver entradas de diretório vazias, indique as entradas de diretório vazias no novo cluster (Adicionar por este commit).Isso evita a travessia repetida de entradas de diretório, reduz o uso da CPU e melhora o desempenho da criação de arquivos e diretórios (especialmente em CPUs de baixo desempenho).”
Yuezhang testou o patch em uma plataforma NXP i.MX6 (placa de desenvolvimento i.MX6q SABER Lite) usando um cartão MicroSD Classe 4 e encontrou melhorias de 14,4% a 57,4%, dependendo de muitos novos arquivos criados usando o seguinte código:
for ((i=0;i<5;i++)); do
sync
time (for ((j=1;j<=1000;j++)); do touch file$((i*1000+j)); done)
done
E esses são os resultados:
Número de arquivos | Antes | Depois | Melhoria |
---|---|---|---|
1~1000 | 25.360s | 22.168s | 14,40% |
1001~2000 | 38.242s | 28,72s | 33,15% |
2001~3000 | 49.134s | 35.037s | 40,23% |
3001~4000 | 62.042s | 41.624s | 49,05% |
4001~5000 | 73.629s | 46,772s | 57,42% |
Basicamente, quanto mais arquivos forem criados, melhor será o desempenho relativo, e isso pode ser percebido pelo usuário, pois o novo patch economiza cerca de 27 segundos ao criar 5.000 arquivos nesta plataforma específica.