Linuxから良好なリアルタイム性を引き出す方法

Linux環境で真のリアルタイム特性を実現するにはどのようにすればよいでしょうか? 

本来リアルタイムシステム向けに設計されていないLinuxでこれを実現する魔法のような方法はないため、現実的な手法をみていくことになります。実際にいくつかの方法がありますが、当然のことながらそれぞれ一長一短があります。  

Tomas Hedqvist

  • それでは...どのような方法があるのでしょうか?

 1.PREEMPT_RTパッチを適用して、Linuxをさまざまな度合いでプリエンプティブにします。プリエンプションをフルでオンにすると、中程度のリアルタイム特性が得られます。これは、必ずしも最高パフォーマンスを必要としないシステムに適しています。

2.別の方法として、少なくともNO_HZパッチも実装している場合、特定コアへのスレッドを固定し、その特定コア上のカーネルのアクティビティを回避します。これにより、シングルスレッドのアプリケーションについてはかなり良好なリアルタイム特性が得られます。 一方、固定されたスレッドからのシステム・コールは決定性を失います。この方法は、シングルスレッドのポーリングループについては有効であり、良好なリアルタイム特性を実現します。 

3.タイプ1ハイパーバイザを使用して、OSレベルでパーティショニングを行う方法です。この方法では、Linuxを実行する領域とリアルタイム・エグゼクティブを実行する領域にパーティションします。これには、Linuxカーネルへのパッチ適用が不要というメリットがあるため、標準のLinuxを利用した場合でも優れたリアルタイム特性が得られます。 

この方法は、Linuxにリアルタイム特性をもたらそうとする他の方法とは異なり、拡張性と柔軟性を確保しながら、優れたリアルタイム特性とパフォーマンスを提供するソリューションです。Linuxとリアルタイム・エグゼクティブのそれぞれに割り当てられるコア数はブート時に決定されるため、新しいアプリケーションへの導入も容易です。

 

  • Eneaからのご提案

Eneaは、この課題に取り組む中で、リアルタイム・エグゼクティブでアクセラレートしたLinuxによるソリューションを創出するためのフレームワークを開発してきました。タイプ1ハイパーバイザを使用して、Linux領域とリアルタイム領域を強固かつ明確に分離するとともに、この2つの領域間でリソースを共有します。IPCやファイル・システムなどのOSサービスだけでなく、NICや外部メモリなど のハードウェア・リソースも共有できます。 

セットアップと構成を一から行う必要があるため、若干面倒ではありますが、初期段階を完了すれば、Linuxにリアルタイム特性を追加した強力なプラットフォームとなります。その実現には、Eneaのフレームワークと知識が深く関わっています。Eneaは、自社開発フ レームワークをベースとしたすぐに導入可能なソリューションを提供するだけではなく、お客様の製品ライフサイクル全体を通じてソリューションをサポートします。 

Eneaのソリューションの詳細については、「リアルタイム・アクセラレーテッドLinuxソリューション」をご参照ください。