
私は、インターネット上のあらゆる場所 (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 インターフェイスにリダイレクトし、そのインターフェイス上でシェーピングすることで、ダウンロード速度をシェーピングできます。ここそれを実行する方法の例があります。