The first patch fixes the throttling which was broken by a previous commit.
The next patch replace the existing throttling algorithm by the well described leaky bucket algorithm. Third patch implement bursting by adding *_threshold parameters to qmp_block_set_io_throttle. The last one allow to define the max size of an io when throttling by iops via iops_sector_count to avoid vm users cheating on the iops limit. The last patch adds a metric reflecting how much the I/O are throttled. since v1: Add throttling percentage metric [Benoît] Benoît Canet (5): block: Repair the throttling code. block: Modify the throttling code to implement the leaky bucket algorithm. block: Add support for throttling burst threshold in QMP and the command line. block: Add iops_sector_count to do the iops accounting for a given io size. block: Add throttling percentage metrics. block.c | 439 ++++++++++++++++++++++++++------------------- block/qapi.c | 32 ++++ blockdev.c | 174 ++++++++++++++++-- hmp.c | 38 +++- include/block/block_int.h | 18 +- include/block/coroutine.h | 5 + qapi-schema.json | 42 ++++- qemu-coroutine-lock.c | 14 ++ qemu-options.hx | 2 +- qmp-commands.hx | 34 +++- 10 files changed, 586 insertions(+), 212 deletions(-) -- 1.7.10.4