Um ajuste no kernel Linux pode mudar o desempenho de jogos em PCs antigos

Um ajuste no kernel Linux pode mudar o desempenho de jogos em PCs antigos

Há mudanças no Linux que chegam com alarde. Outras avançam discretamente em discussões técnicas e listas de e-mail e, ainda assim, podem ter impacto direto no uso cotidiano. Uma proposta recente envolvendo o escalonador do kernel parece pertencer a essa segunda categoria.

À primeira vista, trata-se de mais uma série de patches com nome pouco convidativo: “sched: Flatten the pick”. Por trás disso, porém, está uma tentativa de resolver um problema antigo e estrutural na forma como o Linux decide qual tarefa o processador deve executar a cada instante, uma decisão que, no limite, pode definir se um jogo roda suavemente ou se torna praticamente injogável.

O problema que aparece quando tudo compete ao mesmo tempo

No Linux, o escalonador é responsável por distribuir o tempo de CPU entre diferentes processos. Isso inclui desde tarefas em segundo plano até aplicações mais exigentes, como jogos. Em teoria, esse sistema é altamente eficiente. Na prática, há situações em que ele não se comporta tão bem.

Um desses cenários envolve o uso de cgroups, mecanismo que organiza processos em grupos e define prioridades coletivas. O problema, como aponta o desenvolvedor do kernel Peter Zijlstra, está na forma como o “peso” desses grupos é distribuído entre os núcleos do processador.

Hoje, esse peso é fragmentado entre todas as CPUs disponíveis. Em máquinas com muitos núcleos — algo cada vez mais comum, isso significa que cada CPU recebe uma fração muito pequena da prioridade total. O efeito é uma perda de eficiência na hora de decidir qual tarefa deve rodar primeiro.

Em configurações mais extremas, essa fragmentação pode comprometer o comportamento do sistema como um todo, especialmente quando múltiplos processos competem intensamente por recursos.

A tentativa de simplificar o que ficou complexo demais

A proposta de Zijlstra atua em duas frentes. A primeira tenta lidar com a distribuição de peso entre CPUs, evitando distorções que surgem quando a carga de trabalho se concentra em apenas um núcleo. A segunda, e mais significativa, mexe diretamente na lógica de seleção de tarefas.

Hoje, o escalonador percorre múltiplos níveis hierárquicos para decidir qual processo será executado. A ideia do patch é “achatar” essa hierarquia, reunindo todas as tarefas em um único nível lógico no momento da escolha. Isso reduz a complexidade da decisão e, potencialmente, melhora a responsividade do sistema.

Não é uma mudança trivial. O custo computacional de manter essas informações atualizadas continua existindo, mas o momento crítico, a escolha da próxima tarefa, se torna mais direto.

Para testar a hipótese, Zijlstra recorreu a um cenário deliberadamente desfavorável: um PC antigo, equipado com um Intel Core i7-2600K e uma AMD Radeon RX 580, rodando o jogo Shadows: Awakening via Lutris com Proton.

Para aumentar a pressão sobre o sistema, ele adicionou processos artificiais consumindo CPU, uma simulação razoável do que acontece em um desktop comum, com navegador aberto, apps em segundo plano e atualizações rodando. O resultado inicial foi previsível: o jogo se tornou praticamente injogável.

A mudança veio ao reduzir o tempo de execução (time slice) das tarefas para um décimo do padrão. Com isso, o sistema passou a alternar mais rapidamente entre processos, evitando que qualquer tarefa monopolizasse a CPU por muito tempo.

Os números chamam atenção: o FPS mínimo saltou de 3,8 para 20,6, enquanto o tempo médio de frame caiu quase pela metade. Mais importante do que os picos de desempenho foi a consistência, fator fundamental para a sensação de fluidez em jogos.

Entre promessa e realidade

Embora o experimento tenha sido conduzido em um ambiente controlado, ele não está tão distante da realidade. Em uso cotidiano, é comum que aplicações concorram por CPU de forma semelhante: um mensageiro como o Discord, um navegador com várias abas abertas, serviços em segundo plano.

Em máquinas mais antigas, essa disputa tende a ser mais perceptível. Mas, curiosamente, o problema não desaparece em hardware moderno. Pelo contrário: quanto maior o número de núcleos, maior o impacto da fragmentação de peso descrita pelo desenvolvedor.

Isso significa que, se a proposta evoluir e chegar ao kernel principal, os ganhos podem se estender também a sistemas mais recentes, especialmente em cenários multitarefa. Por enquanto, a mudança ainda está em discussão. A série de patches não foi incorporada ao kernel oficial e deve passar por revisões antes de qualquer decisão final.

Se essa proposta seguir adiante, talvez não seja necessário trocar de hardware para extrair mais desempenho em jogos. Às vezes, basta que o sistema operacional tome decisões um pouco melhores e mais rápidas.

Ajude o Diolinux a seguir independente e crescente: seja membro Diolinux Play e tenha acesso a benefícios exclusivos!