Bug 1085049 - OVIRT35 - [RFE] Support blkio SLA features
Summary: OVIRT35 - [RFE] Support blkio SLA features
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: oVirt
Classification: Retired
Component: ovirt-engine-core
Version: 3.5
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: 3.5.1
Assignee: Gilad Chaplik
QA Contact: Kevin Alon Goldblatt
URL:
Whiteboard: sla
Depends On:
Blocks: 1120246
TreeView+ depends on / blocked
 
Reported: 2014-04-07 16:47 UTC by Gilad Chaplik
Modified: 2016-02-10 19:41 UTC (History)
14 users (show)

Fixed In Version: ovirt-3.5.0_rc2
Doc Type: Enhancement
Doc Text:
Clone Of:
: 1120246 (view as bug list)
Environment:
Last Closed: 2015-01-21 16:13:40 UTC
oVirt Team: SLA


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
oVirt gerrit 28712 0 None None None Never
oVirt gerrit 28713 0 None None None Never
oVirt gerrit 28714 0 None None None Never
oVirt gerrit 28715 0 None None None Never
oVirt gerrit 28895 0 None None None Never
oVirt gerrit 28896 0 None None None Never
oVirt gerrit 29059 0 None None None Never
oVirt gerrit 29115 0 None None None Never
oVirt gerrit 31803 0 ovirt-engine-3.5 MERGED common: introduce qos package, and storage qos Never
oVirt gerrit 31804 0 ovirt-engine-3.5 MERGED db, core: aggregate qos and storage qos impl Never
oVirt gerrit 31805 0 ovirt-engine-3.5 MERGED core: Add CRUD commands and queries for QoS objects (storage) Never
oVirt gerrit 31806 0 ovirt-engine-3.5 MERGED restapi: add QoS RESTful interface for storage QoS Never
oVirt gerrit 31807 0 ovirt-engine-3.5 MERGED common: Introduce profiles package & Disk Profile Never
oVirt gerrit 31808 0 ovirt-engine-3.5 MERGED core, db: Introduce BaseProfile and DiskProfile Never
oVirt gerrit 31809 0 ovirt-engine-3.5 MERGED engine: profiles MLA support Never
oVirt gerrit 31810 0 ovirt-engine-3.5 MERGED core: disk profile commands and queries Never
oVirt gerrit 31811 0 ovirt-engine-3.5 MERGED engine: allow to fetch all QoS for REST Never
oVirt gerrit 31812 0 ovirt-engine-3.5 MERGED core, db: disk profile for disk image Never
oVirt gerrit 31813 0 ovirt-engine-3.5 MERGED core, db: disk profile: handle attach/detach Never
oVirt gerrit 31814 0 ovirt-engine-3.5 MERGED core: add disk profile to disk's commands Never
oVirt gerrit 31815 0 ovirt-engine-3.5 MERGED core: add GetDiskProfilesByStorageQosIdQuery Never
oVirt gerrit 31816 0 ovirt-engine-3.5 MERGED core: extend DiskProfile.getAllForStorageDomain to a user query Never
oVirt gerrit 31817 0 ovirt-engine-3.5 MERGED core, db: add getQosByDiskProfile Never
oVirt gerrit 31818 0 ovirt-engine-3.5 MERGED core: attach device ioTune map Never
oVirt gerrit 31831 0 ovirt-engine-3.5 MERGED webadmin: introduce storage qos Never
oVirt gerrit 31832 0 ovirt-engine-3.5 MERGED webadmin: introduce disk profiles Never
oVirt gerrit 31833 0 ovirt-engine-3.5 MERGED frontend: add disk profile to disk flow Never
oVirt gerrit 31834 0 ovirt-engine-3.5 MERGED webadmin: add permission splitter to disk profiles Never
oVirt gerrit 31835 0 ovirt-engine-3.5 MERGED webadmin: qos parent sub tab Never
oVirt gerrit 31839 0 ovirt-engine-3.5 MERGED restapi: add disk profile support Never
oVirt gerrit 31840 0 ovirt-engine-3.5 MERGED restapi: add disk profile to disk Never
oVirt gerrit 31960 0 master MERGED webadmin: relax disk profile validation Never
oVirt gerrit 31962 0 ovirt-engine-3.5 MERGED webadmin: relax disk profile validation Never

Description Gilad Chaplik 2014-04-07 16:47:33 UTC
Feature Description:
With this feature we can limit a VM's blkio resource consumption.
We'd like to set up the following:

- weight (blkio.weight in blkio cgroup) 
- weight_device (blkio.weight_device in blkio cgroup)
- total_bytes_sec (block_set_io_throttle command in qemu monitor)
- read_bytes_sec (block_set_io_throttle command in qemu monitor)
- write_bytes_sec (block_set_io_throttle command in qemu monitor)
- total_iops_sec (block_set_io_throttle command in qemu monitor)
- read_iops_sec (block_set_io_throttle command in qemu monitor)
- write_iops_sec (block_set_io_throttle command in qemu monitor)

Comment 1 Sven Kieske 2014-04-08 07:49:14 UTC
Would this just work with virtio-blk or also with virtio-scsi?

Comment 2 Scott Herold 2014-04-23 19:51:48 UTC
RE: Comment 1, I need to defer to Gilad on how this was implemented.  The libvirt documentation leads me to believe that at the libvirt level, the settings are controller agnostic: http://libvirt.org/formatdomain.html#elementsDisks and are implemented at an individual disk level, not controller level.  In fact, in the libvirt documentation, the following is quoted: "Any device that looks like a disk, be it a floppy, harddisk, cdrom, or paravirtualized driver is specified via the disk element."  This leads me to believe it should also be compatible with the paravirtualized virtio-scsi devices as well.

Comment 3 Doron Fediuck 2014-05-14 02:16:40 UTC
(In reply to Scott Herold from comment #2)
> RE: Comment 1, I need to defer to Gilad on how this was implemented. 

The iotune element doc states:
"
Currently, the only tuning available is Block I/O throttling for qemu.
"

Eric, care to shed some light on current status? 
ie- what happens when type='network' and protocol is iscsi?

Comment 4 Eric Blake 2014-07-03 12:47:39 UTC
(In reply to Doron Fediuck from comment #3)
> (In reply to Scott Herold from comment #2)
> > RE: Comment 1, I need to defer to Gilad on how this was implemented. 
> 
> The iotune element doc states:
> "
> Currently, the only tuning available is Block I/O throttling for qemu.
> "
> 
> Eric, care to shed some light on current status? 
> ie- what happens when type='network' and protocol is iscsi?

At the libvirt level, there are two separate throttling points.  One is <blkiotune> at the top <domain> level, which can only throttle things via cgroups on the host at the host block device level.  Because it is done on host block devices, it is not very fine-grained (if a guest has more than one <disk> mapped as files, but both files live on the same block device, then you cannot throttle them independently), and limited in what it can throttle (a type='network' <disk> element has no corresponding block device on the host, so it can't be throttled).  The other is <iotune> at the <disk> level, which throttles solely based on qemu command line arguments.  At this level, the throttling is enforced by qemu, and theoretically works on ANY guest device.  But you'd have to ask the qemu folks to make sure it does the throttling you are interested in; also be aware that <blkiotune> was implemented first, and <iotune> later, so it may be a matter of which throttling points have been backported to the qemu/libvirt combo you are using.

Comment 5 Kevin Alon Goldblatt 2014-10-12 08:08:51 UTC
Currently this feature is still not working as per the downstream 

BZ:https://bugzilla.redhat.com/show_bug.cgi?id=906938

Comment 6 Sandro Bonazzola 2014-10-17 12:14:38 UTC
Moving pending bugs not fixed in 3.5.0 to 3.5.1.

Comment 7 Sandro Bonazzola 2015-01-21 16:13:40 UTC
oVirt 3.5.1 has been released and since this bug is targeted 3.5.1 and in modified state, it should be included in this release.
Please re-target and move nack to modified if this assumption is not valid for this bug.


Note You need to log in before you can comment on or make changes to this bug.