From: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: hutao@cn.fujitsu.com, Adam Litke <agl@us.ibm.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>,
guijianfeng@cn.fujitsu.com
Subject: [Qemu-devel] [RFC] block I/O throttling: how to enable in libvirt
Date: Thu, 1 Sep 2011 11:55:17 +0800 [thread overview]
Message-ID: <20110901035517.GD16985@f15.cn.ibm.com> (raw)
In-Reply-To: <CAJSP0QUHm=y8XJC_KXRg7ufFZt3K_XDDfQb--sxjC+c0GjO8qg@mail.gmail.com>
On Wed, Aug 31, 2011 at 08:18:19AM +0100, Stefan Hajnoczi wrote:
>Subject: Re: The design choice for how to enable block I/O throttling
> function in libvirt
>From: Stefan Hajnoczi <stefanha@gmail.com>
>To: Adam Litke <agl@us.ibm.com>
>Cc: libvir-list@redhat.com, "Daniel P. Berrange" <berrange@redhat.com>, Zhi
> Yong Wu <wuzhy@linux.vnet.ibm.com>, Zhi Yong Wu <zwu.kernel@gmail.com>
>Content-Type: text/plain; charset=ISO-8859-1
>Content-Transfer-Encoding: quoted-printable
>X-Brightmail-Tracker: AAAAAA==
>X-Xagent-From: stefanha@gmail.com
>X-Xagent-To: wuzhy@linux.vnet.ibm.com
>X-Xagent-Gateway: bldgate.vnet.ibm.com (XAGENTU7 at BLDGATE)
>
>On Tue, Aug 30, 2011 at 2:46 PM, Adam Litke <agl@us.ibm.com> wrote:
>> On Tue, Aug 30, 2011 at 09:53:33AM +0100, Stefan Hajnoczi wrote:
>>> On Tue, Aug 30, 2011 at 3:55 AM, Zhi Yong Wu <zwu.kernel@gmail.com> wrote:
>>> > I am trying to enable block I/O throttling function in libvirt. But
>>> > currently i met some design questions, and don't make sure if we
>>> > should extend blkiotune to support block I/O throttling or introduce
>>> > one new libvirt command "blkiothrottle" to cover it or not. If you
>>> > have some better idea, pls don't hesitate to drop your comments.
>>>
>>> A little bit of context: this discussion is about adding libvirt
>>> support for QEMU disk I/O throttling.
>>
>> Thanks for the additional context Stefan.
>>
>>> Today libvirt supports the cgroups blkio-controller, which handles
>>> proportional shares and throughput/iops limits on host block devices.
>>> blkio-controller does not support network file systems (NFS) or other
>>> QEMU remote block drivers (curl, Ceph/rbd, sheepdog) since they are
>>> not host block devices. QEMU I/O throttling works with all types of
>>> -drive and therefore complements blkio-controller.
>>
>> The first question that pops into my mind is: Should a user need to understand
>> when to use the cgroups blkio-controller vs. the QEMU I/O throttling method? In
>> my opinion, it would be nice if libvirt had a single interface for block I/O
>> throttling and libvirt would decide which mechanism to use based on the type of
>> device and the specific limits that need to be set.
>
>Yes, I agree it would be simplest to pick the right mechanism,
>depending on the type of throttling the user wants. More below.
>
>>> I/O throttling can be applied independently to each -drive attached to
>>> a guest and supports throughput/iops limits. For more information on
>>> this QEMU feature and a comparison with blkio-controller, see Ryan
>>> Harper's KVM Forum 2011 presentation:
>>
>>> http://www.linux-kvm.org/wiki/images/7/72/2011-forum-keep-a-limit-on-it-io-throttling-in-qemu.pdf
>>
>> From the presentation, it seems that both the cgroups method the the qemu method
>> offer comparable control (assuming a block device) so it might possible to apply
>> either method from the same API in a transparent manner. Am I correct or are we
>> suggesting that the Qemu throttling approach should always be used for Qemu
>> domains?
>
>QEMU I/O throttling does not provide a proportional share mechanism.
>So you cannot assign weights to VMs and let them receive a fraction of
>the available disk time. That is only supported by cgroups
>blkio-controller because it requires a global view which QEMU does not
>have.
>
>So I think the two are complementary:
>
>If proportional share should be used on a host block device, use
>cgroups blkio-controller.
>Otherwise use QEMU I/O throttling.
Stefan,
Do you agree with introducing one new libvirt command blkiothrottle now?
If so, i will work on the code draft to make it work.
Danial and other maintainers,
If you are available, can you make some comments for us?:)
Regards,
Zhi Yong Wu
>
>Stefan
next prev parent reply other threads:[~2011-09-01 3:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-30 2:55 [Qemu-devel] The design choice for how to enable block I/O throttling function in libvirt Zhi Yong Wu
2011-08-30 7:18 ` [Qemu-devel] [libvirt] " shu ming
2011-08-30 8:10 ` Zhi Yong Wu
2011-08-30 8:31 ` shu ming
2011-08-30 8:36 ` Zhi Yong Wu
[not found] ` <CAJSP0QW1CPCokX=F5z7y==vn1S4wH0VtOaQ7oj4kC7f7uQM4MQ@mail.gmail.com>
[not found] ` <20110830134636.GB29130@aglitke.rchland.ibm.com>
[not found] ` <CAJSP0QUHm=y8XJC_KXRg7ufFZt3K_XDDfQb--sxjC+c0GjO8qg@mail.gmail.com>
2011-09-01 3:55 ` Zhi Yong Wu [this message]
2011-09-01 4:21 ` [Qemu-devel] [RFC] block I/O throttling: how to enable " Osier Yang
2011-09-01 4:51 ` Zhi Yong Wu
-- strict thread matches above, loose matches on Subject: below --
2011-09-01 5:05 Zhi Yong Wu
2011-09-01 8:11 ` Stefan Hajnoczi
2011-09-01 8:49 ` Daniel P. Berrange
2011-09-02 1:16 ` Gui Jianfeng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110901035517.GD16985@f15.cn.ibm.com \
--to=wuzhy@linux.vnet.ibm.com \
--cc=agl@us.ibm.com \
--cc=guijianfeng@cn.fujitsu.com \
--cc=hutao@cn.fujitsu.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.