次のようなアーキテクチャを持つシステムで、変更されたLinuxカーネルをソフトリアルタイムOSとして使用しています。
CPU1とCPU2にはそれぞれ8つのコアがあります。最小のジッターで実行する必要がある4つのプロセスがあるので、これらのプロセスに対するハードウェア割り込みの影響を最小限に抑えるために(OSレベルとハードウェア構成レベルの両方で)何をすべきですか?
これは私が今していることです:
C602 PCHのほとんどの機能を無効にして、CPU1のハードウェア割り込みを減らすことができるようです。プロセスをCPU2に分離する場合(つまり、DIMM#1-1から#1へのリモートメモリアクセスがない場合)、これは不要です。 -4およびCPU1とCPU2間のプロセス間通信なし)?
他のパフォーマンスチューニングと同様に、絶対的なルールはありません。その性質上、十分な資格で作成できるルールはいくつかありますが、ごくわずかです。だからそれを覚えておいてください。ハードウェア割り込みをどのように制御するかは、ワークロードの動作によって異なります。
あなたの質問のために、あなたはまた、割り込みがどこに送られるかを制御しなければなりません。常に何らかの割り込みが発生しますが、 IRQアフィニティを構成 でCPU1に送信し、CPU2をデータ処理に使用できるようにすることができます。パケットステアリングオプションでも同じことができます。
前に述べたように、絶対的なルールを与えるのは難しいですが、不要なハードウェア割り込みの数を減らすことは良いスタートですが IRQアフィニティとTX/RXアフィニティを試してみると利点も得られます 。また、特定のメトリックに固執せず、アプリケーション全体のパフォーマンスを監視することを忘れないことも重要です。