Solaris10:TIPS:zfs + iscsiでのベンチマーク
提供:KinusatiWiki
目次 |
iscsi + zfsでのベンチマーク(負荷計測)
iscsiのCPU負荷を計測してみた。総評すると、標準のSolaris iscsi initiatorは遅いが、チューニングするとまずまずの速度になる。Linux iscsi initiatorは標準で十分早い
環境1
- iSCSI Target : AMD Phenom 9550(4core)(8GMem) (Solaris10 10/08 x64)
- iSCSI Initiator : Intel PentiumM 2.0GHz(2GMem) (CentOS5.2 x86)
- iSCSI Target側のファイルシステムはzfsでshareiscsi=onとしている。
- iSCSI Initiatorではext3として利用している。
計測結果
1. 100mファイル
[root@pentium mnt]# dd if=/dev/zero of=file count=100 bs=1024k 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 0.165362 seconds, 634 MB/s => Linux側でのWriteキャッシュに含まれてしまうため1000BASET以上のスピードが出てしまう。
2. 4Gファイル
[root@pentium mnt]# dd if=/dev/zero of=file2 count=4096 bs=1024k 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 177.509 seconds, 24.2 MB/s
3. 10Gファイル
[root@pentium mnt]# dd if=/dev/zero of=file3 count=10240 bs=1024k 10240+0 records in 10240+0 records out 10737418240 bytes (11 GB) copied, 515.037 seconds, 20.8 MB/s
環境2
- iSCSI Target : AMD Phenom 9550(4core)(8GMem) (Solaris10 10/08 x64)
- iSCSI Initiator :
- VMware Server 2.0 x64 for Windows
- ホストOS : Intel Q9550(4core) (8GMem)でVista x64を動作
- ゲストOS : CentOS5.2 x64 (2core/1GMemとして設定)
- iSCSI Target側のファイルシステムはzfsでshareiscsi=onとしている。
- iSCSI Initiatorではext3として利用している。
計測結果
1. 1Gファイル
[root@rac1 mnt]# dd if=/dev/zero of=file bs=1024k count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 32.6879 seconds, 32.8 MB/s
環境3
- iSCSI Target : AMD Phenom 9550(4core)(8GMem) (Solaris10 10/08 x64)
- iSCSI Initiator :
- VMware Server 2.0 x64 for Windows
- ホストOS : Intel Q9550(4core) (8GMem)でVista x64を動作
- ゲストOS : Solaris10 10/08(x64) (2core/1GMemとして設定)
- iSCSI Target側のファイルシステムはzfsでshareiscsi=onとしている。
- iSCSI Initiatorではufsとして利用している。
チューニング
- nagleアルゴリズムOFF
# vi /kernel/drv/iscsi.conf # # Disable Nagle within the iSCSI Initiator # tcp-nodelay=1; => 再起動
- iscsi initiatorのパラメータ変更
# for T in `iscsiadm list target | fgrep Target: | cut -d" " -f2` # do iscsiadm modify target-param -p maxrecvdataseglen=65536 $T iscsiadm modify target-param -p datapduinorder=no $T iscsiadm modify target-param -p initialr2t=no $T done
計測結果
1Gファイル(チューニング前)
bash-3.00# time mkfile 1g 1g.dat real 1m56.860s user 0m0.099s sys 0m6.502s => 8.7MByte/Sec
1Gファイル(チューニング後。3回計測)
bash-3.00# time mkfile 1g 1g.dat real 0m30.744s user 0m0.160s sys 0m6.266s => 33.3MByte/Sec
bash-3.00# time mkfile 1g 1g1.dat real 0m42.719s user 0m0.175s sys 0m5.383s => 23.97MByte/Sec
bash-3.00# time mkfile 1g 1g2.dat real 0m30.862s user 0m0.162s sys 0m3.633s => 33.1MByte/Sec
チューニングに対する考察
- 効果は確かにある(8.7MByte/Sec => 23 or 33MByte/Secになる)
- やや揺らぎが多いが理由がわからない
総評
- サイズが大きくなるほど速度が低下したが、キャッシュの影響が出ているのか?
- Solaris 標準のiscsi initiatorでは遅い。チューニングが必須。
- Linux iscsi initiatorは早い。