Implement QoS support for volumes

Bug #1202767 reported by OpenStack Infra
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
openstack-api-site
Fix Released
Medium
Diane Fleming
openstack-manuals
Fix Released
Medium
Diane Fleming

Bug Description

https://review.openstack.org/29737
commit 1f64306a770ccf105c2150b89a5784aee2acca04
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-of-Service(QoS) support for volumes.
    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/rate-limiting is a notion that has clear defintion that everyone
    agrees on. So the approach this implementation takes is to break Quality-of-
    Service into two parts: throttling/rate-limiting and the rest (free-form,
    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/create/update/delete of type QoS specs.
     - Modify 'type_manage' API extension to be able to accept rate_limit info.
     - Modify volume_types.create() to accept rate-limit info and do the checks.
     - Add 'qos_specs' to request_specs and filter properties for a volume
     create request.
     - Add rate-limit info to data structure when initialize_connection()

    DocImpact

    implement blueprint: pass-ratelimit-info-to-nova

    Change-Id: Iabc61b941aaff10395b30e2045e3421369a317e2

Tags: cinder
Tom Fifield (fifieldt)
Changed in openstack-manuals:
milestone: none → havana
Tom Fifield (fifieldt)
Changed in openstack-manuals:
status: New → Confirmed
importance: Undecided → Medium
Tom Fifield (fifieldt)
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)
Revision history for this message
Diane Fleming (diane-fleming) wrote :

backport: havana

Changed in openstack-api-site:
milestone: havana → icehouse
Changed in openstack-manuals:
milestone: havana → icehouse
Revision history for this message
Tom Fifield (fifieldt) wrote :

Hi kersten, still working on this one?

Revision history for this message
Tom Fifield (fifieldt) wrote :

Since we haven't heard from Kersten for a while, de-assigning. If this was done in error, please re-assign :)

Changed in openstack-api-site:
assignee: Kersten Richter (kersten-r) → nobody
Changed in openstack-manuals:
assignee: Kersten Richter (kersten-r) → nobody
Revision history for this message
Tom Fifield (fifieldt) wrote :

It's really hard to work out what to do with this bug.

Probably needs some investigation to work out what goes on on the nova side (this patch is just the cinder side), and also to look at what's currently done in each of the cinder drivers.

Changed in openstack-api-site:
assignee: nobody → Diane Fleming (diane-fleming)
Revision history for this message
Openstack Gerrit (openstack-gerrit) wrote : Fix proposed to api-site (master)

Fix proposed to branch: master
Review: https://review.openstack.org/91201

Changed in openstack-api-site:
status: Confirmed → In Progress
Revision history for this message
Openstack Gerrit (openstack-gerrit) wrote : Fix merged to api-site (master)

Reviewed: https://review.openstack.org/91201
Committed: https://git.openstack.org/cgit/openstack/api-site/commit/?id=c6e945bb799e8dec416846135aedab5526623093
Submitter: Jenkins
Branch: master

commit c6e945bb799e8dec416846135aedab5526623093
Author: Diane Fleming <email address hidden>
Date: Tue Apr 29 19:18:39 2014 -0500

    Add QoS extension to Cinder

    Partial-Bug: #1202767

    Change-Id: Icfe1e644ad9fa443ed493a8d0039b53322c9cebf
    author: 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)
Revision history for this message
Openstack Gerrit (openstack-gerrit) wrote : Fix proposed to volume-api (master)

Fix proposed to branch: master
Review: https://review.openstack.org/91673

Revision history for this message
Diane Fleming (diane-fleming) wrote :
Revision history for this message
Openstack Gerrit (openstack-gerrit) wrote : Fix merged to volume-api (master)

Reviewed: https://review.openstack.org/91673
Committed: https://git.openstack.org/cgit/openstack/volume-api/commit/?id=d8a9eb3dd7e930d529bf270c9f7f273a9fa195bc
Submitter: Jenkins
Branch: master

commit d8a9eb3dd7e930d529bf270c9f7f273a9fa195bc
Author: Diane Fleming <email address hidden>
Date: Thu May 1 15:40:49 2014 -0500

    Add cinder extensions

    Closes-Bug: #1202767

    Change-Id: Id1d079c2ef8abd98a10ffd095783e62ac798165f
    author: diane fleming

Changed in openstack-api-site:
status: Fix Committed → Fix Released
Changed in openstack-manuals:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.