13P by neo 2달전 | favorite | 댓글 4개
  • Realtime Linux가 커널의 일부로 공식 포함되어, 이제 실시간 운영체제(RTOS) 없이 "실시간 리눅스" 사용 가능해 질 것
  • 오디오 장비, 산업용 용접 레이저, 화성 탐사선 등에 "실시간 Linux"를 사용하고 싶다면 오래전부터 그 옵션이 있었음 (QNX 등의 대안을 사용하지 않는다는 가정 하에)
  • 대학들이 1990년대 후반부터 자체 실시간 커널을 만들기 시작함
  • PREEMPT_RT라는 패치 세트가 적어도 2005년부터 존재해 왔음
  • NO_HZ와 같은 실시간 작업의 일부 측면은 오래전에 메인라인 커널로 이동되어 데이터 센터, 클라우드 컴퓨팅 또는 많은 CPU가 있는 모든 것에서 사용할 수 있게 되었음

PREEMPT_RT의 메인라인 병합

  • 6.12 커널에서 PREEMPT_RT가 메인라인에 병합될 가능성이 높음
  • Linus Torvalds가 Open Source Summit Europe에 참석하는 동안 최종 승인이 이루어짐
  • Torvalds는 프로세스가 충돌하는 정확한 순간을 찾아낼 수 있지만 실시간 컴퓨팅에 반하는 지연 시간을 도입하는 디버깅 도구인 printk에 대한 원래 코드를 작성함
  • Phoronix 블로그는 실시간 메인라이닝에 중요한 스레드/원자 콘솔 지원을 위한 printk 변경 사항과 함께 PREEMPT_RT의 커널로의 진행 상황을 추적해 왔음

데스크톱 Linux에 미치는 영향? 별로 없음

  • 고급 오디오 제작이나 복제를 넘어서는 (그것조차도 논란의 여지가 있음) 실시간 커널은 윈도우를 더 빠르게 만들거나 프로그램을 더 빠르게 만들지는 않을 것임
  • 그러나 실시간 Linux가 제공하는 보장된 실행과 최악의 경우 지연 시간은 자동차 브레이크를 모니터링하고, CNC 기계를 안내하며, 복잡한 다중 CPU 시스템을 규제하는 시스템에 매우 유용함
  • PREEMPT-RT를 메인라인 커널에 포함시키면 실시간 시스템을 유지 관리하는 것이 더 쉬워지며, 트리 외부 패치를 관리할 필요가 없어짐

전문 실시간 OS 솔루션 제공업체에 미치는 영향

  • Ubuntu는 2023년에 실시간 버전의 배포판을 제공하기 시작했지만 Ubuntu Pro 구독이 필요했음
  • Ubuntu는 로보틱스, 자동화, 임베디드 Linux 및 기타 실시간 요구 사항에 대한 수정, 패치, 모듈 통합 및 테스트를 제공하면서 실시간 릴리스를 제공했음
  • 이제까지 미션 크리티컬 시스템을 위한 전문 실시간 OS 솔루션 제공업체에게는 상황이 달라질 것임

Linus Torvalds의 견해

  • 2006년 Kernel Summit에서 Torvalds는 "Linux로 레이저를 제어하는 것은 미친 짓이지만, 이 방에 있는 모든 사람은 자신만의 방식으로 미쳤다"고 말했음
  • "Linux를 사용하여 산업용 용접 레이저를 제어하고 싶다면 PREEMPT_RT를 사용하는 것에 문제가 없다"고 말했음
  • 약 18년 후, Torvalds와 커널 팀, 그리고 실시간의 장기 유지 관리자이자 챔피언인 Steven Rostedt는 그러한 종류의 일을 더 쉽게 만들었음

GN⁺의 의견

  • 실시간 Linux의 메인라인 병합은 Linux의 적용 범위를 더욱 넓히고 다양한 분야에서 활용될 수 있게 해줄 것으로 기대됨
  • 특히 실시간성이 중요한 산업 현장이나 임베디드 시스템, 로봇 공학 등에서 Linux가 더욱 널리 사용될 것으로 보임
  • 다만 실시간 Linux를 도입할 때는 하드웨어 호환성, 시스템 안정성, 개발 난이도 등을 고려해야 할 것임
  • 기존의 실시간 OS인 QNX, VxWorks, INTEGRITY 등도 여전히 해당 분야에서 경쟁력을 갖고 있어, 상황에 맞는 선택이 필요할 것으로 보임
  • 앞으로 실시간 Linux가 메인라인에 포함됨에 따라 개발 생태계가 더욱 활성화되고, 다양한 하드웨어와 소프트웨어의 지원 범위가 넓어질 것으로 기대됨

실시간 운영체제가 뭔지, PREEMPT_RT가 뭐고 실시간 운영체제와 어떤 관련성이 있는지 간략하게라도 설명이 들어갔으면 좋았을 것 같은데 디테일이 거의 나와있지 않아서 아쉽네요 ㅠ

Linux와 Real-Time Operating System(RTOS) 간의 주요 차이점은 실시간성과 결정론적 동작에 있습니다. 이 차이는 시스템이 응답해야 하는 시간 제약과 정확성에 큰 영향을 미치며, 각각의 OS가 어떤 상황에서 적합한지에 대한 이해를 돕습니다.

  1. Linux와 RTOS의 개요
    Linux: 일반적으로 수정된 Linux 커널을 기반으로 하는 운영 체제로, 다양한 임베디드 하드웨어에서 사용됩니다. 사용자 친화적이며, 네트워크, 파일 시스템, 드라이버 등 다양한 기능을 제공하여 복잡한 어플리케이션에 적합합니다.

RTOS (Real-Time Operating System): 일정 시간 안에 작업을 처리해야 하는 응답성을 보장하는 운영 체제입니다. RTOS는 주로 산업 자동화, 의료 장비, 자동차 제어 시스템 등과 같은 실시간 응답이 중요한 분야에서 사용됩니다.

  1. 실시간성 및 결정론적 동작의 차이
    Linux의 특성
    비결정론적 응답 시간: Linux 커널은 주로 스루풋과 효율성에 초점을 맞추어 설계되었기 때문에, 작업이 언제 실행될지 정확하게 예측할 수 없습니다. 이는 스케줄러가 다양한 우선순위의 작업을 관리하며, I/O 작업, 메모리 관리 등의 복잡한 프로세스가 영향을 미치기 때문입니다.

Preemption (선점) 제한: 일반적인 Linux 커널은 일부 실시간 기능을 제공하지만, 모든 커널 작업이 즉시 중단될 수 있는 것은 아닙니다. 특히, 커널이 긴 시간 동안 인터럽트에 반응하지 않거나, 중요한 작업을 수행하느라 다른 태스크가 지연될 수 있습니다.

Latency (지연 시간) 변동성: 다양한 시스템 작업과 멀티태스킹 환경에서 지연 시간이 불규칙하게 변동할 수 있습니다. 이는 네트워크 스택 처리, 디스크 I/O 등 여러 요소에 의해 영향을 받을 수 있습니다.

실시간 패치 (PREEMPT-RT): 실시간 응답을 개선하기 위해 PREEMPT-RT 패치를 적용하여 커널의 실시간성을 높일 수 있습니다. 하지만 여전히 RTOS처럼 완벽하게 예측 가능한 응답을 보장하지는 않습니다.

RTOS의 특성
결정론적 응답 시간: RTOS는 설계상 특정 시간 내에 작업을 완료할 수 있도록 보장합니다. 주어진 시간 내에 반드시 작업을 수행하기 때문에 응답이 매우 일관되고 예측 가능합니다.

고속 인터럽트 처리: RTOS는 인터럽트 처리를 빠르고 우선적으로 수행하며, 대부분의 경우 중요한 태스크를 빠르게 처리할 수 있도록 인터럽트를 우선시합니다. 이는 하드 실시간 제약 조건을 충족시킵니다.

작고 경량화된 커널: RTOS는 필요한 최소 기능만 포함하여 매우 가볍고, 작업 스케줄링이 매우 효율적입니다. 따라서 시스템 부하가 적고, 정확하게 설계된 타이밍에 따라 작업을 실행할 수 있습니다.

우선순위 기반 스케줄링: 태스크 우선순위가 명확하게 설정되며, 높은 우선순위의 작업이 즉시 처리될 수 있습니다. 이는 미션 크리티컬한 환경에서의 사용을 보장합니다.

Low Latency: RTOS는 매우 낮은 지연 시간으로 실시간 작업을 처리합니다. 하드웨어 수준에서의 빠른 응답이 필요할 때 적합합니다.

  1. 실시간성 측면에서의 주요 차이점 요약
    특성 || Linux RTOS
    ============================================================
    응답 시간 || 비결정론적, 변동성이 있음 결정론적, 일정한 응답 시간 보장
    우선순위 처리 || 우선순위가 있지만, 실시간 보장 없음 우선순위가 명확하며,
    || 높은 우선순위 작업 우선 처리
    커널 크기 || 크고 기능이 많음 작고 경량화
    지연 시간 || 네트워크, 디스크 I/O 등에 의해 매우 낮음, 거의 일정
    지연 가능
    시스템 복잡성 || 복잡한 어플리케이션 실행에 적합 간단한 실시간 작업 수행에 적합
    적용 분야 || 멀티미디어, 네트워크 등 산업 제어, 로봇 공학, 의료기기 등
    || 복잡한 사용자 인터페이스
    결론
    Embedded Linux는 네트워크 처리, 멀티미디어 애플리케이션, 복잡한 사용자 인터페이스를 필요로 하는 임베디드 시스템에 적합합니다. 실시간 패치를 적용하면 실시간 성능이 어느 정도 개선되지만, RTOS만큼 결정론적이지는 않습니다.

RTOS는 시간이 중요한 미션 크리티컬한 응용 프로그램에 필수적입니다. 일정한 응답 시간이 필요한 경우, 특히 하드웨어 제어, 산업용 로봇, 항공우주 및 의료 기기 등 실시간 제약이 있는 환경에서 RTOS를 사용합니다.

항상 QNX와 VxWorks 때문에 골머리를 앓았는데, 이제는 누구나 좀 더 수월하게 접근 할 수 있겠네요.

Hacker News 의견
  • 몇 년간의 노력 끝에 큰 성과를 이룬 것임

    • 대부분의 작업은 Thomas Gleixner와 그의 팀이 수행했음
    • Linutronix를 설립했으며 현재 Intel이 소유하고 있음
    • 마지막 printk 비트에 대한 풀 리퀘스트 링크 제공
    • 커널 구성에서 PREEMPT_RT에 대한 풀 리퀘스트 링크 제공
    • 커널 v6.11 위에 RT 패치 로그 링크 제공
    • 새로운 printk 인프라가 실제 드라이버에 채택될 필요가 있음
    • RT 패치셋의 크기가 이전보다 훨씬 작아졌음
    • Linus가 신뢰를 보여주는 큰 신호임
    • 팀에게 축하를 보냄
  • 실시간 커널의 효과를 보려면 cyclictest 유틸리티를 빌드하고 실행할 것을 권장함

    • 각 CPU 코어의 인터럽트 지연 시간을 측정하고 표시함
    • 실시간 패치 없이 최악의 경우 지연 시간이 두 자릿수 밀리초에 이를 수 있음
    • 실시간 패치가 적용되면 최악의 경우 지연 시간이 한 자릿수 마이크로초로 감소함
    • 일관된 낮은 지연 시간을 얻으려면 전원 절약 상태를 꺼야 함
    • cyclictest는 Linux에서 실시간 작업을 할 때 중요한 도구임
    • 소프트웨어 정의 라디오(SDR) 처리 시 시스템의 성능 차이를 설명함
    • 실시간 커널이 적용되면 GNOME과 libreoffice를 실행하면서도 SDR이 문제 없이 작동함
  • RT 패치셋 없이 3ms 지연 시간으로 한두 개의 악기를 실행할 수 있음

    • RT 패치셋을 사용하면 1ms 지연 시간으로 6개의 악기를 실행할 수 있음
    • 수십 개의 Chrome 창을 열고 3D 슈터 게임을 하면서도 문제가 없음
    • 일반 저지연 스케줄러보다 큰 차이를 보임
  • 2000년대 중반에 Linux를 실시간 작업에 사용하려 했던 경험을 공유함

    • 당시 실시간 Linux는 매우 해킹적이고 트리 외부에 있었음
    • 실시간 동작을 달성하기 위해 Linux를 진정한 실시간 마이크로커널 내에서 프로세스로 호스팅하는 것이 일반적인 해결책이었음
    • 실시간 Linux가 비실용적이었던 이유는 모든 비선점 가능한 섹션의 실행 시간을 보장해야 했기 때문임
    • 이 요구 사항을 어떻게 해결했는지 궁금해함
    • Linux가 우선순위 역전을 지원하는지 여부를 질문함
  • 실시간 프로그래밍이 어떻게 이루어지는지에 대한 좋은 자료가 있는지 질문함

    • 프로그램이 실제로 실시간인지 확인하는 방법에 대해 궁금해함
    • 실시간 코딩이 일반 코딩과 다른지 질문함
    • 현대 CPU 아키텍처가 실시간 프로그래밍에 미치는 영향에 대해 궁금해함
  • Torvalds가 printk의 원래 코드를 작성했다는 언급에 대해 의문을 제기함

    • printk 디버깅 도구에 대한 설명에 동의하지 않음
  • CNC 커뮤니티에 큰 도움이 될 것임

    • RT는 필수적이며 빌드를 훨씬 쉽게 만듦
  • 매우 멋지다고 생각함

    • 어떻게 "켜는지"에 대해 궁금해함
    • 컴파일 타임/부트 타임 옵션인지, 아니면 시스템에서 실행 중인 프로세스가 타임슬라이스/지연 시간 보장을 요청하는 것인지 질문함
  • 데스크탑 사용자에게 실시간 커널을 사용하는 것의 단점에 대해 궁금해함