I have two SuperMicro servers directly connected (no switch) by two 10 GBit Intel X540-T2 NIC. One server runs Citrix XenServer 6.2, the other runs Debian 7.
I then installed open-iscsi and iscsitarget on the Debian system, configured a 12 GByte RAM disk, mounted it as an iSCSI storage on the XenServer and provided a 12 GByte virtual disk to one of the VMs running on that XenServer.
It turns out that I can't get more than about 290 MByte/s:
root@s1002:~# dd if=/dev/zero of=/dev/xvdb bs=16M
dd: writing `/dev/xvdb': No space left on device
737+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 42.6216 s, 290 MB/s
root@s1002:~# dd if=/dev/xvdb of=/dev/null bs=16M
736+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 46.0591 s, 268 MB/s
I then repeated the same test with a commercial storage and I got roughly 450 MByte/s transfer speed even when using physical disks.
I expected a similar or even better speed when using my Linux server with a ramdisk, but it seems that either my iscsitarget configuration or my network configuration is not optimal.
The network is configured with jumbo frames (tested with ping -M do -s 8972 ipaddr
on both ends).
The targetcli setup is pretty much the default configuration:
/> ls
o- / ....................................................................................................................... [...]
o- backstores ............................................................................................................ [...]
| o- fileio ................................................................................................. [0 Storage Object]
| o- iblock ................................................................................................. [0 Storage Object]
| o- pscsi .................................................................................................. [0 Storage Object]
| o- rd_dr .................................................................................................. [0 Storage Object]
| o- rd_mcp ................................................................................................. [1 Storage Object]
| o- ramdisk ............................................................................................. [ramdisk activated]
o- iscsi ........................................................................................................... [1 Targets]
| o- iqn.2003-01.org.linux-iscsi.server85.x8664:sn.f63360d26dd2 ........................................................ [1 TPG]
| o- tpgt1 ......................................................................................................... [enabled]
| o- acls .......................................................................................................... [0 ACL]
| o- luns .......................................................................................................... [1 LUN]
| | o- lun0 ..................................................................................... [rd_mcp/ramdisk (ramdisk)]
| o- portals .................................................................................................... [1 Portal]
| o- 10.0.12.85:3260 ................................................................................................ [OK]
o- loopback ......................................................................................................... [0 Target]
o- tcm_fc ........................................................................................................... [0 Target]
/>
How can I configure iscsitarget and/or the NIC to improve the network performance so that it matches the commercial storage?