O desenvolvedor Caleb Sander Mateos, da Pure Storage, enviou uma série de patches para o subsistema NVMe que altera a forma como o sistema lida com a granularidade de descarte (discard_granularity). A mudança, integrada ao ciclo do Kernel Linux 7.0-rc1, permite que o sistema operacional identifique com precisão os limites preferenciais de hardware para operações de limpeza de dados, resultando em um gerenciamento de armazenamento mais eficiente e potencialmente aumentando a vida útil de drives modernos.
O que isso significa na prática
Quando você deleta um arquivo em um SSD, o sistema operacional envia um comando chamado “discard” (ou TRIM) para informar ao drive que aqueles blocos não são mais necessários. Até agora, o Kernel Linux geralmente assumia que essa operação deveria ser alinhada ao tamanho do bloco lógico do disco. No entanto, SSDs modernos possuem estruturas internas muito maiores. Com este patch, o Kernel Linux 7.0-rc1 passa a consultar campos específicos do hardware (NPDG e NPDA) para entender a “vontade” do fabricante. Na prática, isso evita que o SSD precise realizar operações extras de limpeza interna desnecessárias, o que reduz a latência de escrita e o desgaste prematuro das células de memória flash.
Vale lembrar que a configuração correta do TRIM e do descarte de blocos é um pilar fundamental para quem busca a vida útil máxima do hardware. Como já mostramos anteriormente no SempreUpdate, existem pelo menos 7 estratégias essenciais para otimizar o desempenho de SSDs NVMe no Linux que podem ser aplicadas hoje mesmo enquanto você aguarda a nova versão do kernel.
Detalhes da implementação
A implementação técnica envolve o ajuste do driver NVMe para ler a estrutura Identify Namespace de forma mais detalhada, conforme as especificações NVMe 2.0 e 2.1. O patch introduz suporte para os campos NPDGL (Namespace Preferred Deallocate Granularity Large) e NPDAL (Namespace Preferred Deallocate Alignment Large), que são versões de 32 bits capazes de descrever limites de descarte muito maiores do que os campos de 16 bits anteriores suportavam.
A lógica de cálculo foi movida para a função nvme_update_disk_info, garantindo que, sempre que o hardware relatar capacidades de performance otimizada (bits OPTPERF), o Kernel Linux priorize esses valores em vez de usar padrões genéricos.
Curiosidades e bastidores da discussão
A discussão na LKML revelou a complexidade de interpretar as especificações técnicas da NVMe. O renomado mantenedor Christoph Hellwig chegou a descrever parte da lógica de decodificação dos novos campos como “magia negra” (black magic), devido à forma confusa como a especificação organiza os valores baseados em matrizes e índices zero. Houve também um momento de revisão crítica quando Keith Busch apontou uma redundância de código no quinto patch da série, o que levou Mateos a refinar a lógica de verificação de limites para evitar cálculos duplicados no subsistema de blocos.
Quando isso chega no meu PC?
Como o código já foi analisado e está presente na árvore de desenvolvimento do Kernel Linux 7.0-rc1, a expectativa é que a versão estável seja lançada em meados de maio de 2026. Usuários de distribuições Rolling Release, como Arch Linux e openSUSE Tumbleweed, devem receber a novidade poucos dias após o lançamento estável. Para usuários de servidores e desktops de ciclo longo (Ubuntu LTS, Fedora), a tecnologia deve aparecer nas atualizações de stack de kernel previstas para o segundo semestre de 2026.