Linux で cgroup と tc を使用すると、レートが正確に適用されないようです: 10 倍の差異

Linux で cgroup と tc を使用すると、レートが正確に適用されないようです: 10 倍の差異

私は、インターネット上のあらゆる場所 (ServerFault を含む) で見つけた「標準的な」方法を使用して、cgroups と tc を使用してプロセスの帯域幅を制限しようとしています。

実際に見ると、私が設定した制限はtc実際には約 10 倍になります。次のスクリーンショットを参照してください。

ここに画像の説明を入力してください

rateを100kbit (100kbps ではありません) に設定しましたceil。そのため、以下の wget で 1 秒あたり約 10 キロバイトが表示されることを期待していました。しかし、実際には 500kBps が表示されました。

htpレートを100に更新するとキロビット/秒(100キロバイト/秒)速度が10まで上昇するのを確認しましたメガバイト/秒100倍になります。

tc class change dev ens3 classid 1:1 htb rate 100kbps

# the curl in the other terminal now shoots up to 9.6MB/s
image.iso.1    53%[================>                ] 346,72M  **9,48MB/s**    tps 49s

なぜこれが私の HTB 構成と一致しないのか理解できません。何が間違っているのか、何かお分かりですか?

答え1

tc では、アップロード速度を調整します。wget では、ダウンロード速度をテストします。テストでは、クライアントから送信された TCP ACK を調整しているので、この場合、データ / ack の比率は 1:100 であると結論付けることができます。

tc を使用して入力フローを ifb インターフェイスにリダイレクトし、そのインターフェイス上でシェーピングすることで、ダウンロード速度をシェーピングできます。ここそれを実行する方法の例があります。

関連情報