リアルタイムの優先順位で実行中のプロセスの欠点?


9

リアルタイムの優先順位(chrt -f 99)でプロセスを実行することの欠点はありますか?

私の仮説では、これをアフィニティと組み合わせると、プロセスのプリエンプションが最小限に抑えられ、ジッター(特にネットワークレイテンシ)が最小限に抑えられます。これは全体的なレイテンシには役立ちませんが、現時点ではジッタに関係しています。

(カーネル:2.6.16 / 3.0)



@ire_and_curses、現在、プロセスはそれ自体の分離されたコア(少なくともメイン処理スレッド)で実行されますが、割り込みはその同じコアでスケジュールされていません(同じネットワークインターフェイスに依存する同様のプロセスがいくつかあるため、これを実行できません) )、これは最後の取り組みの詳細です。APICの頻度は興味深いですが、これまでに遭遇したことはありません。
ニム

回答:


4

リアルタイムプロセスを実行することの最も直接的な欠点は、プロセスがシステム上の他のすべてのプロセスを簡単に枯渇させる可能性があることです。あなたの視点からの結果は、リアルタイムプロセスがCPUを使用している限り、コンピュータがキーボード、マウス、そしておそらくネットワークに完全に応答しないということです。これは、何か問題が発生してプロセスが無限ループに入った場合や、プロセスが定期的に入力を待たずに長時間の計算を開始した場合に発生する可能性があります。(したがって、たとえば、リアルタイムの優先順位でSETI @ homeを実行しないでください。)

優先度の低いプロセスが使用できるコアが他にもあるため、マルチコアCPU上の単一のシングルスレッドプロセスがこの問題を引き起こす可能性は低くなります。ただし、そのプロセスが子プロセスを作成する場合、それらは同じリアルタイムの優先順位を継承するため、注意しないと事態が制御不能になる可能性があります。

sched_setscheduler(2)manページには、良いアドバイスがあります:

SCHED_FIFOまたはSCHED_RRでスケジュールされたプロセスの非ブロッキング無限ループは、優先度の低いすべてのプロセスを永久にブロックするため、ソフトウェア開発者は、テストされたアプリケーションよりも高い静的優先度でスケジュールされたシェルを常にコンソールで利用できるようにする必要があります。これにより、期待どおりにブロックまたは終了しない、テスト済みのリアルタイムアプリケーションを緊急停止できます。getrlimit(2)のRLIMIT_RTTIMEリソース制限の説明も参照してください。

Xリアルタイムの優先順位もすべて与えたいのでない限り、Xtermの下ではなく、コンソール上のシェルでなければなりません。


はい-これは私が遭遇するように見える主な問題です。カーネルコードを読んで優先順位を高くする必要があるすべてのプロセスを特定するのではなく、唯一のオプションは、私のプロセス以外のすべてのプロセスを飢餓状態にしてから、任意の形式のioを必要とするものを他のコアに移動することです...うーん。 ..
2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.