Limit Bandwidth of Volume Copy

Registered by Tomoki Sekiyama on 2014-03-27

Currently, volume copy operations consumes disk I/O bandwidth heavily and may slow down the other guest instances, during:
* new volume creation from a image
* backup
* volume deletion (when dd if=/dev/zero is chosen to wipe)
etc..
 ("ionice" option is already implemented in some cases, but it is not always usable, e.g. when instances volume access path doesn't go through I/O scheduler of cinder control node.)

This proposes adding conf to limit bandwidth for volume copy (or up/downloading) to mitigate interference to other instance performance.

For example, the limitation can be implemented by using commands' options to limit bandwidth, or putting commands (such as 'dd') into blkio cgroup for throttling.

Blueprint information

Status:
Complete
Approver:
John Griffith
Priority:
Medium
Drafter:
Tomoki Sekiyama
Direction:
Approved
Assignee:
Tomoki Sekiyama
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
milestone icon 2014.2
Started by
Tomoki Sekiyama on 2014-05-08
Completed by
John Griffith on 2014-07-23

Related branches

Sprints

Whiteboard

This review might be useful (has a token bucket impl u can likely use) - if desired.

https://review.openstack.org/#/c/21380/

Gerrit topic: https://review.openstack.org/#q,topic:bp/limit-volume-copy-bandwidth,n,z

Addressed by: https://review.openstack.org/92894
    I/O rate limit for volume copy

Addressed by: https://review.openstack.org/97627
    Add blueprint for limit-volume-copy-bandwidth

Addressed by: https://review.openstack.org/100642
    I/O rate limit for volume copy with qemu-img convert

Addressed by: https://review.openstack.org/102666
    Add cgroups related commands to rootwrap filters

Addressed by: https://review.openstack.org/109137
    Avoid OSError in get_blkdev_major_minor with network filesystems

Addressed by: https://review.openstack.org/109138
    Disable volume copy bandwidth limit for specified disks

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.