Should I worry about Split I/O in a SAN?
We have a NetApp Storage system presenting LUNs to a few Hyper-V clusters. When running a system performance trace (in perfmon) on a 2008 R2 there's a warning about a "high level of Split I/O". Reading up on split I/O I find that this is most likely caused by a fragmented drive.
I find it hard to believe that the drive is fragmented in the traditional sense, because everything is virtual (virtual hard disk on a LUN, on a volume, in an aggregate, on a storage system that writes anywhere it sees fit and de-duplicates that data also). So should I even be worried about this? I can't see any evidence of storage problems, such as excessive latency.
Incidentally, running a defrag analysis on one of our VMs shows ~50% fragmented data. I think I read somewhere that windows would automatically split I/O if it detected fragmentation above 20% is that true? The defrag task is disabled, so how would it know?
Disk fragmentation in VMs is just a fact of life for the reason you've described. In most workloads, it's not something that needs to be worried about. If you have workloads that do massive sequential IO, this might be a cause of poor performance, but not on random read/write workloads.
There's a reason VMs are sometimes referred to as I/O blenders :)
Multiple I/O's are always less efficient. Whether it manifests as a performance issue would be something you need to determine. Some files by definition are large and have data organized randomly, so some split I/O's would be expected.
Split I/O's can also be a symptom of another underlying bottleneck, such as disk queue length.
You may want to ensure you are measuring storport latency. This is buried in perfmon, and can be measured as described in the More Information section of:
http://support.microsoft.com/kb/978000
It should be fairly well known that 2008 R2 SP1 storport SAN performance is slower than Windows 2003 on the same hardware.
You may want to ensure that the OS is up to date on relevant non-security hotfixes if there are performance issues.
For Netapp, split IO generally means bad alignment. If your MBR offsets the VM's disk blocks so that they span the borders of Netapp blocks, then each time you do IO on a single block from the OS, you're having to hit the storage twice.