cinder-specs/specs/juno/limit-volume-copy-bandwidth.rst
Mike Perez 8ca13afc49 Introduce use case section
This will now require a separate section "Use Cases". This was
originally within "Problem description", but use cases seems to be
missed when it was filled out. This will hopefully improve spec
submission.

Change-Id: I3615ca5ff5c46851e682739a8343242e2f1b0a8d
2015-04-15 22:20:56 -07:00

143 lines
3.0 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Limit Bandwidth of Volume Copy
==========================================
Include the URL of your launchpad blueprint:
https://blueprints.launchpad.net/cinder/+spec/limit-volume-copy-bandwidth
This proposes adding a new config to limit bandwidth for volume copy to
mitigate interference to other instance performance during:
* new volume creation from a image
* backup
* volume deletion (when dd if=/dev/zero etc. is chosen to wipe)
Problem description
===================
Currently, volume copy operations consumes disk I/O bandwidth heavily and may
slow down the other guest instances.
"ionice" option is already implemented in some cases, but it is not always
usable. e.g. When instances directly access to the storage and doesn't go
through I/O scheduler of cinder control node, ionice cannot control I/O
priority and instances access may slow down.
Use Cases
=========
Proposed change
===============
A new config named 'volume_copy_bps_limit' will be added to determine max
bandwidth (byte per second) consumed by volume copy.
When CONF.volume_copy_bps_limit is zero (default), no limitation is applied,
and no cgroup is created.
Otherwise, bandwidth limitation is applied to volume copy. For example, if the
volume copy is done by 'dd' command, it can be implemented by putting 'dd'
into blkio cgroup for throttling.
Alternatives
------------
When volume copy commands have an option for I/O throttling, the usage of such
options are preferable.
Putting whole cinder-volume processes into blkio cgroups could also be a
solution for this, though it is required to provide a way to set rate limit to
newly added block devices when new volume is created.
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
When volume copy I/O bandwidth is limited, it takes more time to complete
volume copy. Users are required to balance between volume copy performance
and interference to instances performance.
Other deployer impact
---------------------
* This feature is disabled by default. Users who want to use this feature need
to set 'volume_copy_bps_limit' in cinder.conf.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
tomoki-sekiyama-g
Work Items
----------
* Implement cgroup blkio setup functions
* Implement I/O rate limit for volume_utils.copy_volume
* Implement I/O rate limit for other image format such as qcow
Dependencies
============
None
Testing
=======
None
Documentation Impact
====================
The cinder client documentation will need to be updated to reflect the new
config.
References
==========
None