Em 15 de novembro de 2024, a equipe do GNOME implementou uma mudança significativa no compositor Mutter, responsável pela renderização do GNOME Shell. A prioridade da thread do Kernel Mode Setting (KMS) foi ajustada de “tempo real” para “alta prioridade”, visando solucionar uma série de falhas que estavam comprometendo a estabilidade do sistema. Essa alteração visa evitar que o processo do GNOME Shell fosse encerrado ou que o sistema travasse durante o uso do ambiente de desktop.
O motivo da mudança: resolução de falhas críticas
A principal motivação para a mudança foi a persistência de falhas relacionadas ao KMS, que afetavam usuários em diferentes cenários, principalmente em máquinas virtuais QEMU e durante o uso de OpenGL. Entre os problemas mais recorrentes estavam:
- Perda de contexto OpenGL;
- Travamentos aleatórios do GNOME Shell;
- Encerramento inesperado do GNOME Shell durante ações aleatórias.
Esses problemas foram relatados durante o último ano, e muitos estavam relacionados ao uso da prioridade “tempo real” para a thread KMS, que não era ideal em certos cenários de carga do sistema, resultando em falhas severas como o SIGKILL do processo.
O que muda com a nova abordagem de alta prioridade?
A principal modificação é a transição de um agendamento em tempo real para um agendamento de alta prioridade para a thread KMS. Como Jonas Ådahl, desenvolvedor da Red Hat, explicou, enquanto o agendamento em tempo real poderia resultar em problemas como o SIGKILL (quando o kernel matava o processo devido a uma execução prolongada no drmModeAtomicCommit()
), a nova configuração de alta prioridade não corre esse risco.
Embora o agendamento em tempo real oferecesse benefícios em termos de latência, a nova configuração de alta prioridade demonstrou um comportamento equivalente em termos de atrasos no envio de tarefas e latência no commit, mas sem o risco de interrupções indesejadas.
Testes de desempenho e estabilidade
Os testes realizados antes da implementação mostraram que a mudança não afetou negativamente o desempenho do sistema. Durante os testes, que incluíram tarefas como mover rapidamente o cursor do mouse enquanto o sistema estava compilando o Mesa em segundo plano, foi possível observar que a nova configuração manteve a estabilidade sem gerar grandes variações na latência ou no tempo de execução.
Comparação entre as abordagens:
A tabela a seguir mostra os resultados dos testes realizados antes e depois da alteração na prioridade da thread:
- Medidas de latência (em microsegundos) e duração das tarefas mostraram que, embora a configuração de alta prioridade tenha demonstrado uma leve variação, ela foi suficientemente estável para garantir que o sistema não falhasse sob cargas pesadas, como o processo de compilação em segundo plano.
Impacto para os usuários
Essa mudança terá um impacto direto na experiência dos usuários, principalmente aqueles que utilizam o GNOME Shell em ambientes com alta carga, como em máquinas virtuais ou durante atividades intensivas como compilações de software. A nova abordagem proporciona um sistema mais estável, corrigindo falhas críticas sem comprometer a performance geral. Isso também elimina uma série de bugs abertos, como o GNOME Shell sendo morto inesperadamente e perda de contexto gráfico.
Conclusão
A mudança no agendamento da thread KMS representa um avanço importante para a estabilidade do GNOME, atendendo a uma série de problemas que afetavam o GNOME Shell. A transição para uma prioridade alta garante a continuidade do bom desempenho sem comprometer a segurança ou estabilidade do sistema, refletindo o compromisso da equipe em aprimorar a experiência do usuário e evitar falhas graves.