O desenvolvedor Kirill A. Shutemov, da Intel, enviou uma proposta de patch para o Kernel Linux 7.0 que visa desacoplar o conceito de tamanho de página. A mudança permite que o sistema utilize páginas de 64 KB (ou 16 KB) para alocações internas, enquanto mantém a compatibilidade de mapeamento de 4 KB para os aplicativos. O objetivo principal é aumentar a escalabilidade em servidores que gerenciam múltiplos terabytes de memória RAM.
O que isso significa na prática
Atualmente, o Kernel Linux utiliza um tamanho padrão de 4 KB para quase tudo o que envolve memória no x86. Em máquinas modernas com volumes massivos de RAM, gerenciar bilhões dessas pequenas unidades cria uma sobrecarga imensa. O patch permite que o sistema operacional trabalhe com blocos maiores “por baixo do capô”. Para o usuário, isso resulta em um sistema mais rápido para alocar memória e uma redução significativa no desperdício de RAM que o próprio kernel consome para se organizar. No entanto, o custo é um aumento no consumo de memória para arquivos muito pequenos, que passarão a ocupar pelo menos 64 KB no cache.
Detalhes da implementação
A mudança técnica central reside na separação da macro PAGE_SIZE em dois valores distintos: o PTE_SIZE, que define a granularidade do mapeamento no espaço de endereçamento virtual, e o PG_SIZE, que define o tamanho da alocação no alocador buddy. No subsistema de memória (MM), os PFNs continuam utilizando unidades de PTE_SIZE, mas o cache de arquivos e as operações de I/O passam a operar em unidades de PG_SIZE.
O patch exige uma reformulação profunda no tratamento de falhas de página (page faults) e nas VMAs, especialmente para lidar com casos onde o início de uma área de memória não está perfeitamente alinhado com o novo tamanho de página maior.
Curiosidades e bastidores da discussão
A recepção na LKML foi uma mistura de nostalgia e cautela técnica. Peter Zijlstra relembrou que propostas similares foram discutidas há quase duas décadas, em 2007. Dave Hansen trouxe uma análise pragmática sobre o desperdício de memória: ao testar em uma árvore do código-fonte do kernel, o cache de páginas subiu de 11 GB para 16 GB devido ao arredondamento de arquivos pequenos para 64 KB. A discussão agora foca em determinar se a economia de memória nas estruturas struct page (que pode chegar a centenas de gigabytes em servidores gigantes) compensa esse inchaço no cache de arquivos para o uso geral.
Quando isso chega no meu PC?
O patch está em estágio de Prova de Conceito (PoC) e foi enviado como um tópico para discussão no LSF/MM/BPF Summit. Como a mudança afeta o cerne do gerenciamento de memória, não deve ser integrada de imediato na versão estável. A expectativa é que, se aprovada, a base tecnológica comece a aparecer de forma experimental no Kernel Linux 7.0, mas a adoção em distribuições focadas em desktop como Ubuntu ou Fedora pode levar mais tempo, dado que o benefício é maior para datacenters do que para usuários domésticos.