qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/1] The intro for QEMU disk I/O limits
@ 2011-07-26  8:59 Zhi Yong Wu
  2011-07-26  8:59 ` [Qemu-devel] [PATCH v2 1/1] The codes V2 " Zhi Yong Wu
  0 siblings, 1 reply; 23+ messages in thread
From: Zhi Yong Wu @ 2011-07-26  8:59 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, aliguori, stefanha, kvm, Zhi Yong Wu, zwu.kernel, ryanh,
	luowenj, vgoyal

The main goal of the patch is to effectively cap the disk I/O speed or counts of one single VM.It is only one draft, so it unavoidably has some drawbacks, if you catch them, please let me know.

The patch will mainly introduce one block I/O throttling algorithm, one global timer and one block queue for each I/O limits enabled drive.

When a block request is coming in, the throttling algorithm will check if its I/O rate or counts exceed the limits; if yes, then it will enqueue to the block queue; The timer will periodically handle the I/O requests in it.

Some available features follow as below:
(1) global bps limit.
    -drive bps=xxx            in bytes/s
(2) only read bps limit
    -drive bps_rd=xxx         in bytes/s
(3) only write bps limit
    -drive bps_wr=xxx         in bytes/s
(4) global iops limit
    -drive iops=xxx           in ios/s
(5) only read iops limit
    -drive iops_rd=xxx        in ios/s
(6) only write iops limit
    -drive iops_wr=xxx        in ios/s
(7) the combination of some limits.
    -drive bps=xxx,iops=xxx

Known Limitations:
(1) #1 can not coexist with #2, #3
(2) #4 can not coexist with #5, #6


Zhi Yong Wu (1):
  v2: The codes V2 for QEMU disk I/O limits.
      Modified the codes mainly based on stefan's comments.

  v1: Submit the codes for QEMU disk I/O limits.
      Only a code draft.

 Makefile.objs     |    2 +-
 block.c           |  288 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 block.h           |    1 -
 block/blk-queue.c |  116 +++++++++++++++++++++
 block/blk-queue.h |   70 +++++++++++++
 block_int.h       |   28 +++++
 blockdev.c        |   21 ++++
 qemu-config.c     |   24 +++++
 qemu-option.c     |   17 +++
 qemu-option.h     |    1 +
 qemu-options.hx   |    1 +
 11 files changed, 559 insertions(+), 10 deletions(-)
 create mode 100644 block/blk-queue.c
 create mode 100644 block/blk-queue.h

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 23+ messages in thread
* [Qemu-devel] [PULL 0/25]: QMP queue
@ 2011-07-21 20:00 Luiz Capitulino
  2011-07-21 20:00 ` [Qemu-devel] [PATCH 04/25] Add hard build dependency on glib Luiz Capitulino
  0 siblings, 1 reply; 23+ messages in thread
From: Luiz Capitulino @ 2011-07-21 20:00 UTC (permalink / raw)
  To: aliguori; +Cc: qemu-devel

Anthony,

The following patches have been sent to the list and look good to me. I've
also tested them.

The changes (since 6c916eda22e7ef180bb2dd183bbef85f9ff006c6) are available
in the following repository:

    git://repo.or.cz/qemu/qmp-unstable.git for-anthony

Anthony Liguori (1):
      Add hard build dependency on glib

Jes Sorensen (1):
      QMP: add snapshot-blkdev-sync command

Luiz Capitulino (2):
      Introduce compiler.h header file
      Error: Fix build when qemu-common.h is not included

Michael Roth (21):
      qlist: add qlist_first()/qlist_next()
      qapi: add module init types for qapi
      qapi: add QAPI visitor core
      qapi: add QMP input visitor
      qapi: add QMP output visitor
      qapi: add QAPI dealloc visitor
      qapi: add QMP command registration/lookup functions
      qapi: add QMP dispatch functions
      qapi: add ordereddict.py helper library
      qapi: add qapi.py helper libraries
      qapi: add qapi-types.py code generator
      qapi: add qapi-visit.py code generator
      qapi: add qapi-commands.py code generator
      qapi: test schema used for unit tests
      qapi: add test-visitor, tests for gen. visitor code
      qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code
      qapi: add QAPI code generation documentation
      qerror: add QERR_JSON_PARSE_ERROR to qerror.c
      guest agent: command state class
      guest agent: qemu-ga daemon
      guest agent: add guest agent RPCs/commands

 Makefile                        |   45 +++-
 Makefile.objs                   |    8 +
 Makefile.target                 |    1 +
 blockdev.c                      |    4 +-
 compiler.h                      |   34 ++
 configure                       |   16 +
 docs/qapi-code-gen.txt          |  316 +++++++++++++++++++
 error.h                         |    1 +
 hmp-commands.hx                 |    2 +-
 module.h                        |    2 +
 qapi-schema-guest.json          |  217 +++++++++++++
 qapi-schema-test.json           |   22 ++
 qapi/qapi-dealloc-visitor.c     |  147 +++++++++
 qapi/qapi-dealloc-visitor.h     |   26 ++
 qapi/qapi-types-core.h          |   20 ++
 qapi/qapi-visit-core.c          |  118 +++++++
 qapi/qapi-visit-core.h          |   76 +++++
 qapi/qmp-core.h                 |   41 +++
 qapi/qmp-dispatch.c             |  124 ++++++++
 qapi/qmp-input-visitor.c        |  301 ++++++++++++++++++
 qapi/qmp-input-visitor.h        |   27 ++
 qapi/qmp-output-visitor.c       |  239 ++++++++++++++
 qapi/qmp-output-visitor.h       |   28 ++
 qapi/qmp-registry.c             |   40 +++
 qemu-common.h                   |   25 +--
 qemu-ga.c                       |  654 +++++++++++++++++++++++++++++++++++++++
 qerror.c                        |   13 +
 qerror.h                        |    9 +
 qga/guest-agent-command-state.c |   73 +++++
 qga/guest-agent-commands.c      |  518 +++++++++++++++++++++++++++++++
 qga/guest-agent-core.h          |   31 ++
 qlist.h                         |   11 +
 qmp-commands.hx                 |   34 ++
 scripts/ordereddict.py          |  127 ++++++++
 scripts/qapi-commands.py        |  385 +++++++++++++++++++++++
 scripts/qapi-types.py           |  270 ++++++++++++++++
 scripts/qapi-visit.py           |  246 +++++++++++++++
 scripts/qapi.py                 |  203 ++++++++++++
 test-qmp-commands.c             |  113 +++++++
 test-visitor.c                  |  306 ++++++++++++++++++
 40 files changed, 4842 insertions(+), 31 deletions(-)

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2011-08-02 19:18 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-26  8:59 [Qemu-devel] [PATCH v2 0/1] The intro for QEMU disk I/O limits Zhi Yong Wu
2011-07-26  8:59 ` [Qemu-devel] [PATCH v2 1/1] The codes V2 " Zhi Yong Wu
2011-07-26 19:26   ` Marcelo Tosatti
2011-07-26 21:51     ` [Qemu-devel] [PATCH 04/25] Add hard build dependency on glib Yoder Stuart-B08248
2011-07-26 22:09       ` Anthony Liguori
2011-07-27  8:54         ` Benjamin Herrenschmidt
2011-07-27 13:31           ` David Gibson
2011-07-27 13:13         ` Yoder Stuart-B08248
2011-07-27 10:17     ` [Qemu-devel] [PATCH v2 1/1] The codes V2 for QEMU disk I/O limits Zhi Yong Wu
2011-07-27 12:58       ` Stefan Hajnoczi
2011-07-28  2:35         ` Zhi Yong Wu
2011-07-28  5:43         ` Zhi Yong Wu
2011-07-28  8:20           ` Stefan Hajnoczi
2011-07-28  8:25             ` Stefan Hajnoczi
2011-07-28  8:50               ` Zhi Yong Wu
2011-07-27 15:49       ` Marcelo Tosatti
2011-07-28  4:24         ` Zhi Yong Wu
2011-07-28 14:42           ` Marcelo Tosatti
2011-07-29  2:09             ` Zhi Yong Wu
  -- strict thread matches above, loose matches on Subject: below --
2011-07-21 20:00 [Qemu-devel] [PULL 0/25]: QMP queue Luiz Capitulino
2011-07-21 20:00 ` [Qemu-devel] [PATCH 04/25] Add hard build dependency on glib Luiz Capitulino
2011-08-02  2:03   ` TeLeMan
2011-08-02 19:06     ` Luiz Capitulino
2011-08-02 19:18       ` Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).