テストしようとしています。国API組み込みLinux環境の機能。私は 'を使用しましたPKTGEN'多くのパケットを生成し、私のネットワークインターフェイスの割り込み数を確認してください。/proc/割り込み。
割り込み数が生成されたパケットよりも比較的少ないことがわかりました。私も適応しようとしています。Web開発予算'価値は次から来る。1到着1000(デフォルトは300)これにより、netdev_budgetが増加するにつれて割り込み数が減少することを観察できます。
しかし、netdev_budgetを増やすことは役に立たないようです。この割り込みは、netdev_budgetが300に設定されたときに観測される割り込みの数に似ています。
私の質問は次のとおりです。
- 「netdev_budget」はNAPIにどのような影響を与えますか?
- 割り込みカウントの変化を観察するために、他のどのパラメータを調整できますか、または調整する必要がありますか?
- LinuxでNAPI機能をテストする他の方法はありますか? (ネットワークドライバコードを直接見ることに加えて)
どんな助けでも大変感謝します。
よろしくお願いします。
答え1
私は書いたLinuxネットワークのチューニングに関する包括的なブログ投稿NAPI の重みを含む Linux ネットワークスタックの監視、調整、最適化のすべてを説明します。見学する。
覚えておいてください:一部のドライバー欲しくないNAPI は、NIC の起動時に IRQ を無効にします。しかし、一部の人はそうではありません。ドライバのハードIRQハンドラを確認して、ハードIRQが無効になっていることを確認してください。
ブログ投稿と下記のように、場合によってはハードIRQが再び有効になります。
あなたの質問について:
増加すると、
netdev_budget
NET_RX Softirqが処理できるパケットの数が増えます。処理できるパケット数のタイムアウトによって制限され、これは調整できません。これは、NET_RX SoftirqがCPU使用率を100%占めることを防ぐためです。デバイスが割り当てられた時間に処理するのに十分なパケットを受信できない場合は、ハード割り込み再度有効NAPIが無効になっています。NICのIRQマージ設定を変更することもできます(サポートされている場合)。これを行う方法と正確な意味の詳細については、上記のブログ記事をご覧ください。
ファイルに監視を追加する必要があります
/proc/net/softnet_stat
。このファイルには、処理中のパケット数、タイムアウトの有無などを理解するのに役立つフィールドがあります。
可能であれば、次の質問を検討してください。
ハード割り込み率が重要なのはなぜですか?言い換えれば、NICドライバのHardirqハンドラはできるだけ少ない作業を行う必要があるため、システムが多くの作業を実行することは問題にならない可能性があります。それならそうではないので、慎重に重量を量る必要があります。ただし、IRQマージ設定とIRQ CPUアフィニティを調整して処理を分散することで、NICによって生成されたハード割り込みの数と特定のCPUが処理するハード割り込みの数をそれぞれ変更できます。
パケット処理スループットに興味があるのか、パケット処理待ち時間に興味があるのかを考慮する必要があります。懸念に応じて、ネットワークスタックを適切に調整できます。
覚えておいてください:Linuxネットワークスタックを完全に調整および最適化するには、すべてのコンポーネントを監視および調整する必要があります。それらはすべて互いに絡み合っており、スタックの単一の側面のみを監視および調整することは困難です(しばしば不正確です)。