TSO(TCP segmentation offload)
http://e-words.jp/w/TSO.html
要は
パケット処理をNICに肩代わりさせてCPU負荷を減らそう
というもの
仮想化ゲストではTSOを切ったほうが良いという記事を見つけたので
やってみた。
OS・・・Debian(ESXi上ゲストOS)
CPU・・・Xeon 5130 @ 2.00GHz x4
Mem・・・2GB
OS・・・FreeNAS(FreeBSD 8.2-RELEASE-p3)
CPU・・・AMD Opteron 1210 @ 1.8GHz x2
Mem・・・2GB
方法
1GBのファイルを5回、NFSサーバに書きこんでみます
ツールが無いと設定出来ない。。。
のでさくっとインストール
# apt-get install ethtool
設定です
# cat /etc/fstab 192.*.*.*:/NFS/test /mnt/test nfs defaults,noatime,rsize=32768,wsize=32768 0 0
noatime・・・余計なディスク書き込みを軽減させよう~noatime編~
rsize、wsize・・・5. NFS の性能を最適化する
デフォルトでonになっています。
# ethtool -K eth1 tso on # # ethtool -k eth1 Offload parameters for eth1: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: on udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: on ntuple-filters: off receive-hashing: off
tcp-segmentation-offload: on
書き込み計測してみる
# for i in [1] [2] [3] [4] [5] ;do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/mnt/test/testhdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done [1] 2012年 3月 13日 火曜日 21:09:40 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 19.7642 s, 54.3 MB/s real 0m19.774s user 0m0.220s sys 0m1.784s 2012年 3月 13日 火曜日 21:10:00 JST [2] 2012年 3月 13日 火曜日 21:10:10 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 10.0383 s, 107 MB/s real 0m10.045s user 0m0.224s sys 0m1.752s 2012年 3月 13日 火曜日 21:10:20 JST [3] 2012年 3月 13日 火曜日 21:10:30 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.7649 s, 110 MB/s real 0m10.681s user 0m0.580s sys 0m2.048s 2012年 3月 13日 火曜日 21:10:41 JST [4] 2012年 3月 13日 火曜日 21:10:51 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.51862 s, 113 MB/s real 0m9.526s user 0m0.484s sys 0m1.968s 2012年 3月 13日 火曜日 21:11:00 JST [5] 2012年 3月 13日 火曜日 21:11:10 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.6427 s, 111 MB/s real 0m9.652s user 0m0.360s sys 0m1.964s 2012年 3月 13日 火曜日 21:11:20 JST
TSOオフにする
# ethtool -K eth1 tso off # # ethtool -k eth1 Offload parameters for eth1: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: off udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: on ntuple-filters: off receive-hashing: off
tcp-segmentation-offload: off
書き込み計測してみる
# for i in [1] [2] [3] [4] [5] ;do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/mnt/test/testhdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done [1] 2012年 3月 13日 火曜日 21:07:09 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 12.6154 s, 85.1 MB/s real 0m12.622s user 0m0.252s sys 0m1.876s 2012年 3月 13日 火曜日 21:07:22 JST [2] 2012年 3月 13日 火曜日 21:07:32 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.5219 s, 113 MB/s real 0m9.529s user 0m0.184s sys 0m1.924s 2012年 3月 13日 火曜日 21:07:41 JST [3] 2012年 3月 13日 火曜日 21:07:51 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.45724 s, 114 MB/s real 0m9.886s user 0m0.676s sys 0m2.016s 2012年 3月 13日 火曜日 21:08:01 JST [4] 2012年 3月 13日 火曜日 21:08:11 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 15.5767 s, 68.9 MB/s real 0m15.583s user 0m0.580s sys 0m1.800s 2012年 3月 13日 火曜日 21:08:27 JST [5] 2012年 3月 13日 火曜日 21:08:37 JST 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.46872 s, 113 MB/s real 0m9.476s user 0m0.472s sys 0m2.060s
速度
TSOあり・・・76.86 MB/s
TSOなし・・・98.8 MB/s
CPU負荷
TSOあり・・・12.0%
TSOなし・・・13.55%
(ESXi vShere Clientから)
参考URL
・さくらのVPSで「CentOS」を利用していますが、回線速度が遅くアクセスに時間がかかります。
・さくらのVPSで「Debian」を利用していますが、回線速度が遅くアクセスに時間がかかります。
・さくらのVPSで「FreeBSD」を利用していますが、回線速度が遅くアクセスに時間がかかります。
(ArchLinuxはCentOSと同じ方法で設定することができます。)
[tegaki]すこし速くなったんかな[/tegaki]