Páginas

▼

quinta-feira, 5 de novembro de 2026

Linux 7.5 e o FAT32: Por que até 4,06x mais Rápido Importa (e muito) para o Seu Dia a Dia

 

O Linux 7.5 promete FAT32 até 4,06x mais rápido com escritas síncronas em lote. Entenda o patch de Matheus Alves de Almeida, o impacto real e quando chega ao kernel.


O FAT32 é um daqueles sistemas de arquivos que parecem teimosos: décadas de idade, limitações conhecidas, mas onipresente em pendrives, cartões SD, câmeras, dispositivos embarcados e partições de inicialização UEFI. 

A compatibilidade sempre foi sua maior virtude — e, durante muito tempo, também seu preço em desempenho, especialmente em cenários de montagem síncrona, onde o kernel precisa garantir que cada alteração chegue fisicamente ao armazenamento antes de considerar a operação concluída.

A boa notícia é que o kernel Linux não parou de olhar para ele. Depois de uma melhoria expressiva já presente no Linux 7.4 — que chegou a acelerar a pré-alocação de arquivos em até 265x —, uma nova série de patches promete atacar um gargalo ainda mais específico: a sincronização das cópias da tabela de alocação de arquivos (FAT) em montagens síncronas. 

O resultado demonstrado chega a 4,06x de ganho em um dos cenários mais exigentes.


O problema: buffer por buffer, uma espera após a outra


O driver FAT do Linux mantém, por segurança, múltiplas cópias da tabela FAT. Sempre que uma informação de alocação é modificada, o kernel precisa refletir essa mudança nas cópias correspondentes. 

Em condições normais de montagem assíncrona, esse processo é razoavelmente eficiente. O problema aparece quando o sistema de arquivos é montado no modo síncrono.

Nesse modo, o Linux tenta assegurar que as modificações cheguem ao meio físico antes de dar a operação como concluída. Até então, a função fat_mirror_bhs() sincronizava os buffers um de cada vez: escrevia um buffer, esperava a conclusão, escrevia o próximo, esperava novamente. 

Esse comportamento serializava toda a E/S e impedia que a camada de blocos aproveitasse a capacidade dos dispositivos modernos de processar várias operações agrupadas.

Em outras palavras, o hardware não era necessariamente o vilão. O kernel simplesmente o utilizava de uma forma desnecessariamente serializada.


A solução: agrupar as escritas e melhorar a submissão


O desenvolvedor Matheus Alves de Almeida propôs uma abordagem em dois passos:

1. Agrupar as escritas síncronas no espelho da FAT: em vez de sincronizar buffer por buffer, a função fat_mirror_bhs() passou a reunir vários buffers sujos e usar fat_sync_bhs() para sincronizá-los de uma só vez. Também foi adicionado um helper, fat_brelse_array(), para liberar o conjunto de buffers de forma adequada após a operação.

2. Melhorar a submissão em fat_sync_bhs(): o código passou a utilizar um plug na camada de blocos, permitindo que várias requisições fossem agrupadas antes de serem efetivamente enviadas ao dispositivo. Além disso, a dica REQ_SYNC passou a ser repassada, alinhando a intenção de escrita síncrona com o comportamento esperado pela camada de blocos.

Essas mudanças, embora cirúrgicas, eliminam a serialização artificial que penalizava as montagens síncronas.


Os números: até 4,06x em cenários reais de benchmark


Os testes foram realizados em ambiente QEMU/KVM com um dispositivo virtio-blk configurado com cache=directsync, o que impõe condições particularmente rigorosas de persistência. 

Cada resultado representa a média aritmética de 10 amostras, e o cenário avaliado utilizou 16 arquivos e a chamada fallocate() com a flag FALLOC_FL_KEEP_SIZE.

Os ganhos variam conforme o tamanho do arquivo e o tamanho do cluster, mas o pico é expressivo:


Fonte: Dados de benchmark apresentados por Matheus Alves de Almeida na série de patches.


Um detalhe importante: montagens assíncronas não apresentaram mudança perceptível de desempenho nos testes. Ou seja, o ganho é direcionado exatamente ao cenário que mais sofria — as montagens síncronas —, sem introduzir regressões no caso de uso mais comum


Onde esse patch está agora e quando deve chegar


O patch já está no mm-everything, o ramo de testes mantido por Andrew Morton que reúne alterações candidatas ao kernel antes de seguirem para a janela de mesclagem principal.

Considerando o calendário do kernel e o fato de a série já ter passado pelo crivo do mantenedor do FAT, OGAWA Hirofumi — que deu seu Acked-by —, a expectativa é de que a otimização seja integrada ao Linux 7.5, com chegada prevista para o início de 2027.

Vale notar que o Linux 7.4 já recebeu uma otimização anterior do mesmo desenvolvedor, focada no caminho de alocação de clusters. 

Naquela ocasião, a mudança evitou uma enxurrada de alocações de um único cluster ao crescer um arquivo com FALLOC_FL_KEEP_SIZE, resultando em ganhos que chegaram a 265x em cenários específicos. 

O patch de 4,06x é, portanto, mais um passo em uma sequência de melhorias que devolve competitividade a um sistema de arquivos que continua relevante.


Por que isso importa para além do FAT32


À primeira vista, pode parecer que otimizar o FAT32 é mexer em algo “do passado”. Mas a realidade é que o FAT32 segue sendo a linguagem franca de interoperabilidade entre sistemas operacionais e uma enormidade de dispositivos. 

Pendrives, cartões de memória de câmeras, equipamentos industriais, sistemas embarcados e partições de boot UEFI frequentemente dependem dele.

Quando o kernel melhora o desempenho de montagens síncronas no FAT32, o impacto vai além de benchmarks:


Dispositivos removíveis ganham operações de escrita mais previsíveis e rápidas.

Sistemas embarcados e industriais que montam FAT32 de forma síncrona para garantir integridade de dados passam a sofrer menos com o custo de persistência.

Usuários que alternam entre Linux e Windows em pendrives e cartões SD percebem menos lentidão em cópias e pré-alocações.

 

A lição técnica também é valiosa: agrupar operações de E/S e alinhar as dicas de sincronização com a camada de blocos é uma estratégia poderosa para extrair desempenho de hardware moderno, mesmo em drivers antigos. 

O patch não torna o armazenamento físico mais rápido; ele simplesmente para de desperdiçar o paralelismo disponível.


Checklist


Checklist rápido: o que você precisa saber sobre o FAT32 no Linux 7.5


□ O FAT32 está presente em pendrives, cartões SD, câmeras, dispositivos embarcados e partições UEFI.

□ Montagens síncronas exigem que cada alteração chegue ao meio físico antes de a operação ser concluída.

□ O driver FAT mantém múltiplas cópias da tabela de alocação (FAT) por segurança.

□ Antes do patch, fat_mirror_bhs() sincronizava buffer por buffer, serializando a E/S.

□ A otimização agrupa escritas com fat_sync_bhs() e melhora a submissão com plug e REQ_SYNC.

□ O pico demonstrado é de 4,06x em cenário com arquivos de 256 MiB e clusters de 512 B.

□ Montagens assíncronas não apresentaram regressão perceptível.

□ O patch está no mm-everything de Andrew Morton e deve chegar ao Linux 7.5 em 2027.

□ A série recebeu Acked-by de OGAWA Hirofumi, mantenedor do FAT.

□ O Linux 7.4 já havia recebido uma otimização anterior do mesmo autor, com ganhos de até 265x.


Questionário rápido 

1. Por que a montagem síncrona do FAT32 era mais lenta antes do patch?

R: Porque o driver sincronizava os buffers do espelho da FAT um de cada vez, serializando a E/S e impedindo que a camada de blocos agrupasse as operações.


2. Qual é o ganho máximo demonstrado nos benchmarks com o novo patch?

R: Até 4,06x em um cenário com 16 arquivos de 256 MiB e clusters de 512 B, em ambiente QEMU/KVM com virtio-blk e cache=directsync.


3. Em qual versão do kernel o patch deve chegar e quem é o mantenedor do FAT que deu suporte à mudança?

R: A expectativa é de que chegue ao Linux 7.5, em 2027. O mantenedor do FAT, OGAWA Hirofumi, deu Acked-by à série.


Conclusão


O FAT32 pode não ser o sistema de arquivos mais moderno do mundo, mas continua sendo uma peça indispensável na infraestrutura de compatibilidade. A otimização de Matheus Alves de Almeida mostra que ainda há espaço para ganhos expressivos com mudanças cirúrgicas e bem fundamentadas. 

Ao agrupar escritas síncronas e melhorar a submissão à camada de blocos, o kernel deixa de desperdiçar o paralelismo do hardware e entrega até 4,06x de desempenho em um cenário que realmente importa para quem depende de persistência garantida. 

Com o patch já no mm-everything de Andrew Morton e o aval de OGAWA Hirofumi, o Linux 7.5 tem tudo para coroar essa evolução no início de 2027. Enquanto isso, vale acompanhar as melhorias que já chegaram ao 7.4 e entender como elas impactam o seu uso cotidiano — porque, goste ou não, o FAT32 ainda vai aparecer na sua vida.

Nenhum comentário:

Postar um comentário