RTLinux
RTLinux is a hard realtime real-time operating system (RTOS) microkernel that runs the entire Linux operating system as a fully preemptive process. The hard real-time property makes it possible to control robots, data acquisition systems, manufacturing plants, and other time-sensitive instruments and machines from RTLinux applications. The design was patented. Despite the similar name, it is not related to the Real-Time Linux project of the Linux Foundation.
RTLinux was developed by Victor Yodaiken, Michael Barabanov, Cort Dougan and others at the New Mexico Institute of Mining and Technology and then as a commercial product at FSMLabs. Wind River Systems acquired FSMLabs embedded technology in February 2007 and made a version available as Wind River Real-Time Core for Wind River Linux. As of August 2011, Wind River has discontinued the Wind River Real-Time Core product line, effectively ending commercial support for the RTLinux product.
Real-time 란 무엇인가?
Real-time을 직역하면 '실시간' 이다. 컴퓨터 공학에서 실시간이 정확히 무엇을 의미하는지를 이해하기 위해서는 실시간과 비슷한 개념인 Low Latency 또는 빠른 응답시간이라는 말을 비교해보면 좋을 것 같다. "실시간" 이라는 것은 Time 리미트가 있는 것이고, "빠른 응답시간" 이라는 것은 빠르면 빠를수록 좋은것이다.
예를 들어 Task A와 B가 있다고 가정해보자. Task A는 특정 기능을 1초안에 수행하지 않으면 전체 시스템에 치명적인 위해를 가할 수 있다. 그렇다면 이 경우 Time 리미트는 1초가 될 것이고, 이 1초라는 시간을 준수하면서 그 특정 기능을 수행하는 것을 "실시간" 이라고 한다. 이에 비해 Task B는 기능을 수행함에 있어 Time 리미트같은 것이 없다고 생각해보자. Task B는 빠르면 좋긴 하겠지만, 느리다고 해서 시스템에 치명적인 손상을 입히는 것이 아니다. 그렇다면 이는 Low Latency 또는 빠른 응답시간을 요구하는 경우라고 볼 수 있겠다. (나도 이거에 대한 정확한 개념이 없었는데, 올해 5월달쯤 서울대의 실시간 연구실 연구원분이 설명해주셔서 기억하고 있다 -_-...)
여기서 Real-time이라는 개념도 두 가지로 쪼개진다. 하나는 Hard RT이고, 다른 하나는 Soft RT이다. Hard RT는 정해진 Time Threshold가 존재해 반드시 해당 시간 안에 작업을 수행해야하는 경우이다. 1 조금 과장되게 비유하자면, 원자력발전소같은 곳에서 전체 시스템을 Shutdown 해야하는 상황을 생각해보면 쉬울 것 같다. 이와 반대되는 개념인 Soft RT 는 정해진 Threshold 값은 존재하지만, 해당 값에 대해 "최대한 Real-time을 보장하는 것" 이다. RT가 보장되지 않아도 크게 문제는 없지만 Time threshold를 지키도록 최대한 노력하는 것인데, 위에서 언급한 "Low Latency"와 비슷한 점이 없지 않아 있다. 해당 연구 도메인에서는 이에 대해 어떻게 구분하는지 모르겠지만 나는 Real-time 를 연구하는 사람은 아니므로.. 설명은 그만 하는 것이 좋을 것 같다.
Features
- Realtime Linux가 커널의 일부로 공식 포함되어, 이제 실시간 운영체제(RTOS) 없이 "실시간 리눅스" 사용 가능해 질 것
- 오디오 장비, 산업용 용접 레이저, 화성 탐사선 등에 "실시간 Linux"를 사용하고 싶다면 오래전부터 그 옵션이 있었음 (QNX 등의 대안을 사용하지 않는다는 가정 하에)
- 대학들이 1990년대 후반부터 자체 실시간 커널을 만들기 시작함
- PREEMPT_RT라는 패치 세트가 적어도 2005년부터 존재해 왔음
- NO_HZ와 같은 실시간 작업의 일부 측면은 오래전에 메인라인 커널로 이동되어 데이터 센터, 클라우드 컴퓨팅 또는 많은 CPU가 있는 모든 것에서 사용할 수 있게 되었음
PREEMPT_RT
PREEMPT_RT was a set of patches for the Linux kernel which implement both hard and soft real-time computing capabilities. On September 20, 2024, PREEMPT_RT was fully merged and enabled in mainline Linux on the supported architectures x86, x86_64, RISC-V and ARM64. This will make kernel v6.12 the first release to include baked-in real-time capability.
PREEMPT_RT는 리눅스 커널에서 실시간 성능을 강화하기 위해 사용하는 패치입니다. 이 패치는 기본적인 리눅스 커널의 동작을 개선하여, 실시간 응답성과 예측 가능성을 높여줍니다. 이를 통해 특정 작업을 더욱 낮은 지연 시간과 높은 우선순위로 처리할 수 있게 됩니다.
주요 특징은 다음과 같습니다:
- 선점 가능성(Preemptibility) 강화: PREEMPT_RT 패치를 적용하면 커널의 거의 모든 코드 경로에서 선점이 가능해집니다. 이는 특정 작업이 오래 걸리더라도 다른 실시간 태스크가 이를 중단하고 실행될 수 있음을 의미합니다.
- 락(lock) 기법 개선: 기존의 리눅스 커널에서는 스핀락(spinlock)과 같은 락 기법을 사용하여 자원을 보호하지만, PREEMPT_RT에서는 이를 선점 가능하도록 변경해 실시간 태스크가 락에 의해 지연되지 않도록 합니다.
- 인터럽트 관리 개선: 하드웨어 인터럽트를 쓰레드로 처리하여, 실시간 태스크가 인터럽트로 인해 영향을 덜 받게 하고, 예측 가능한 응답성을 제공합니다.
PREEMPT_RT는 특히 산업용 시스템, 로봇 공학, 금융 거래 시스템과 같은 높은 실시간 성능이 요구되는 환경에서 유용하며, 리눅스에서의 실시간 성능을 크게 향상시키기 위해 활용됩니다.
PREEMPT_RT의 메인라인 병합
- 6.12 커널에서 PREEMPT_RT가 메인라인에 병합될
가능성이 높음-> 되었음. #리눅스 커널 6.12 릴리즈 항목 확인 - 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가 메인라인에 포함됨에 따라 개발 생태계가 더욱 활성화되고, 다양한 하드웨어와 소프트웨어의 지원 범위가 넓어질 것으로 기대됨
리눅스 커널 6.12 릴리즈
See also
Favorite site
- RTLinux - Wikipedia
- Real-time Linux is officially part of the kernel after decades of debate | Ars Technica
- Realtime Linux가 오랜 논쟁 끝에 리눅스 커널에 공식 포함 | GeekNews
- Real-time Linux is officially part of the kernel | Hacker News
- Linux :: Real-Time Ubuntu 22.04 LTS (PREEMPT_RT)
References
-
Blog.naver.com_-alice_k106-RTOS-RTLinux-_RT_Scheduling.pdf ↩