Otimização no Kernel Linux 7.4 reduz o tempo de boot

Otimização no Kernel Linux 7.4 reduz o tempo de boot

O ciclo de desenvolvimento do futuro Kernel Linux 7.4 acaba de registrar um refinamento de código que chamou a atenção de toda a comunidade de software livre: uma melhoria pontual no alocador de memória inicial reduziu o tempo de inicialização em ambientes com intensa fragmentação, como grandes servidores, de 268 segundos (quase quatro minutos e meio) para 50 milissegundos (0,05 segundos).

O conjunto de patches foi submetido pelo engenheiro Tarun Sahu e publicado nos arquivos da lista de discussão oficial do Kernel Linux (LKML). A mudança ataca diretamente uma das maiores dores de cabeça enfrentadas por servidores de computação em nuvem em hiperescala, estações de trabalho profissionais com arquitetura NUMA e supercomputadores munidos de múltiplos terabytes de memória RAM.

O gargalo oculto no memblock.c

Durante a fase mais precoce da inicialização do kernel — quando o gerenciador de páginas principal (page allocator) sequer começou a operar, o Linux depende de um alocador transitório chamado Memblock. Sua função primordial é mapear quais blocos de memória física estão livres e quais estão reservados pelo firmware, BIOS ou UEFI.

Tradicionalmente, a verificação e a adição dessas faixas de endereços utilizavam uma busca puramente linear. Em desktops e notebooks domésticos comuns com 16 GB ou 32 GB de memória, essa varredura sequencial passava completamente despercebida, levando frações mínimas de tempo.

No entanto, com a chegada de tecnologias de ponta como o recurso Kernel Handover (KHO), projetado para preservar o estado de instâncias de máquinas virtuais na memória enquanto o kernel é reiniciado a quente, o número de blocos e folhas de memória desconexas aumentou muito. Com milhares de intervalos fragmentados, a busca linear do Memblock transformava o boot em um pesadelo computacional, travando a CPU por minutos.

A eficiência matemática da busca binária

A solução desenvolvida para o Linux 7.4 reformulou funções críticas como memblock_add_range e memblock_isolate_range, substituindo a iteração linear por uma busca binária sobre as regiões previamente ordenadas da tabela de memória física.

Os ganhos práticos revelados nos testes de regressão foram expressivos:

  • Complexidade reduzida: A pior hipótese de varredura caiu para O(N log N).
  • Queda vertiginosa de latência: O tempo de processamento das faixas reservadas despencou de 268,4s para 0,051s.
  • Reinicializações instantâneas: Acelerou drasticamente tarefas de manutenção com kexec e migrações a quente de infraestruturas em nuvem.

O avanço na gestão inteligente da memória se une a outras inovações recentes que vêm transformando o setor, a exemplo do novo mecanismo CRAM da Meta para compressão de RAM no kernel. A alteração já foi acolhida na árvore do mantenedor Andrew Morton e estará disponível para todos os usuários assim que o Kernel 7.4 atingir a fase estável.

Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter!