VMware Cloud Community
wwimberly
Contributor
Contributor

Limiting IO per VM

What is the best way to limit the IO a VM can generate to a shared nfs datastore?

We have been setting limits on the number of IOPs per vmdk at the vSphere layer (sched.scsiX:X.throughputCap in the vmx), but this doesn't take into account the problem where a VM can generate high IO throughput with a smaller number of large block size IOPs.

I found mention on the web of an advanced option to limit IO based on throughput bandwidth (sched.scsiX:X.bandwidthCap) instead of the number of IOPs. I have not seen this option described in the documentation.

I have played around with setting sched.scsiX:X.bandwidthCap in config.extraConfig using the perl API and this seems to work. Is using bandwidthCap instead of throughputCap a supported configuration? Is there a downside to limiting IO in this way?

Reply
0 Kudos
4 Replies
jrocket
Contributor
Contributor

Can I ask what the use case is for limiting the I/O? 

Reply
0 Kudos
sparrowangelste
Virtuoso
Virtuoso

jrocket wrote:

Can I ask what the use case is for limiting the I/O? 

probably the vm is generating too many iops or saturating  his NFS causing the other vms to have a high latency

--------------------- Sparrowangelstechnology : Vmware lover http://sparrowangelstechnology.blogspot.com
Reply
0 Kudos
wwimberly
Contributor
Contributor

We are trying to prevent a "noisy neighbor" VM from generating excessive IO that increases latency and negatively impacts the other VMs that share that datastore.

Reply
0 Kudos
mcowger
Immortal
Immortal

Have you looked into SIOC, which is explcitly designed to solve this noisy neighbour problem?

--Matt VCDX #52 blog.cowger.us
Reply
0 Kudos