システムインタフェース

性能

スケジューラは、プロセスをいつどれだけの時間実行するかを決定するので、システムの実際の性能と知覚される性能に重要な影響を与えます。

デフォルトでは、プロセスはすべてタイムシェアリングプロセスです。プロセスがクラスを変更するのは、priocntl(2) 関数呼び出しによってだけです。

実時間プロセス優先順位は、どのタイムシェアリングプロセスよりも優先順位が高くなっています。したがって、実行可能な実時間プロセスが存在する限り、タイムシェアリングプロセスやシステムプロセスは実行されません。このため、実時間アプリケーションは注意して作成しないと、ユーザや基本的なカーネルのハウスキーピングが完全にロッキングされてしまうことがあります。

実時間アプリケーションは、プロセスのクラスと優先順位を制御する以外にも、性能に影響を与えるいくつかの他の要因も制御しなければなりません。性能にとって最も重要な要因は、CPU パワー、一次メモリ量、入出力スループットです。これらの要因は相互に複雑に関連しています。sar(1) コマンドには、すべての性能要因について報告するオプションがあります。

プロセスの状態変移

厳しい実時間制約を持つアプリケーションは、プロセスがスワップされたり二次メモリにページアウトされたりしないようにする必要がある場合があります。UNIX のプロセスの状態と状態間の変移の概要を図 3-3 に示します。

図 3-3 プロセス状態の変移図

Graphic

有効なプロセスは、通常、上記の図の 5 つの状態のうちの 1 つにあります。矢印は状態が変わる方向を示します。

プロセスが再度実行可能になったときに、ページングとスワップの両方により、遅延が発生します。タイミング要求の厳しいプロセスにとっては、この遅延は受け入れられないものです。

実時間プロセスにすれば、プロセスの一部がページングされることがあっても、スワップはされないためスワップによる遅延を避けることができます。また、プログラムは、テキストとデータを一次メモリ内にロッキングすれば、ページングとスワップを避けることができます。詳細は、memcntl(2) のマニュアルページを参照してください。ロッキングできる量はメモリ設定によって制限されます。また、ロッキングが多すぎると、テキストやデータをメモリ内にロッキングしていないプロセスが大幅に遅れます。

実時間プロセスの性能とその他のプロセスの性能の兼ね合いは、ローカルなニーズによって異なります。システムによっては、必要な実時間応答を保証するためにプロセスのロッキングが必要な場合もあります。

ソフトウェアの潜在的な時間

実時間アプリケーションの潜在的な時間については、「ディスパッチ中の潜在的な時間」を参照してください。