Estabilidade melhorada

GNOME Mutter altera prioridade de thread KMS para estabilidade aprimorada

Logo do GNOME com um fundo laranja, mostrando a pata estilizada do mascote do GNOME e o nome GNOME embaixo

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.