ユーザ用ツール

サイト用ツール


01_linux:01_net:tcで帯域制限

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
01_linux:01_net:tcで帯域制限 [2016/06/02 08:21] matsui01_linux:01_net:tcで帯域制限 [2016/07/08 01:04] (現在) – [例] matsui
行 1: 行 1:
 +====== tcで帯域制限 ======
  
 +発信帯域を制限できる。
 +
 +[[01_linux:01_net:nicのスピード変更_ethtool|NICのスピード変更(ethtool)]]では、NIC自体のスピードを変更できる。
 +====== 10Mに制限 ======
 +bitで指定
 +<code console>
 +tc qdisc add dev eth0 root tbf limit 15Kb buffer 10Kb/8 rate 10Mbit
 +</code>
 +
 +
 +====== 確認コマンド ======
 +<code console>
 +tc qdisc show
 +qdisc tbf 8002: dev eth0 rate 50000Kbit burst 10Kb lat 819us
 +</code>
 +
 +====== 制限を削除 ======
 +<code console>
 +tc qdisc delete dev eth0 root tbf
 +</code>
 +
 +====== 例 ======
 +bpsでも指定できる。
 +<code console>
 +tc qdisc add dev eth0 root tbf limit 15Kb buffer 10Kb/8 rate 10Mbps
 +tc qdisc show
 +qdisc tbf 8004: dev eth0 rate 80000Kbit burst 10Kb lat 512us 
 +</code>
 +
 +30MBitに変更制限する場合
 +<code>
 +tc qdisc change dev rkm5w03y7gq3pv root tbf rate 30mbit latency 50ms burst 1mb
 +
 +[root@hv9142 ~]# tc qdisc | grep rkm5w03y7gq3pv
 +qdisc tbf 8018: dev rkm5w03y7gq3pv rate 30000Kbit burst 1024Kb lat 50.0ms
 +</code>
 +
 +
 +
 +====== 検証 ======
 +tc は/proc/net/devで見た時のTransmit(アウトバウンド)にしかかからない。
 +<color red>※HV上から仮想インターフェースにtcを書ける場合、仮想インターフェースのTransmit(VMからみるとインバウンド)にかけることになる。</color>
 +
 +[[http://www.atmarkit.co.jp/ait/articles/0803/18/news147_3.html|参考サイト]]
 +
 +===== 普通のサーバ =====
 +
 +=== 何も制限をかけてない場合 ===
 +<code>
 +# i=bond0
 +# while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); \
 +> sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); \
 +> echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done
 +14 kbps
 +5 kbps
 +47177 kbps
 +204251 kbps
 +204287 kbps
 +204298 kbps
 +204369 kbps
 +204417 kbps
 +138687 kbps
 +</code>
 +
 +=== 10Mbpsで制限をかけた場合 ===
 +<code>
 +# tc qdisc add dev bond0 root tbf rate 10mbit latency 50ms burst 1mb mtu 33000
 +# tc qdisc | grep bond0
 +qdisc tbf 800a: dev bond0 rate 10000Kbit burst 1024Kb lat 50.0ms 
 +
 +# i=bond0
 +# while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done
 +11572 kbps
 +11590 kbps
 +11579 kbps
 +11566 kbps
 +11578 kbps
 +11566 kbps
 +11566 kbps
 +</code>
 +
 +
 +===== 仮想VM(HV上から仮想インターフェースへかける) =====
 +
 +=== 制限なし ===
 +<code>
 +# i=nxiort3mfzk3mq
 +# while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done
 +98837 kbps
 +98661 kbps
 +98789 kbps
 +98711 kbps
 +98765 kbps
 +98666 kbps
 +98790 kbps
 +98779 kbps
 +98708 kbps
 +98803 kbps
 +98660 kbps
 +</code>
 +
 +=== 1Mに制限した場合 ===
 +<code>
 +tc qdisc change dev nxiort3mfzk3mq root tbf rate 100mbit latency 50ms burst 1mb mtu 33000
 +
 +# i=nxiort3mfzk3mq
 +# while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done
 +1157 kbps
 +1157 kbps
 +1157 kbps
 +1157 kbps
 +1157 kbps
 +1157 kbps
 +1162 kbps
 +</code>
 +
 +
 +{{tag>tc 帯域}}