tc
の使い方はかなり簡単です Stochastic Fairness Queuing(SFQ)を使用して、フロー間の公平な帯域幅共有を構成します。 、ただし、アプリケーションは複数のフローを開き、帯域幅の不公平なシェアを取得する可能性があります。 アプリケーション間で公平な帯域幅共有を構成することは可能ですか? 代わりに?
各アプリケーションをcgroupにグループ化することは、明確な最初のステップのように思えます。 SFQがクラスIDのハッシュをサポートしている場合、tc filter
を使用するのは簡単です。 各cgroupにクラスIDを割り当てます。残念ながら、SFQはこれをサポートしていないようです。もう1つの有望なアプローチは、クラス間で加重ラウンドロビンを実行するCBQを使用することです。残念ながら、重みをすべて等しくすることはうまくいかないようです。
cgroup間で帯域幅を公平に共有する別の方法はありますか?
承認された回答:
net_clscgroupコントローラーを確認してください。基本的に、特別なタグ(/mntpoint/net_cls.classid
で定義)を添付します そのcgroup内のアプリケーションに関連付けられたソケットで発信される各パケットに。後でこの「タグ」をclassid
として使用できます qdiscに接続されたフィルターで、トラフィックの送信元のcgroupに基づいてトラフィックをさまざまなクラスに渡します。
このトピックで私が見つけた唯一のドキュメントは、いくつかのRedHatスライド[Google経由のHTML]です。