O ponto de chegada do suporte à preempção em tempo real no Linux
- O trabalho para adicionar suporte a tempo real ao Linux começou em 2004 e agora está entrando na fase final.
- O objetivo da preempção em tempo real é permitir que o processo de maior prioridade seja executado com a menor latência possível e, para isso, o kernel é tornado preemptível no maior número possível de situações.
- Esse trabalho resultou na reescrita de partes centrais do kernel e oferece benefícios que vão além dos casos de uso em tempo real.
A solução para o problema do printk()
- A função
printk(), usada no kernel para enviar mensagens ao console do sistema e aos logs, funciona de forma síncrona e não retorna até que a mensagem seja enviada a todos os destinos configurados.
- Os desenvolvedores de tempo real moveram a saída de
printk() para uma thread separada, tornando-a assíncrona, mas isso era apenas uma solução temporária.
- O problema do
printk(), que vem sendo trabalhado seriamente desde 2018, está sendo resolvido por meio de cerca de 300 patches, embora ainda restem alguns problemas complexos a resolver.
Perspectivas para a integração do código de preempção em tempo real à mainline
- Foi expressa a esperança de que a parte restante do código de preempção em tempo real seja integrada à mainline antes de completar 20 anos, no fim de 2024.
- Não houve mudanças recentes no código de
printk(), mas o código de handover foi alterado para permitir a atualização dos drivers de console um a um.
- O código foi alterado para que mensagens importantes sejam copiadas completamente para o buffer de mensagens antes que a primeira linha seja impressa, e para registrar primeiro as mensagens em um console seguro, evitando que o sistema caia por causa de drivers de console defeituosos.
Opinião do GN⁺
- O trabalho para adicionar suporte à preempção em tempo real ao kernel Linux está praticamente concluído, o que deve trazer grandes benefícios para sistemas que exigem processamento em tempo real.
- Tornar a função
printk() assíncrona melhora a responsividade do sistema e desempenha um papel importante para atingir os objetivos da preempção em tempo real.
- Este artigo mostra um avanço importante no desenvolvimento do kernel Linux e oferece conteúdo interessante para quem acompanha o desenvolvimento do kernel.
1 comentários
Opinião do Hacker News
Vantagens do microkernel QNX
Problemas de processamento em tempo real no Linux
Função de logging do kernel e casos reais de uso
Possibilidade de substituir combinações de hardware/software de tempo real
Distinção entre aplicações de tempo real "hard" e "soft"
Processamento em tempo real no kernel Linux e limites do hardware
Problemas do logging síncrono
Como garantir a responsividade de um processo específico
Recurso de preempção em tempo real do Linux e experiência passada
Impacto para usuários em geral