Implement QoS support for volumes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
openstack-api-site |
Fix Released
|
Medium
|
Diane Fleming | ||
openstack-manuals |
Fix Released
|
Medium
|
Diane Fleming |
Bug Description
https:/
commit 1f64306a770ccf1
Author: Zhiteng Huang <email address hidden>
Date: Sat May 18 22:21:28 2013 +0800
Implement QoS support for volumes
This patch is to implement generic Quality-
The goal is 1) to add an interface so that cloud/Cinder admins can use to set
volume rate-limit, which can be enforced either in hypervisor or on Cinder
back-end or both; 2) to add an interface so that admins can use to express
QoS requirements for volumes (of specific back-ends), which will be consumed
by back-end drivers.
Note that while it's possible for Cinder to set the granularity of QoS control
to every single volume, this patch puts the control granularity to the level
of volumes of the same type to minimize the impact of other Cinder parts.
In other words, the design is to bond QoS with volume types. So Cinder admin
can create various volume types with different QoS requirements, and volumes
of same volume type share the same QoS specifications.
QoS can mean a lot different things that it's unlikely we can come up with a
intepreation that all vendors can agree on. On the other hand, the
throttling/
agrees on. So the approach this implementation takes is to break Quality-of-
Service into two parts: throttling/
vender specific defintion). The free-form part is stored as key/value pairs
as special (under the scope 'QoS_specs:') extra_specs of a volume type, and
the rate-limit control info is stored as part of specification for types (as
new columns for volume_types table).
Changes:
- Add following 7 columns to volume_types table for rate-limit requirements
for volume types.
* total_bytes_sec: total throughput limit in bytes per second. This cannot
appear with read_bytes_sec or write_bytes_sec.
* read_bytes_sec: read throughput limit in bytes per second.
* write_bytes_sec: write throughput limit in bytes per second.
* total_iops_sec: total I/O operations per second. This cannot appear with
read_iops_sec or write_iops_sec.
* read_iops_sec: read I/O operations per second.
* write_iops_sec: write I/O operations per second.
* 'control_location' is to store the value where admin would like the QoS
policy to be enforced, currently these three values are considered valid:
'front-end' (Nova Compute), 'back-end' (Cinder back-end), 'both'.
- Add a new resource extension to 'types_extra_specs' API extension to allow
list/
- Modify 'type_manage' API extension to be able to accept rate_limit info.
- Modify volume_
- Add 'qos_specs' to request_specs and filter properties for a volume
create request.
- Add rate-limit info to data structure when initialize_
DocImpact
implement blueprint: pass-ratelimit-
Change-Id: Iabc61b941aaff1
Changed in openstack-manuals: | |
milestone: | none → havana |
Changed in openstack-manuals: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in openstack-api-site: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
milestone: | none → havana |
Changed in openstack-api-site: | |
assignee: | nobody → Kersten Richter (kersten-r) |
Changed in openstack-manuals: | |
assignee: | nobody → Kersten Richter (kersten-r) |
Changed in openstack-api-site: | |
assignee: | nobody → Diane Fleming (diane-fleming) |
Changed in openstack-api-site: | |
status: | In Progress → Fix Committed |
Changed in openstack-manuals: | |
status: | Confirmed → In Progress |
assignee: | nobody → Diane Fleming (diane-fleming) |
Changed in openstack-manuals: | |
status: | In Progress → Fix Released |
backport: havana