Proposta correção do OOM Killer em sistemas de alta performance usando Linux

O desenvolvedor Mathieu Desnoyers enviou um patch para solucionar falhas no mecanismo de descarte de processos, por falta de memória, conhecido como OOM Killer. O problema surgiu em sistemas com mais de 250 threads, onde a contagem do uso real de memória apresentava erros de dezenas de megabytes em programas pequenos.

Essa distorção levava ferramentas de monitoramento a decisões equivocadas e prejudicava o próprio sistema operacional, que corria o risco de encerrar processos errados ou liberar menos memória do que o necessário durante crises de recursos.

A solução anterior, embora mais precisa para serviços com muitas threads, causava uma queda de desempenho de até 12% em processos de curta duração. Esta nova atualização busca o equilíbrio entre a exatidão estatística e a performance do sistema, com previsão de chegada nas versões estáveis do kernel entre as edições 6.20 e 7.0.

Como o Linux gerencia a falta crítica de memória?

O mecanismo utilizado pelo pinguim chama-se Out-Of-Memory Killer. Quando o sistema atinge o limite máximo de uso da RAM e do swap, este recurso entra em ação para evitar o travamento total da máquina.

A escolha do processo a ser encerrado baseia-se em um cálculo de pontuação chamado oom_score, que o kernel atribui a cada tarefa ativa. O objetivo principal do algoritmo é sacrificar o processo que libera a maior quantidade de memória com o menor prejuízo à estabilidade do sistema.

Processos que pertencem ao usuário root ou que realizam operações de entrada e saída de dados de forma bruta recebem uma proteção leve, enquanto tarefas que consomem muita memória e possuem pouco tempo de vida tornam-se alvos preferenciais.

O sistema também analisa a hierarquia de processos, de modo que o encerramento de um “pai” leve consigo os “filhos” para uma limpeza completa dos recursos. É possível interferir manualmente nessa lógica através do ajuste de um valor de correção, protegendo serviços essenciais ou facilitando o descarte de programas menos importantes.

O que muda com o nova patch?

O patch altera a estrutura de contagem do uso de memória no núcleo do sistema. Nos que tem centenas de núcleos, o método anterior acumulava pequenas imprecisões em cada processador, o que gerava erros de cálculo na casa dos megabytes, o que confundia o seletor de descarte de processos, que tomava decisões baseadas em dados irreais.

A solução introduz contadores hierárquicos que organizam a soma dos recursos de forma escalonada. Essa nova arquitetura garante que o sistema operacional tenha uma visão exata do consumo de cada programa sem sacrificar a velocidade de processamento.

Assim, o mecanismo de segurança recupera a precisão necessária para encerrar a tarefa correta em momentos de crise, enquanto mantém a agilidade em operações rápidas que versões anteriores da correção prejudicavam.