The screenshot below shows what the new “IOPS limit for object” capability looks like in the VM Storage Policy. Simply select “IOPS limit for object” for your policy, and then select an integer value for the IOPS limit. Any object (VMDK) that has this policy assigned will not be able to generate more than that number of IOPS.
The IO size for IOPS Limit is normalized to 32KB. This means that if you set the IOPS Limit to 10,000 and the typical I/O size from the VM was 64KB, then you could do only 5,000 IOPS. If your block size is 4KB/8KB/16KB or 32KB, you would be able to achieve the 10,000 IOPS limit. My understanding is that there is no way to change this normalized I/O size in this release. Note that this is a hard limit on the number of IOPS so even if there are plenty of resources available on the system to do more, this will prevent the VM/VMDK from doing so.
One thing to consider is that not only is read and write I/O counted towards the limit, but also any snapshot I/O that occurs against the VM/VMDK is added to the IOPS limit.
If the I/O against a particular VM/VMDK rises about the IOPS Limit threshold, i.e. it is set to 10,000 IOPS and we receive the 10,001st I/O, then that I/O is delayed/throttled.