- O Realtime Linux foi oficialmente incluído como parte do kernel, o que agora deve permitir o uso de "Linux em tempo real" sem um sistema operacional de tempo real (RTOS) separado
- Se você quisesse usar "Linux em tempo real" em equipamentos de áudio, lasers industriais de soldagem ou até em sondas para Marte, essa opção já existia há muito tempo (assumindo que não fosse usar alternativas como o QNX)
- Universidades começaram a criar seus próprios kernels em tempo real no fim dos anos 1990
- O conjunto de patches chamado PREEMPT_RT existe pelo menos desde 2005
- Alguns aspectos do trabalho em tempo real, como o NO_HZ, já tinham sido incorporados ao kernel principal há muito tempo, tornando-se utilizáveis em data centers, computação em nuvem e qualquer coisa com muitos CPUs
Fusão do PREEMPT_RT na mainline
- É bastante provável que o PREEMPT_RT seja incorporado à mainline no kernel 6.12
- A aprovação final aconteceu enquanto Linus Torvalds participava do Open Source Summit Europe
- Torvalds escreveu o código original do
printk, uma ferramenta de depuração capaz de identificar o momento exato em que um processo falha, mas que introduz latências contrárias à computação em tempo real
- O blog Phoronix vem acompanhando o progresso do PREEMPT_RT rumo ao kernel, junto com as mudanças no
printk para suporte a thread/atomic console, algo importante para a entrada definitiva do tempo real na mainline
Impacto no Linux de desktop? Quase nenhum
- Fora casos de produção ou reprodução avançada de áudio (e mesmo isso é discutível), um kernel em tempo real não vai deixar janelas ou programas mais rápidos
- No entanto, a execução garantida e a latência no pior caso oferecidas pelo Linux em tempo real são muito úteis para sistemas que monitoram freios automotivos, controlam máquinas CNC e regulam sistemas complexos com múltiplos CPUs
- Incluir o PREEMPT-RT no kernel mainline facilita a manutenção de sistemas em tempo real, eliminando a necessidade de gerenciar patches fora da árvore
Impacto nos fornecedores especializados de soluções de SO em tempo real
- O Ubuntu começou a oferecer, em 2023, uma versão em tempo real da distribuição, mas isso exigia uma assinatura do Ubuntu Pro
- O Ubuntu oferecia essa versão com correções, patches, integração de módulos e testes para robótica, automação, Linux embarcado e outras exigências de tempo real
- Agora a situação deve mudar para fornecedores especializados em soluções profissionais de sistemas operacionais em tempo real voltadas a sistemas de missão crítica
A visão de Linus Torvalds
- No Kernel Summit de 2006, Torvalds disse: "Controlar um laser com Linux é loucura, mas todo mundo nesta sala é louco à sua própria maneira"
- Ele também afirmou: "Se você quiser usar Linux para controlar um laser industrial de soldagem, não há problema em usar o PREEMPT_RT"
- Cerca de 18 anos depois, Torvalds, a equipe do kernel e Steven Rostedt — mantenedor de longa data e defensor do tempo real — tornaram esse tipo de trabalho mais fácil
Opinião do GN⁺
- Espera-se que a fusão do Linux em tempo real na mainline amplie ainda mais o alcance do Linux e permita seu uso em diversos setores
- Em especial, o Linux deve passar a ser usado de forma ainda mais ampla em ambientes industriais, sistemas embarcados e robótica, onde o tempo real é essencial
- Ainda assim, ao adotar o Linux em tempo real, será preciso considerar compatibilidade de hardware, estabilidade do sistema e dificuldade de desenvolvimento
- Sistemas operacionais de tempo real já estabelecidos, como QNX, VxWorks e INTEGRITY, continuam competitivos em seus respectivos segmentos, então será necessário escolher de acordo com o contexto
- Com a inclusão futura do Linux em tempo real na mainline, espera-se que o ecossistema de desenvolvimento se fortaleça ainda mais e que o suporte a diferentes hardwares e softwares se amplie
4 comentários
Teria sido bom se houvesse ao menos uma explicação breve sobre o que é um sistema operacional de tempo real, o que é o PREEMPT_RT e qual é a relação dele com um sistema operacional de tempo real, mas quase não há detalhes, o que é uma pena T_T
A principal diferença entre Linux e um Real-Time Operating System (RTOS) está no comportamento em tempo real e determinístico. Essa diferença tem grande impacto nas restrições de tempo de resposta e na precisão com que o sistema precisa atuar, ajudando a entender em quais situações cada tipo de sistema operacional é mais adequado.
Linux: sistema operacional geralmente baseado em um kernel Linux modificado, usado em diversos hardwares embarcados. É amigável ao usuário e oferece vários recursos, como rede, sistema de arquivos e drivers, sendo adequado para aplicações complexas.
RTOS (Real-Time Operating System): sistema operacional que garante capacidade de resposta para processar tarefas dentro de um intervalo de tempo definido. O RTOS é usado principalmente em áreas em que a resposta em tempo real é crítica, como automação industrial, equipamentos médicos e sistemas de controle automotivo.
Características do Linux
Tempo de resposta não determinístico: o kernel Linux foi projetado principalmente com foco em throughput e eficiência, então não é possível prever com precisão quando uma tarefa será executada. Isso acontece porque o escalonador gerencia tarefas com diferentes prioridades, e processos complexos como operações de I/O e gerenciamento de memória também influenciam.
Limitações de preempção: um kernel Linux comum oferece alguns recursos de tempo real, mas nem todas as tarefas do kernel podem ser interrompidas imediatamente. Em especial, o kernel pode passar muito tempo sem responder a interrupções ou atrasar outras tarefas por estar executando trabalho crítico.
Variabilidade de latência: em ambientes com várias tarefas e diferentes operações do sistema, a latência pode variar de forma irregular. Isso pode ser afetado por vários fatores, como processamento da pilha de rede e I/O de disco.
Patch de tempo real (PREEMPT-RT): para melhorar a resposta em tempo real, é possível aplicar o patch PREEMPT-RT e aumentar a capacidade de tempo real do kernel. Ainda assim, isso não garante respostas perfeitamente previsíveis como em um RTOS.
Características do RTOS
Tempo de resposta determinístico: um RTOS é projetado para garantir que tarefas sejam concluídas dentro de um tempo específico. Como o trabalho precisa ser executado obrigatoriamente dentro do prazo definido, a resposta é muito consistente e previsível.
Tratamento rápido de interrupções: o RTOS lida com interrupções de forma rápida e prioritária e, na maioria dos casos, prioriza interrupções para que tarefas importantes sejam processadas rapidamente. Isso permite atender restrições de hard real-time.
Kernel pequeno e leve: o RTOS inclui apenas o conjunto mínimo de funções necessárias, sendo extremamente leve, e o escalonamento de tarefas é muito eficiente. Por isso, a carga do sistema é menor e as tarefas podem ser executadas de acordo com um timing projetado com precisão.
Escalonamento baseado em prioridade: as prioridades das tarefas são definidas com clareza, e trabalhos de maior prioridade podem ser executados imediatamente. Isso garante seu uso em ambientes mission-critical.
Baixa latência: o RTOS processa tarefas em tempo real com latência muito baixa. É adequado quando é necessária resposta rápida em nível de hardware.
Característica || Linux RTOS
============================================================
Tempo de resposta || não determinístico, com variabilidade determinístico, com tempo de resposta constante garantido
Tratamento de prioridade || há prioridades, mas sem garantia de tempo real prioridades claras,
|| com processamento prioritário para tarefas de maior prioridade
Tamanho do kernel || grande e com muitos recursos pequeno e leve
Latência || pode haver atraso por pilha de rede, I/O de disco etc. muito baixa, quase constante
Complexidade do sistema || adequado para executar aplicações complexas adequado para executar tarefas simples em tempo real
Áreas de aplicação || multimídia, rede etc. controle industrial, robótica, equipamentos médicos etc.
|| interfaces de usuário complexas
Conclusão
Embedded Linux é adequado para sistemas embarcados que exigem processamento de rede, aplicações multimídia e interfaces de usuário complexas. Com a aplicação de patches de tempo real, o desempenho em tempo real pode melhorar até certo ponto, mas ainda não se torna tão determinístico quanto um RTOS.
RTOS é essencial para aplicações mission-critical em que o tempo é fator crítico. Quando é necessário um tempo de resposta constante, especialmente em ambientes com restrições de tempo real, como controle de hardware, robôs industriais, setor aeroespacial e equipamentos médicos, utiliza-se RTOS.
Eu sempre tive dor de cabeça por causa do QNX e do VxWorks, mas agora qualquer um vai poder ter acesso de forma um pouco mais fácil.
Comentários do Hacker News
É uma grande conquista após anos de esforço
printkPREEMPT_RTna configuração do kernelprintkprecisa ser adotada em drivers reaisRecomenda construir e executar o utilitário
cyclictestpara ver o efeito do kernel em tempo realcyclictesté uma ferramenta importante ao trabalhar com tarefas em tempo real no LinuxSem o patchset RT, é possível rodar um ou dois instrumentos com latência de 3 ms
Compartilha a experiência de ter tentado usar Linux para trabalho em tempo real em meados dos anos 2000
Pergunta se há bons materiais sobre como a programação em tempo real é feita
Questiona a menção de que Torvalds escreveu o código original do
printkprintkIsso será de grande ajuda para a comunidade CNC
Acha isso muito legal
Pergunta quais são as desvantagens de usar um kernel em tempo real para usuários de desktop