Unsolved

This post is more than 5 years old

8 Posts

1324

March 4th, 2010 16:00

NX4, iSCSI, multipathing, VMware - sequential throughput

I have an NX4 connected to a Cisco 3560G (via cat6).  I also have a VMware server (HP DL360 G6) with 4 NICs connected to the 3560G.  Is my maximum throughput on a sequential operation to a single iSCSI target limited to a single iSCSI path (1Gbps conection, ie 120MB/s)?

I'm thinking of running SQL in VMware and housing the dbs on the SAN.  Numerous documents I've found state that a good SAN (iSCSI or FC) performance test with SQL is to do a huge sequential read in SQL to your LUN.  This is achieved by running this in a query:  BACKUP DATABASE TO DISK = 'NUL'

The best I get when it is done is 97.xxxx MB/s.  From the same document, 200+ MB/s = good, 150-200 = okay, 100-150 = poor, <100 = awful.

Also, I've downloaded and ran SQLIOSIM.  I get the same peak throughput.  When I monitor the cisco 3560G, I can see that only one of the Gbps links are handling the data (about 87% of the Gbps link).  There is no use of multi paths or anything like that.

In hoping to eliminate any wild goose chases, I need to know if an operation such as above (the BACKUP DATABASE...) can achieve higher throughput than 100MB/s from VMware to an NX4 (both connected to a 3560G).  Actually, can it be done faster on any SAN via iSCSI?  I've tried setting up multipaths, changing VMware networking (vmkernels, round robin policies, etc).  I've read whitepapers, tech docs, and instructions from EMC/VMware, Microsoft, etc.  Is there anyone that can tell me that they have done a sequential read over iSCSI at speed far greater than 100MB/s?

674 Posts

March 4th, 2010 22:00

Have you checked http://virtualgeek.typepad.com/virtual_geek/2009/01/a-multivendor-post-to-help-our-mutual-iscsi-customers-using-vmware.html

4 Operator

 • 

8.6K Posts

March 5th, 2010 00:00

my *guess* is that you need to use more than one LUN to get over 100 MB/s

I would suggest to talk to your local EMC technical contact - for the solutions on Powerlink there are also internal validation reports that usually contain performance information

8 Posts

March 5th, 2010 04:00

I did try a quick setup and test with multiple LUNs but I was not initially successful on acheiving higher transfer rates.  I might have to revisit and devote a little more time to that possibility again.

I will have to contact my local EMC technical contact.  I was just hoping that maybe someone might reply with "yep, I did it when I was implementing SQL and this is how...".

Thanks!

8 Posts

March 5th, 2010 04:00

Peter, yes I saw that document and I'll raise you with this one:

http://virtualgeek.typepad.com/virtual_geek/2009/09/a-multivendor-post-on-using-iscsi-with-vmware-vsphere.html

I've devoted a lot of time and effort into reading and trying what I've read.  I keep reading about theoreticals and why it should or should not work.  I'm initially asking if someone has done it and can prove throughput of >150MB/s is acheivable (again, throughput of a single sequential read).  Then I'll follow up with "how?".

16 Posts

March 5th, 2010 13:00

Are you referring to iSCSI VMFS datastores with VMDKs for the SQL drives sitting on the datastores? Or are you talking about using the iSCSI initator inside of a Windows VM to address the LUNs on the array? The former has a lot of factors that affect IO performance (guest OS disk alignment, potential to use pvscsi (when IOPS>2000), the speed of the nics assigned to the iSCSI port group, mixing IO on a datastore, etc.). The latter does too, though in particular, unless you've dedicated a physical nic to the VM (a bad idea), you're going to get substantially less than 1 Gbps back to the iSCSI target since the bandwidth is shared across multiple VMs.

674 Posts

March 8th, 2010 00:00

Which VMware version are we talking about?

8 Posts

March 8th, 2010 14:00

In general, I am talking about installing an SQL Windows (Server 2008 x64) machine inside VMware (ESXi 4) and getting over 100MBytes/s sequential read throughput over iSCSI (1Gbps links) to a single target (what appears as a single drive letter on the SQL Windows machine - but it actually multiple drives on the SAN).

***UPDATE!!  YES it can be done...

I was able to accomplish this over the weekend.

- 3 nics on the SAN connected to a gigabit switch - this ports were in their own VLAN.

- 3 nics on the VMware server on the same switch as above, and only in the VLAN mentioned above.  I added a VMware networking vSwitch for the SAN.  I attached a Virtual Machine port group to each nic (only one per nic).  In other words, "SAN nic0" was vmnic0, "SAN nic1" was vmnic1, and "SAN nic2" was vmnic2.  When setting up the SQL VM in VMware ("Edit virtual machine settings"), add those 3 network adapters in addition to the default VM Network adapter.  Basically, you are passing through the adapters to the Windows VM.

- After installing Windows (server 2008 x64), set each of those nics to have their own individual IP addresses (same subnet as the SAN).  Then, setup the iSCSI initiator to connect to the SAN.  In your iSCSI connections properties, setup MCS (Multiple Connected Sesstions).  There will be one already there addressed by "0.0.0.0/43860" or something like that.  That will actually be one of the adapters.  You have to add the other 2 "SAN" adapters.  I added one and watched the Network Utilization in Task manager to see if one picked up from 0%.  I then did the same to get the remaining one.  I verified the MCS policy was Round Robin.  Done.

Now, with I/O read requests (heavy ones), I was able to get 150MB/s and sometimes peak over 200MB/s.  What made the last bit of difference was presenting multiple LUNs (2 of them to be exact) to the Windows VM for the SQL databases.  I setup one filesystem on the SAN, and chunked it up into 2 LUNs.  Then in the Windows VM, I saw 2 disks and created a STRIPED volume (64k allocation unit size).  I was able to get sustained 190MBytes/s throughput (peaks up into 225-230MB/s).  3 LUNs (3 Windows disks Striped) - about 180MB/s sustained.  Last, a single LUN presented as a single disk in Windows - about 120-150MB/s.  Not sure why 2 LUNs were faster than 3 LUNs, but I'm guessing it has to do with overhead at the backend at the SAN.  If someone knows why, I'll listen.

I also tried 2 nics on the SQL VM.  3 was better than 2 as expected, but not a lot.  When a test of 3 nics provided 190MB/s, the same test at 2 nics produced 140MB/s.  Each physical nic did work harder when there were 2 of them, versus 3.

Another test was 3 nics and 2 LUNs, but not in a Windows STRIPED volume.  It dropped to about 140MB/s.

So, in conclusion, the best scenario I have tested so far was 3 iSCSI (1Gb/s) nics and 2 LUNs STRIPED together (64k alloc unit) in Windows.  If someone finds faster, I'm all ears.

Does this guarantee superior disk subsystem performance in SQL?  Of course not, we need to consider write throughput, other systems sharing the SAN, etc.  But, this is a good start.     Or, is this (running Windows striped volumes over iSCSI) totally unsupported and a recipe for disaster?? 

Time will tell, that's why we make backups...

Top