The ESXi I/O scheduler (mclock) accounts for I/Os larger than 32KB as multiple I/O operations.
For example, if a virtual machine is configured with a 100 IOPS limit and the guest OS issues 320KB I/Os, it will appear to be limited at 10 IOPS, as shown in the example above.
Note:
In versions prior to ESXi 7.0 Update 3q and 8.0 Update 3, when IOPS limits were set via Storage Policy, the I/O was controlled by iofilter instead of the mclock scheduler. In this case, I/O size is not taken into account. (Please see KB 385258 for more details.)
Even in versions prior to ESXi 7.0 Update 3q and 8.0 Update 3, if the limit is configured as a per-virtual disk throughputCap (rather than via Storage Policy), the mclock scheduler is used, and I/O size will be considered.
This is expected behavior.
User can tune this behavior using advanced configuration options as outlined in KB 313242.