Capacity-based QoS

Include the URL of your launchpad blueprint:

https://blueprints.launchpad.net/cinder/+spec/capacity-based-qos

QoS values in Cinder currently are able to be set to static values. This work proposes a way to derive QoS limit values based on volume capacities rather than static values.

Problem description

This proposes a mechanism to provision IOPS on a per-volume basis with the IOPS values adjusted based on the volume’s size. (IOPS per GB)

Use Cases

A deployer wishes to cap “usage” of this system to limits based on space usage as well as throughput, in order to bill customers and not exceed limits of the backend.

Associating IOPS and size allows you to provide tiers such as

Gold: 1000 GB at 10000 IOPS per GB Silver: 1000 GB at 5000 IOPS per GB Bronze: 500 GB at 5000 IOPS per GB

Proposed change

Allow creation of qos_keys:

read_iops_sec_per_gb write_iops_sec_per_gb total_iops_sec_per_gb

These function the same as our current <x>_iops_sec keys, except they are scaled by the volume size.

Alternatives

None

Data model impact

None

REST API impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

New optional qos spec values.

Off by default, opt-in.

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

eharney

Work Items

Dependencies

Testing

Documentation Impact

Document new fields available in qos types.

References

Code: https://review.openstack.org/#/c/447127/