リアルタイムLinuxの開発にこれほど長い時間がかかった理由
では、リアルタイムLinuxが今になってようやくカーネルに完全に統合されたのは、なぜなのだろうか。「準備が整ったと判断するまで、実際に何かをカーネルに統合することはない」とRostedt氏は説明する。「大半のものは、メインラインへの統合前に少なくとも3回は書き直すのが普通だった。統合するものに対して、それだけ高い基準を設けていたからだ」
また、メインラインへの道にあったのは技術的な課題だけではなかった。駆け引きや印象の問題もあった。「最初はリアルタイムという言葉を使うことさえできなかった」とRostedt氏。「誰もが『リアルタイムには興味がない』と言っていた」
もう1つの問題は資金だった。リアルタイムLinuxへの資金提供は、不安定な状態が長く続いていた。The Linux Foundationは2015年、PREEMPT_RTのメインライン統合に関する取り組みを連携させるべく、「Real-Time Linux」(RTL)共同プロジェクトを立ち上げた。
完全統合への最後のハードルは、カーネルのprint_k関数を作り直すことだった。print_kは1991年から存在する重要なデバッグツールであり、Torvalds氏は特にprint_kを大切にしていた。同氏がprint_kのオリジナルコードを書き、今でもデバッグに使用している。しかし、print_kを呼び出すたびに、Linuxプログラムに大きな遅延が生じる。このような速度低下は、リアルタイムシステムでは許容できない。
Rostedt氏は次のように説明した。「print_kには、1000の状況に対処するための1000のハックがある。print_kに変更を加えて何かをさせると、これらのケースの1つが破損する。print_kがデバッグに関して優れている点は、プロセスのクラッシュがどこで起きたかを正確に把握できることだ。システムに非常に高い負荷をかけると、遅延はほとんどの場合30マイクロ秒程度だったが、それから突然、5ミリ秒に増加していた」。その遅延がprint_kのメッセージだった。
膨大な作業を終え、多くの白熱した議論を交わし、複数の提案が却下された末に、2024年に妥結に至った。Torvalds氏も、リアルタイムLinuxの開発者も、print_kユーザーも満足し、ついにリアルタイムLinuxが現実のものとなった。
20年の開発期間を経て、Linuxリアルタイムパッチがついにメインラインカーネルに統合された。このマイルストーンは、Linuxに決定論的な低遅延のパフォーマンスをもたらすための、カーネル開発者による長年の取り組みの集大成だ。
これにより、Linuxカーネルが完全にプリエンティブルになり、マイクロ秒単位でイベントに応答できるようになった。この機能は、産業用制御システム、ロボット工学、オーディオ制作など、正確なタイミングが求められる用途において極めて重要だ。
リアルタイムパッチの統合により、LinuxがRTOSの世界で重要な役割を果たす準備が整った。これは、リアルタイムOSを使用するメーカーだけでなく、全Linuxユーザーにとっての勝利だ。
ウィーンで開催のLinux Summit EuropeでリアルタイムLinux開発者のSteven Rostedt氏(左)と筆者(提供:sjvn)
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。