CONFIG_PREEMPT_VOLUNTARY-このオプションは、カーネルコードの
長い待ち時間の最も一般的な原因にチェックを導入し、カーネルが実行を待機している優先度の高いタスクに自発的に制御を譲ることができるようにします。このオプションは、長いレイテンシーの発生を大幅に減らすと言われていますが、それでも完全に排除するわけではありません。
CONFIG_PREEMPT_RT-
このオプションにより、スピンロックで保護された領域(raw_spinlock_tによって作成された)外のすべてのカーネルコードが、優先度の高いカーネルスレッドによる非自発的なプリエンプションの対象になります。spinlock_tおよびrwlock_tによって作成されたスピンロック、およびこのオプションを有効にすると、割り込みもプリエンプト可能になります。このオプションを使用すると、最悪の場合の遅延は(約)1桁のミリ秒に低下します。
短所-
通常のLinuxカーネルでは、ユーザースペースコードが実行されている場合にのみ、優先度の高いタスクによるタスクのプリエンプションが許可されます。
待ち時間を短縮するために、CONFIG_PREEMPT_RTパッチは、より優先度の高いカーネルタスクの到着時に、カーネルに手元のタスクを非自発的にプリエンプトさせます。これにより、システムの全体的なスループットが低下することになります。これは、いくつかのコンテキストスイッチがあり、優先度の低いタスクが通過する機会があまりないためです。
ソース:
https ://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions
使用される専門用語の説明:
レイテンシーとは何ですか?
コンピュータシステムで発行された要求から同じ要求への応答が開始されるまでの時間は、遅延または応答時間と呼ばれます。
レイテンシの種類:
- 割り込みレイテンシ:割り込み
が生成されてから、対応する割り込みハンドラの実行が開始されるまでに経過した時間。
例:ハードウェアデバイスがタスクを実行すると、割り込みが生成されます。この割り込みには、実行するタスクと実行する割り込みハンドラに関する情報が含まれています。次に、割り込みハンドラーが特定のタスクを実行します。
- レイテンシーのスケジューリング:
イベントが発生したことを通知するウェイクアップから、カーネルスケジューラーがウェイクアップの発生を待機しているスレッド(応答)をスケジュールする機会を得るまでの時間です。スケジューリング待ち時間は、ディスパッチ待ち時間とも呼ばれます。
- 最悪の場合の待ち時間:
コンピューターシステムで発行された要求と同じ要求への応答の開始との間で遅延する可能性のある最大時間。
スループットとは何ですか?
コンピューターが特定の期間に実行できる作業量は、スループットと呼ばれます。
コンテキストスイッチとは何ですか?
コンテキストスイッチは、あるプロセス/スレッドから別のプロセス/スレッドへのCPUの切り替えです。コンテキストスイッチは、カーネルモードでのみ発生します。これは、プロセスの現在の実行状態を保存し(後で実行を再開するため)、実行のために新しいプロセス/スレッドの保存された状態をロードするプロセスです。