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?
Can I ask what the use case is for limiting the I/O?
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
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.
Have you looked into SIOC, which is explcitly designed to solve this noisy neighbour problem?