This patchset implement continous leaky bucket throttling.

It use two requests queue to enable to do silly unbalanced throttling like
block_set_io_throttle 0 0 0 0 6000 1

It use two timer to get the timer callbacks and the throttle.c code simple

It add unit tests.

The throttling core is pretty solid and the surrouding of the patchset needs
polish. (new options ...)

since previous version:
Fix bdrv_drain_all broken logic hence fixing the assertion error at exit.

v3-V4:
    wrap qemu-option.hx declararation [Eric]
    continuus -> continuous [Fam]
    unit test [Paolo]

Benoît Canet (5):
  throttle: Add a new throttling API implementing continuous leaky
    bucket.
  throttle: Add units tests
  block: Enable the new throttling code in the block layer.
  block: Add support for throttling burst max in QMP and the command
    line.
  block: Add iops_sector_count to do the iops accounting for a given io
    size.

 block.c                   |  349 ++++++++++----------------------
 block/qapi.c              |   50 +++--
 blockdev.c                |  207 ++++++++++++++-----
 hmp.c                     |   36 +++-
 include/block/block.h     |    1 -
 include/block/block_int.h |   32 +--
 include/qemu/throttle.h   |  105 ++++++++++
 qapi-schema.json          |   40 +++-
 qemu-options.hx           |    4 +-
 qmp-commands.hx           |   34 +++-
 tests/Makefile            |    2 +
 tests/test-throttle.c     |  494 +++++++++++++++++++++++++++++++++++++++++++++
 util/Makefile.objs        |    1 +
 util/throttle.c           |  391 +++++++++++++++++++++++++++++++++++
 14 files changed, 1405 insertions(+), 341 deletions(-)
 create mode 100644 include/qemu/throttle.h
 create mode 100644 tests/test-throttle.c
 create mode 100644 util/throttle.c

-- 
1.7.10.4


Reply via email to