TUNインターフェースのmulti_queue機能を試しています。うまく機能し、トラフィックが異なるキューに分散され、アプリケーションのパフォーマンスが向上します。
しかし、multi_queueと一緒にtuntapコマンドのみを使用してTUNインターフェイスを作成すると、multi_queue設定なしでtuptapコマンドを使用してインターフェイスを生成するよりも、カーネルがより多くのGBのメモリを消費することになります。
カーネル5.4.0-94-genericを実行しているUbuntu 20でテストしました。
私のテストは簡単でした。 vmstatを実行して利用可能なメモリを監視し、スクリプトを介してtuptapとmulti_queueを使用して1200 TUNインターフェイスを作成しました。
私の質問は、メモリ消費の間にこれらの違いが発生する理由です。ありがとうございます。
答え1
今理解できたと思います。今日、私たちがmulti_queue tunインタフェースを生成すると、カーネルは無条件に256個のキューを生成します。 multi_queue フラグを設定しないと、1 つの tx キューのみが生成されます。