We need to run a high number of low-resource VMs concurrently in 2012 R2 Hyper-V. We've experimented with various configurations and using Perfmon.exe for reporting, we've found we're bottlenecking hard on IO.

Storage and data retention are of no concern for these boxes, so given a maximum combination of 4 mechanical drives for each server (we're avoiding SSDs for other reasons), what would give us the best IOPS with a large number of VMs?

The main concern is IO contention, if we have 12 VMs running on a four disk array, then wouldn't, say, 5 VMs doing IO operations cause contention for the remaining? If we split it into two arrays of two, would that resolve the issue?

1 Answer 1


Disk I/O is subject to the tragedy of the commons. With sheep mechanical disks, you have a hard ceiling for your grass random I/O. The only way to keep one bad actor from starving out the rest of the sheep VMs is to keep it on it's own patch of grass set of disks. Confining the greedy sheep VMs to their own pen will allow the rest to get resources more often than they would in a communal setting.

So yes, splitting your array will help reduce contention for the non-greedy VMs. It will greatly enhance it for the greedy ones, though.

  • This is my favorite response I've read on any stackexchange community. Also that clears that up, thank you.
    – Koala Bear
    Commented Sep 11, 2015 at 13:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .