私は多くのスレッドと非同期I / Oを生成するテストプログラムを実行しています。 /proc/interrupts で見られる割り込みの数が多すぎるため、CPU の Softirq 処理が 100% 飽和しているため、プログラムが特定のポイント以上に拡張できません。
によると:http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.htmlCALは「Remote Function Call Interrupt」の略ですが、Googleで見つけることができる情報はそれがすべてでした。だから...これはどういう意味ですか? CAL割り込みのため、CPUをあまり使用しないI / Oアダプタカードにsmp_affinityが割り当てられています。これは私のプログラムが間違ったSMPの好みで実行されていることを意味しますか?
答え1
リモート関数呼び出し割り込みは次の系列に属します。プロセッサ間割り込みすなわち、あるプロセッサからシステムの他のプロセッサに転送される割り込み信号は、IRQラインを通過せずに、全てのCPUのローカルAPICを接続するバスのメッセージに直接伝達される。
リモート関数呼び出し割り込みは通常、送信者を除くすべてのプロセッサに送信され、そのプロセッサに送信者が渡した機能を実行させる。 Linux x86カーネルでは:
対応する割り込みハンドラの名前は次のとおりです。呼び出し関数割り込み()。
割り込みは通常次のように発生します。smp_call_function()施設特徴。
一般的なユースケースには、シャットダウン時のすべてのCPU停止、クロック補正、TLBフラッシュなどが含まれます。もっと。
もちろん、異なるsmp-affinity設定はTLBフラッシュの数に間接的に影響を与える可能性がありますが、この効果は間接的であり、TLBフラッシュが関数呼び出しの中断の唯一の原因ではないため、その割合だけで効率を判断するために使用してはなりません。 1位または好み設定。
smp-affinityによって設定された相関の最初の判断は、コンテキスト切り替えの回数です。低いほど良いです。