Hide Forgot
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)
Would this just work with virtio-blk or also with virtio-scsi?
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.
(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?
(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.
Currently this feature is still not working as per the downstream BZ:https://bugzilla.redhat.com/show_bug.cgi?id=906938
Moving pending bugs not fixed in 3.5.0 to 3.5.1.
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.