私は、変更されたLinuxカーネルを次のアーキテクチャのシステムでソフトリアルタイムオペレーティングシステムとして使用しています。
CPU1とCPU2にはそれぞれ8つのコアがあります。最小限のジッタで実行する必要があるプロセスは4つあります。これらのプロセスに対するハードウェアの中断の影響を最小限に抑えるにはどうすればよいですか(OSレベルとハードウェア構成レベルで)。?
これが私が今やっていることです:
- プロセスをCPU2のそれぞれ1つのコアにバインドします。
- SAS2208コントローラを無効にし、ブートディスクをC602 PCHのSATAコントローラにのみ接続します。
CPU1のハードウェア割り込みを減らすために、C602 PCHのほとんどの機能を無効にできるようです。プロセスをCPU2に分離する場合(つまり、DIMM#1-1から#1のリモートをサポートしていない)、これは必要ないと思いますか?メモリアクセス)-4とCPU1とCPU2間のプロセス間通信はありません)?
答え1
すべてのパフォーマンス調整と同様に、絶対的なルールはありません。その性質上、十分な資格を持っている場合は、いくつかのルールを作成することができますが、ごく一部しかありません。だからこの点に注意してください。ハードウェア割り込みを制御する方法は、実際にはワークロードの動作によって異なります。
あなたの質問については、割り込みが送信される場所も制御する必要があります。常にある種の中断が発生しますが、次のことができます。IRQ アフィニティの設定これを CPU1 に送信すると、CPU2 をデータ処理に使用できます。パケット調整オプションを使用して同じ操作を実行できます。
前述したように、絶対的なルールを提示するのは難しいが、不要なハードウェア割り込みの数を減らすのは良いスタートだが、IRQ相関関係とTX / RX相関関係を調整すると、利点も得られます。。特定の指標に集中することなく、全体的なアプリケーションのパフォーマンスを監視することを忘れていることも重要です。