I'm looking at Resource Governor on 2014 and how it relates to volumes. I can see where to set up MAX|MIN IOPS PER VOLUME on a resource pool. That's not keyed by volume, however sys.dm_resource_governor_resource_pool_volumes is. Should I read that as the pool's definition applies to every volume but the DMV reports what actually happened on each?
My understanding is this: say I have three volumes – E, F and G. I set min = 10, max = 300 on the pool. Then there can be, at most, 300 IOPS against each drive for a max of 900 for the pool. The DMV shows what IO actually happened for each volume. If the table/filegroup definition were such that the majority of the activity happened on one volume (let's say F) the numbers from the DMV would show large read_bytes_total
and write_bytes_total
for that volume and smaller numbers for the others. Is this a correct understanding?
Neither BoL nor any of the blogs I've read make this explicit.
Best Answer
It seems reasonable to assume, per the documentation and indeed the names of the parameters themselves, that
MIN_IOPS_PER_VOLUME
andMAX_IOPS_PER_VOLUME
control the maximum quantity of I/Os per second per volume.i.e. as in your question, if you have three volumes in the resource pool, and set
MAX_IOPS_PER_VOLUME
to 300, then you'd have a maximum total IOPS of 900.Without source-code-level access to SQL Server, it's impossible to say for certain if that's how it actually works, however the documentation says (emphasis mine):