Sql-server – SQL Server 2014, Volumes in Resource Governor

resource-governorsql serversql server 2014

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 and MAX_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):

MINIMUM_IOPS_PER_SECOND:
Specifies the minimum I/O operations per second (IOPS) per disk volume to allow for the resource pool.

MAXIMUM_IOPS_PER_SECOND:
Specifies the maximum I/O operations per second (IOPS) per disk volume to allow for the resource pool.