13 ポイント 投稿者 GN⁺ 2024-09-20 | 4件のコメント | WhatsAppで共有
  • 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件のコメント

 
ilotoki0804 2024-09-23

リアルタイムOSが何なのか、PREEMPT_RTが何で、リアルタイムOSとどう関係しているのかについて、簡単でも説明が入っていたらよかったと思うのですが、ディテールがほとんど出ていなくて残念ですね…

 
tongji 2024-09-23

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が使用されます。

 
helloppfm 2024-09-22

QNXやVxWorksのせいでいつも頭を悩ませていましたが、これで誰でももう少し簡単に扱えるようになりそうですね。

 
GN⁺ 2024-09-20
Hacker Newsの意見
  • 長年の努力の末に成し遂げられた大きな成果だとする意見

    • 作業の大半は Thomas Gleixner とそのチームが担った
    • Linutronix を設立し、現在は Intel が所有している
    • 最後の printk 部分に関するプルリクエストへのリンクが示されている
    • カーネル構成における PREEMPT_RT に関するプルリクエストへのリンクが示されている
    • カーネル v6.11 上の RT パッチログへのリンクが示されている
    • 新しい printk インフラが実際のドライバに採用される必要がある
    • RT パッチセットの規模は以前よりはるかに小さくなった
    • Linus が信頼を示した大きなサインだとする声
    • チームに祝意を表する
  • リアルタイムカーネルの効果を見るには cyclictest ユーティリティをビルドして実行することを勧める意見

    • 各 CPU コアの割り込み遅延を測定して表示する
    • リアルタイムパッチなしでは、最悪時の遅延が 2 桁ミリ秒に達することがある
    • リアルタイムパッチを適用すると、最悪時の遅延は 1 桁マイクロ秒まで減少する
    • 一貫して低い遅延を得るには省電力状態を無効にする必要がある
    • cyclictest は Linux でリアルタイム作業を行う際の重要なツールだとする
    • ソフトウェア定義無線(SDR)処理におけるシステム性能の差を説明している
    • リアルタイムカーネルを適用すると、GNOME や libreoffice を実行しながらでも SDR が問題なく動作する
  • RT パッチセットなしでも 3ms の遅延で 1〜2 個の楽器を動かせるという意見

    • RT パッチセットを使うと 1ms の遅延で 6 個の楽器を動かせる
    • Chrome のウィンドウを何十個も開き、3D シューターゲームをしながらでも問題ない
    • 一般的な低遅延スケジューラより大きな差がある
  • 2000年代半ばに Linux をリアルタイム用途に使おうとした経験を共有する意見

    • 当時のリアルタイム Linux は非常にハック的で、ツリー外だった
    • リアルタイム動作を実現するために、真のリアルタイムマイクロカーネル内で Linux をプロセスとしてホストするのが一般的な解決策だった
    • リアルタイム Linux が非実用的だった理由は、すべての非プリエンプト可能なセクションの実行時間を保証しなければならなかったためだとする
    • この要件をどのように解決したのか疑問を呈している
    • Linux が優先度逆転をサポートしているかどうかを質問している
  • リアルタイムプログラミングがどのように行われるのかについて良い資料があるか尋ねる意見

    • プログラムが本当にリアルタイムかどうかを確認する方法が気になっている
    • リアルタイムコーディングが通常のコーディングと異なるのかを質問している
    • 現代の CPU アーキテクチャがリアルタイムプログラミングに与える影響が気になっている
  • Torvalds が printk の元のコードを書いたという言及に疑問を呈する意見

    • printk をデバッグツールとする説明には同意しない
  • CNC コミュニティにとって大きな助けになるという意見

    • RT は必須であり、ビルドがはるかに容易になる
  • とてもクールだと思うという意見

    • どうやって「有効にする」のか気になっている
    • コンパイル時/ブート時のオプションなのか、それともシステム上で動作中のプロセスがタイムスライス/遅延保証を要求するものなのかを質問している
  • デスクトップユーザーにとってリアルタイムカーネルを使うことの欠点があるのか気になっている