O EXT4 com IOmap chega ao Linux 7.4 com melhorias de até 35% em escrita e ganhos de IOPS. Entenda os benchmarks, regressões e como ativar o buffered_iomap.
O Linux 7.4 está prestes a marcar uma mudança significativa na história do sistema de arquivos mais utilizado do mundo Linux. O EXT4 — presente em servidores, desktops, dispositivos embarcados e data centers globais — está recebendo suporte opt-in para o IOmap buffered I/O, substituindo a antiga infraestrutura baseada em buffer_head.
Este artigo técnico explora o que isso significa na prática, com base nos benchmarks reais publicados pela equipe de desenvolvimento do kernel.
O que é IOmap e por que ele importa para o EXT4?
O IOmap é o framework moderno do kernel Linux para mapear offsets de arquivos para blocos de dispositivo. Diferente do buffer_head — uma abstração que existe desde os primórdios do Linux e que associa uma estrutura de dados a cada bloco individual — o IOmap é mais eficiente e integrado com os folios modernos do kernel.
A diferença fundamental está na gestão de memória. O buffer_head carrega um overhead significativo porque precisa manter uma estrutura de controle para cada bloco de dados em memória.
Em sistemas com muitos arquivos abertos ou grandes volumes de dados em cache, esse overhead se acumula e pressiona a memória do sistema.
O IOmap elimina essa necessidade ao trabalhar diretamente com folios, que são a unidade de gerenciamento de página preferida pelos desenvolvedores do kernel Linux há anos.
Zhang Yi, engenheiro da Huawei, liderou o esforço de conversão do caminho de I/O buffered do EXT4 para o IOmap.
O trabalho resultou em uma série de 31 patches que, após múltiplas iterações (da v1 à v7), foram finalmente incorporados ao branch dev do EXT4. Ted Ts'o, mantenedor histórico do EXT4, aplicou todos os patches, sinalizando que o código está pronto para o merge window do Linux 7.4.
Benchmarks: onde o IOmap ganha e onde perde
Os números são o aspecto mais revelador desta mudança. Zhang Yi publicou benchmarks extensos na cover letter da v6, testando diferentes tamanhos de bloco, modos de escrita e configurações de writeback.
Ganhos consistentes em escrita sequencial
Em testes de escrita com cache ativo (sem writeback imediato), o IOmap mostra ganhos expressivos conforme o tamanho do bloco aumenta:
- Blocos de 1K: praticamente neutro (~0%).
- Blocos de 4K: +4% de ganho.
- Blocos de 64K: +9% de ganho.
- Blocos de 1MB: +35% de ganho.
O cenário muda um pouco quando o writeback é acionado com limites de dirty pages configurados (dirty_background_bytes = 100MB, dirty_bytes = 200MB).
- Blocos de 1K: +2%.
- Blocos de 4K: +2%.
- Blocos de 64K: +30%.
- Blocos de 1MB: +15%.
Casos com regressão:
Nem tudo são vitórias. Em cenários específicos com RWF_DONTCACHE (quando a aplicação indica que não quer usar o page cache), o IOmap apresentou regressões:
- Blocos de 4K com DONTCACHE: -9%
- Outros cenários com DONTCACHE mostraram variações entre +3% e -1%
Essas regressões são importantes para workloads de bancos de dados e aplicações que gerenciam seu próprio cache. A equipe de desenvolvimento está ciente e trabalhando para otimizar esses casos.
Produto Recomendado
Sua paixão por Linux agora tem lugar na mesa.
Para devs, sysadmins e fãs do Ubuntu, a Caneca Linux B-Orange Ubuntu é o item perfeito para acompanhar o café da manhã ou aquele deploy de madrugada.
Com um design dark, estilo geek e a identidade do Ubuntu em destaque. Ideal para o uso próprio ou para presentear quem vive e respira tecnologia.
Caneca Linux B-Orange Ubuntu.
Clique no link e garanta a sua agora mesmo: -> https://link.amazon/B04XnP5oW
Eu ganho uma comissão quando você faz uma compra.
Ganhos em operações de baixa latência:
Como ativar o IOmap no EXT4
# Montagem com IOmap habilitado mount -o buffered_iomap /dev/sda1 /mnt/dados
/dev/sda1 /mnt/dados ext4 defaults,buffered_iomap 0 2
Para desabilitar explicitamente (útil quando se quer garantir o comportamento tradicional):
mount -o nobuffered_iomap /dev/sda1 /mnt/dados
Recursos ainda não suportados pelo caminho IOmap:
É crucial entender as limitações atuais. Quando uma inode usa um recurso não suportado, o EXT4 automaticamente faz fallback para o caminho buffer_head:
- Desfragmentação online.
- Dados inline.
- fsverify.
- fscrypt (criptografia de arquivos).
- Inodes sem extents.
- Modo data=journal.
Modo data=ordered (substituído por alocação de extents não escritos).
Checklist para avaliar o IOmap no seu ambiente
Antes de ativar o buffered_iomap em produção, considere este checklist:
□ Verifique se o kernel é 7.4 ou superior (ou um RC do 7.4).
□ Confirme que o sistema de arquivos não usa fscrypt (criptografia).
□ Verifique se não há inodes com dados inline (arquivos muito pequenos).
□ Confirme que data=journal não está em uso.
□ Teste com um subconjunto de dados não críticos primeiro.
□ Monitore latência e throughput com fio ou ioping.
□ Compare com baseline do buffer_head nos mesmos workloads.
□ Documente os resultados para decidir sobre migração futura.
□ Esteja preparado para reverter com nobuffered_iomap se necessário.
□ Acompanhe os patches de correção nos kernels seguintes.
Perguntas frequentes (FAQ)
1. O IOmap vai substituir completamente o buffer_head no EXT4?
Não no curto prazo. O IOmap é opt-in no Linux 7.4 e faz fallback automático para buffer_head quando encontra recursos não suportados. A transição completa levará vários ciclos de kernel, conforme os recursos pendentes forem implementados.
2. O IOmap funciona com criptografia de arquivos (fscrypt)?
Ainda não. Quando um inode usa fscrypt, o EXT4 automaticamente usa o caminho buffer_head. A implementação de suporte a fscrypt no caminho IOmap é um dos itens planejados para futuras versões.
3. Vale a pena ativar o IOmap em produção agora?
Depende do workload. Se sua aplicação faz escrita sequencial grande (blocos de 64K a 1MB) e não usa fscrypt ou dados inline, os ganhos podem justificar o teste em produção. Para workloads com RWF_DONTCACHE ou que dependem de recursos não suportados, é melhor aguardar as próximas versões.
Conclusão e próximo passo
O EXT4 com IOmap marca um momento importante na evolução do sistema de arquivos. Os ganhos de até 35% em escrita sequencial e a melhoria na eficiência de memória são razões concretas para acompanhar essa mudança de perto.
Sua ação agora: Baixe o checklist completo de avaliação do IOmap (disponível na seção de recursos do nosso site), teste em um ambiente controlado e compartilhe seus resultados nos comentários. Se este artigo foi útil, compartilhe com sua equipe de infraestrutura.

Nenhum comentário:
Postar um comentário