qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC]QEMU disk I/O limits


From: Zhi Yong Wu
Subject: [Qemu-devel] [RFC]QEMU disk I/O limits
Date: Mon, 30 May 2011 13:09:23 +0800
User-agent: Mutt/1.5.20 (2009-08-17)

Hello, all,

    I have prepared to work on a feature called "Disk I/O limits" for qemu-kvm 
projeect.
    This feature will enable the user to cap disk I/O amount performed by a 
VM.It is important for some storage resources to be shared among multi-VMs. As 
you've known, if some of VMs are doing excessive disk I/O, they will hurt the 
performance of other VMs.

    More detail is available here:
    http://wiki.qemu.org/Features/DiskIOLimits

    1.) Why we need per-drive disk I/O limits 
    As you've known, for linux, cgroup blkio-controller has supported I/O 
throttling on block devices. More importantly, there is no single mechanism for 
disk I/O throttling across all underlying storage types (image file, LVM, NFS, 
Ceph) and for some types there is no way to throttle at all. 

    Disk I/O limits feature introduces QEMU block layer I/O limits together 
with command-line and QMP interfaces for configuring limits. This allows I/O 
limits to be imposed across all underlying storage types using a single 
interface.

    2.) How disk I/O limits will be implemented
    QEMU block layer will introduce a per-drive disk I/O request queue for 
those disks whose "disk I/O limits" feature is enabled. It can control disk I/O 
limits individually for each disk when multiple disks are attached to a VM, and 
enable use cases like unlimited local disk access but shared storage access 
with limits. 
    In mutliple I/O threads scenario, when an application in a VM issues a 
block I/O request, this request will be intercepted by QEMU block layer, then 
it will calculate disk runtime I/O rate and determine if it has go beyond its 
limits. If yes, this I/O request will enqueue to that introduced queue; 
otherwise it will be serviced.

    3.) How the users enable and play with it
    QEMU -drive option will be extended so that disk I/O limits can be 
specified on its command line, such as -drive [iops=xxx,][throughput=xxx] or 
-drive [iops_rd=xxx,][iops_wr=xxx,][throughput=xxx] etc. When this argument is 
specified, it means that "disk I/O limits" feature is enabled for this drive 
disk.
    The feature will also provide users with the ability to change per-drive 
disk I/O limits at runtime using QMP commands.


Regards,

Zhiyong Wu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]