13 pontos por GN⁺ 2024-09-20 | 4 comentários | Compartilhar no WhatsApp
  • 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

 
ilotoki0804 2024-09-23

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

 
tongji 2024-09-23

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.

  1. Visão geral de Linux e RTOS
    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.

  1. Diferenças em tempo real e comportamento determinístico
    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.

  1. Resumo das principais diferenças do ponto de vista de tempo real
    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.

 
helloppfm 2024-09-22

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.

 
GN⁺ 2024-09-20
Comentários do Hacker News
  • É uma grande conquista após anos de esforço

    • A maior parte do trabalho foi feita por Thomas Gleixner e sua equipe
    • Ele fundou a Linutronix, que agora pertence à Intel
    • Foi fornecido o link do pull request para a parte final do printk
    • Foi fornecido o link do pull request para PREEMPT_RT na configuração do kernel
    • Foi fornecido o link do log dos patches RT sobre o kernel v6.11
    • A nova infraestrutura do printk precisa ser adotada em drivers reais
    • O tamanho do patchset RT ficou muito menor do que antes
    • É um grande sinal de confiança por parte do Linus
    • Parabéns à equipe
  • Recomenda construir e executar o utilitário cyclictest para ver o efeito do kernel em tempo real

    • Ele mede e exibe a latência de interrupção de cada núcleo de CPU
    • Sem o patch de tempo real, a latência no pior caso pode chegar a dezenas de milissegundos
    • Com o patch de tempo real aplicado, a latência no pior caso cai para microssegundos de um dígito
    • Para obter baixa latência consistente, é preciso desativar os estados de economia de energia
    • cyclictest é uma ferramenta importante ao trabalhar com tarefas em tempo real no Linux
    • Explica a diferença de desempenho do sistema ao processar rádio definido por software (SDR)
    • Com o kernel em tempo real aplicado, o SDR funciona sem problemas mesmo executando GNOME e libreoffice
  • Sem o patchset RT, é possível rodar um ou dois instrumentos com latência de 3 ms

    • Com o patchset RT, é possível rodar 6 instrumentos com latência de 1 ms
    • Mesmo com dezenas de janelas do Chrome abertas e jogando um shooter 3D, não há problemas
    • Mostra uma grande diferença em relação a um escalonador comum de baixa latência
  • Compartilha a experiência de ter tentado usar Linux para trabalho em tempo real em meados dos anos 2000

    • Na época, o Linux em tempo real era bastante improvisado e ficava fora da árvore principal
    • Uma solução comum era hospedar o Linux como um processo dentro de um microkernel verdadeiramente em tempo real para alcançar comportamento em tempo real
    • O motivo de o Linux em tempo real ser pouco prático era a necessidade de garantir o tempo de execução de todas as seções não preemptíveis
    • Pergunta como esse requisito foi resolvido
    • Pergunta se o Linux oferece suporte a inversão de prioridade
  • Pergunta se há bons materiais sobre como a programação em tempo real é feita

    • Tem curiosidade sobre como verificar se um programa é realmente de tempo real
    • Pergunta se codificação em tempo real é diferente da programação comum
    • Tem curiosidade sobre o impacto das arquiteturas modernas de CPU na programação em tempo real
  • Questiona a menção de que Torvalds escreveu o código original do printk

    • Não concorda com a explicação sobre a ferramenta de depuração printk
  • Isso será de grande ajuda para a comunidade CNC

    • RT é essencial e torna as compilações muito mais fáceis
  • Acha isso muito legal

    • Pergunta como isso é "ativado"
    • Pergunta se é uma opção em tempo de compilação/boot ou se é algo que processos em execução no sistema podem solicitar para ter garantias de timeslice/latência
  • Pergunta quais são as desvantagens de usar um kernel em tempo real para usuários de desktop