- Realtime Linuxがカーネルの一部として正式に統合され、これでリアルタイムOS(RTOS)なしでも「リアルタイムLinux」を使えるようになる見込み
- オーディオ機器、産業用溶接レーザー、火星探査機などで「リアルタイム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への影響? あまりない
- 高度なオーディオ制作や複製を超える用途では(それさえも議論の余地があるが)、リアルタイムカーネルはWindowsをより速くしたり、プログラムをより速くしたりはしない
- しかし、リアルタイム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がメインラインに含まれることで、開発エコシステムがさらに活性化し、多様なハードウェアとソフトウェアの対応範囲が広がることが期待される
4件のコメント
リアルタイムOSが何なのか、PREEMPT_RTが何で、リアルタイムOSとどう関係しているのかについて、簡単でも説明が入っていたらよかったと思うのですが、ディテールがほとんど出ていなくて残念ですね…
LinuxとReal-Time Operating System(RTOS)の主な違いは、リアルタイム性と決定論的な動作にあります。この違いは、システムが応答しなければならない時間制約と正確性に大きく影響し、それぞれのOSがどのような状況に適しているかの理解に役立ちます。
Linux: 一般に修正されたLinuxカーネルをベースとするオペレーティングシステムで、さまざまな組み込みハードウェアで使用されます。ユーザーフレンドリーで、ネットワーク、ファイルシステム、ドライバなど多様な機能を提供するため、複雑なアプリケーションに適しています。
RTOS(Real-Time Operating System): 一定時間内にタスクを処理しなければならない応答性を保証するオペレーティングシステムです。RTOSは主に、産業オートメーション、医療機器、自動車制御システムなど、リアルタイム応答が重要な分野で使用されます。
Linuxの特性
非決定論的な応答時間: Linuxカーネルは主にスループットと効率性に重点を置いて設計されているため、タスクがいつ実行されるかを正確に予測することはできません。これは、スケジューラがさまざまな優先度のタスクを管理し、I/O処理、メモリ管理などの複雑なプロセスが影響するためです。
Preemption(プリエンプション)の制限: 一般的なLinuxカーネルは一部のリアルタイム機能を提供しますが、すべてのカーネル処理を即座に中断できるわけではありません。特に、カーネルが長時間にわたって割り込みに応答しなかったり、重要な処理を実行しているために他のタスクが遅延したりすることがあります。
Latency(レイテンシ)の変動性: さまざまなシステム処理とマルチタスク環境において、レイテンシは不規則に変動することがあります。これは、ネットワークスタック処理、ディスクI/Oなど複数の要因の影響を受けます。
リアルタイムパッチ(PREEMPT-RT): リアルタイム応答を改善するためにPREEMPT-RTパッチを適用して、カーネルのリアルタイム性を高めることができます。ただし、依然としてRTOSのように完全に予測可能な応答を保証するものではありません。
RTOSの特性
決定論的な応答時間: RTOSは設計上、特定の時間内にタスクを完了できることを保証します。与えられた時間内に必ず処理を実行するため、応答は非常に一貫しており予測可能です。
高速な割り込み処理: RTOSは割り込み処理を迅速かつ優先的に実行し、ほとんどの場合、重要なタスクをすばやく処理できるように割り込みを優先します。これはハードリアルタイム制約を満たします。
小さく軽量なカーネル: RTOSは必要最小限の機能のみを含むため非常に軽量で、タスクスケジューリングも非常に効率的です。そのためシステム負荷が低く、正確に設計されたタイミングに従ってタスクを実行できます。
優先度ベースのスケジューリング: タスクの優先度が明確に設定され、高い優先度の処理を即座に実行できます。これはミッションクリティカルな環境での利用を支えます。
Low Latency: RTOSは非常に低いレイテンシでリアルタイム処理を行います。ハードウェアレベルでの高速な応答が必要な場合に適しています。
特性 || Linux RTOS
============================================================
応答時間 || 非決定論的で変動性がある 決定論的で一定の応答時間を保証
優先度処理 || 優先度はあるが、リアルタイム保証はない 優先度が明確で、
|| 高優先度タスクを優先処理
カーネルサイズ || 大きく機能が多い 小さく軽量
レイテンシ || ネットワーク、ディスクI/Oなどにより 非常に低く、ほぼ一定
遅延する可能性がある
システム複雑性 || 複雑なアプリケーションの実行に適する 単純なリアルタイム処理に適する
適用分野 || マルチメディア、ネットワークなど 産業制御、ロボティクス、医療機器など
|| 複雑なユーザーインターフェース
結論
Embedded Linuxは、ネットワーク処理、マルチメディアアプリケーション、複雑なユーザーインターフェースを必要とする組み込みシステムに適しています。リアルタイムパッチを適用すれば、リアルタイム性能はある程度改善されますが、RTOSほど決定論的ではありません。
RTOSは、時間が重要なミッションクリティカルなアプリケーションに不可欠です。一定の応答時間が必要な場合、特にハードウェア制御、産業用ロボット、航空宇宙、医療機器など、リアルタイム制約のある環境ではRTOSが使用されます。
QNXやVxWorksのせいでいつも頭を悩ませていましたが、これで誰でももう少し簡単に扱えるようになりそうですね。
Hacker Newsの意見
長年の努力の末に成し遂げられた大きな成果だとする意見
printk部分に関するプルリクエストへのリンクが示されているPREEMPT_RTに関するプルリクエストへのリンクが示されているprintkインフラが実際のドライバに採用される必要があるリアルタイムカーネルの効果を見るには
cyclictestユーティリティをビルドして実行することを勧める意見cyclictestは Linux でリアルタイム作業を行う際の重要なツールだとするRT パッチセットなしでも 3ms の遅延で 1〜2 個の楽器を動かせるという意見
2000年代半ばに Linux をリアルタイム用途に使おうとした経験を共有する意見
リアルタイムプログラミングがどのように行われるのかについて良い資料があるか尋ねる意見
Torvalds が
printkの元のコードを書いたという言及に疑問を呈する意見printkをデバッグツールとする説明には同意しないCNC コミュニティにとって大きな助けになるという意見
とてもクールだと思うという意見
デスクトップユーザーにとってリアルタイムカーネルを使うことの欠点があるのか気になっている