On 08/07/2017 11:15 AM, Alberto Garcia wrote: > Both the throttling limits set with the throttling.iops-* and > throttling.bps-* options and their QMP equivalents defined in the > BlockIOThrottle struct are integer values. > > Those limits are also reported in the BlockDeviceInfo struct and they > are integers there as well. > > Therefore there's no reason to store them internally as double and do > the conversion everytime we're setting or querying them, so this patch > uses int64_t for those types. > > LeakyBucket.level and LeakyBucket.burst_level do however remain double > because their value changes depending on the fraction of time elapsed > since the previous I/O operation. > > There's one particular instance of the previous code where bkt->max > could have a non-integer value: that's in throttle_fix_bucket() when > bkt->max is initialized to bkt->avg / 10. This is now an integer > division and the result is rounded. We don't need to worry about this > because: > > a) with the magnitudes we're dealing with (bytes per second, I/O > operations per second) the limits are likely to be always > multiples of 10. > > b) even if they weren't this doesn't affect the actual limits, only > the algorithm that makes the throttling smoother. > > Signed-off-by: Alberto Garcia <be...@igalia.com> > --- > include/qemu/throttle.h | 4 ++-- > util/throttle.c | 7 ++----- > 2 files changed, 4 insertions(+), 7 deletions(-)
Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature