ユーザ用ツール

サイト用ツール


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

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
01_linux:01_net:tcで帯域制限 [2016/07/08 10:03]
matsui [例]
01_linux:01_net:tcで帯域制限 [2016/07/08 10: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 帯域}}
01_linux/01_net/tcで帯域制限.txt · 最終更新: 2016/07/08 10:04 by matsui

Yesterday:349 Today:300 Total:07005