仮想化OSでTSO

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]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.