RedHawkのリアルタイム機能
CPUシールディング
コンカレント社は、ユーザーが選択したCPU上で、割込みとシステムデーモンの引き起こす予想できない処理からシールドする方法を開発しました。
マルチコアシステムでは、任意のCPUに、リアルタイムプライオリティのタスクを割付け、他のCPUに割り込みとシステムデーモンを割付けることによって、最も良いプロセスディスパッチレイテンシィを達成することができます。
この機能は、/procファイルシステムとコマンドshield(1)で、使うことが出来ます。
3種類のCPU保護属性の設定/表示を行う
irqs デバイス割り込み
ltmrs localタイマー割り込み(APIC)
procs 無関係なプロセスの割付
(キャッシュのフラッシュやコンテキストスイッチ等)
システムのCPUの状態の設定/表示を行う
論理プロセッサの使用/非使用を行う
メモリシールディング
NUMAシステム上では、特定のCPUに実装されているメモリ上に、クリティカルな高いプライオリティのタスクを割付け、他のプロセスの引き起こすメモリフォルト割込みやバストラフィックからリアルタイムプロセスをシールドすることが出来ます。
この機能は、コマンドshield(1)とrun(1)で、使うことが出来ます。
プロセッサアフィニティ
複数プロセスがマルチコア上で実行されるリアルタイムアプリケーションでは、システム上のすべてのプロセスのCPU割付についての明示的なコントロールが必要です。
この機能は、ライブラリルーチンmapadvise(3)とコマンドrun(1)で、使うことが出来ます。
run
プロセス(あるいはグループ)に対して以下の設定/表示を行う
(すでに実行中のプロセスでも可能)
プロセス優先度
スケジューリングポリシー
タイムクオンタム
実行可能CPUの割り当て
実行CPUの割り当て
メモリロック
nice値の表示/設定
ユーザーレベルプリエンプション制御
マルチコア上で、共有されたデータを保護するために、最も効率的なメカニズムはスピンロックです。
しかし、もしアプリケーションが、スピンロックを保持している間に、プリエンプションされる可能性があるならば、スピンロックは、アプリケーションによって効率的に使うことが出来ません。 効果的なままでいるために、 RedHawk はアプリケーションが高速に、プリエンプションを禁止/許可することをメカニズムを提供します。
高速ブロック / ウェイクサービス
多くのリアルタイムアプリケーションは、複数の協調プロセスで構成されています。 これらのアプリケーションは、プロセス間の同期化をするための効率的な手段を必要とします。
コンカレント社は、高速なブロック / ウェイクサービスpostwait(2) とserver_block(2)を開発しました。
RCIMサポート
RedHawkは、外部イベントに瞬時に反応する必要のあるタイムクリティカルアプリケーションのために設計された多機能カード「リアルタイム・クロック&インタラプト・モジュール (RCIM: Real-Time Clock & Interrupt Module)」をサポートします。 8個のプログラム可能なタイマーと12個の入出力外部割込みラインを利用できます。マルチシステムアプリケーションを同期させるために他のiHawkに対して割り込みソースを分配することが可能です。 RCIMには、複数のシステム全体に同じ時間を提供する高分解能同期クロックが含まれています。 RCIM上のタイムスタンプは、RedHawkが高分解能NTPを同期させるために供給することが可能です。 RCIMオプションには、外部からの入力無しに正確な時間を保持できるGPS標準時間と高安定性水晶発振器が一体となり、同期させるためのGPSモジュールが含まれます。
カーネルトレースファシリティ
RedHawkには、カーネルトレースを行う機能が標準で組み込まれています。
カーネルトレース機能は、カーネルを通過する際、トレースポイントデータをメモリバッファに更新し、その情報をNightTraceツールが読み出します。
このツールはリアルタイムに動作し、ユーザプログラムに変更を行う必要はありません。
ptrace 拡張
Linux 上の ptrace のデバッギングインタフェースは NightView デバッガの性能をサポートするために拡張されました。
● デバッガプロセスによって現在停止状態にあるプロセスがメモリをread/write出来ない機能
● デバッガによってデバッグされているプロセスのシグナルの下位グループだけを追跡する機能
● デバッガによってデバッグされているプロセスが効率的に実行を再開する機能
● デバッガプロセスが生成するすべてのチャイルドプロセスを自動的にデバッガで制御する機能
カーネルプリエンプション
高いプライオリティプロセスがカーネルの中に現在実行しているより低いプライオリティプロセスをプリエンプションする機能が提供されています。
スタンダード Linux では、プリエンプションが行われないため、より長いワーストケースプロセスディスパッチレイテンシィを発生させます。
リアルタイムスケジューラ
いくつのプロセスがシステムでアクティブであっても、リアルタイムスケジューラは一定時間のコンテキストスイッチ時間を提供します。
ローレイテンシィ拡張
カーネルによって使用されている共有データ構造を守るために、カーネルはスピンロックと セマフォで、これらの共有データ構造にアクセスするコードパスを保護します。
スピンロックでロックすることはプリエンプションと割り込みを行うために必要です。
スピンロックが保持される間は保護されたコードパスは、実行不能でなくてはなりません。ワーストケースレイテンシィのプリエンプションの低減の研究が行われ、ローレイテンシィ拡張は、もっと良い割り込み応答時間を提供するためにシナリオからアルゴリズムで識別されるワーストケースのプリエンプションを修正します。
プライオリティインヘリタンス
Sleeping-Waitを排他制御メカニズムとして使用したセマフォはプライオリティ逆転の問題を発生させました。
クリティカルセクションを実行している低いプライオリティのプロセスが、高い優先順位プロセスの実行を妨げるとき、プライオリティ逆転が発生します。
プライオリティインヘリタンスは、クリティカルセクションを実行している低いプライオリティのプロセスに、一時的に高優先度待機プロセスの優先度を与えることで回避され、クリティカルセクションを去るまで、クリティカルセクションで実行しているプロセスが実行を続けるために十分なプライオリティを持っていることを保証します。
高解像度プロセスアカウンティング
標準的な Linux カーネルでは、システムは非常に粗い粒度のメカニズムを使ってプロセスのCPU実行時間を報告します。 これは特定のプロセスに加算されたCPU時間の量が非常に不正確であり得ることを意味します。 高精細プロセスのアカウントファシリティは、アプリケーションの最良のパフォーマンスモニタリングを行うことができ、非常に正確なCPU実行時間アカウントメカニズムを提供します。 このファシリティは、コンカレント社によって供給されるデバッグカーネルとトレースカーネルで監視する標準的な Linux CPUアカウントによって使われます。
ケイパビリティサポート
Pluggable Authentication Module (PAM) はユーザーに特権を割り当てて、そして認証プログラムを再コンパイルすることを必要としないで認証ポリシィを設定するためのメカニズムを提供します。
このスキームの下で、非rootのユーザーが特権を必要とするアプリケーションを走らせるように設定されることができます、ただしrootは常に特権を許されます。
例えば、ページをメモリにロックする機能は個別のユーザーあるいはグループに割り当てられることができる1つの前もって定められたプリビレッジによって提供されます。
特権はコンフィギュレーション・ファイルで定義されたroleを通して与えられます。
カーネルデバッガ
オープンソースカーネルデバッガ kdb は RedHawk Linux のデバッグカーネルでサポートされています。
カーネルコアダンプ / クラッシュ分析
kexec と kdump オープンソースのパッチは、別のカーネルにロードして、そしてクラッシュダンプを取り込むことができます。
そしてクラッシュユーティリティーがダンプを分析するために提供されています。
ユーザーレベルスピンロック
RedHawk Linux のビジィ待ちの排他制御ツールは、低いオーバーヘッドのビジィ待ちの排他制御変数(スピンロック)とスピンロックを初期化して、ロックして、アンロックして、そして問い合わせることを可能にするマクロのセットです。
ユーザーレベルスピンロックは、ユーザーレベルプリエンプション制御で使われなくてはなりません。
Hyper-threading
ハイパースレッディングは、インテルペンティアム Xeon プロセッサの機能です。 それは一つの物理的なプロセッサが2つの論理的なプロセッサとしてオペレーティング・システムに認識されます。
結果的に、それぞれのチップはデュアルCPUの SMP であるように、2つのプログラムが、それぞれのCPUチップの中で同時に走ります。
RedHawk Linux は、ハイパースレッディングへのサポートを含んでいます。
XFS ジャーナリング・ファイルシステム
SGI からの XFS ジャーナリング・ファイルシステムが RedHawk Linux に実装されています。 ジャーナリング・ファイルシステムはジャーナル(ログ)をトランザクション記録のために使います。 システムクラッシュの場合、バックグラウンドプロセスはリブート時にジャーナルからファイルシステムまで更新をコピーして終わります。
これは劇的に、回復時間を減らして、ファイルシステムチェックの複雑さをカットします。
POSIX リアルタイム拡張
RedHawk Linux は、ISO/IEC 9945-1で定義された、 POSIX リアルタイム拡張インタフェースの大部分をサポートします。
• ユーザ優先度制御
• プロセスメモリロック
• メモリマップファイル
• 共有メモリ
• メッセージキュー
• カウンティングセマフォ
• リアルタイムシグナル
• 非同期入出力(asynchronous I/O)
• 同期入出力(synchronized I/O)
• 高解像度タイマー
詳細は、RedHawk6.0 User Guideをご覧下さい。
RedHawk6.0の特徴
RedHawk6.0のインストール手順
RedHawk6.0の変更点
RedHawk6.0の新しい機能
RedHawk6.0プロダクト