QoS for VMAX on OpenStack – A step-by-step guide

Note: This document is supplementary to the article ‘VMAX & OpenStack Ocata: An Inside Look Pt. 2: Over-Subscription/QoS/Compression/Retype

Quality of Service (QoS) is the measurement of the overall performance of a service, particularly the performance see by the users of a given network. To quantitatively measure QoS, several related aspects of the network service are often considered, but for QoS for VMAX & OpenStack environments we are going to focus on three:

  • I/O limit per second (IOPs)
  • Throughput per second (MB/s)
  • Dynamic Distribution
    • Always
    • OnFailure

For more information on setting host IO limits for VMAX please refer to the ‘Unisphere for VMAX Online Guide‘ section called ‘Setting Host I/O Limits’.

Configuring QoS in OpenStack for VMAX

In OpenStack, we create QoS settings for volume types so that all volumes created with a given volume type has the respective QoS settings applied. There are two steps involved in creating the QoS settings in OpenStack:

  • Creating the QoS settings
  • Associating the QoS settings with a volume type

When specifying the QoS settings, they are added in key/value pairs. The (case-sensitive) keys for each of the settings are:

  • maxIOPS
  • maxMBPS
  • DistributionType

As with anything in Openstack, there are two ways to do anything, there is no difference with QoS. You have the choice of either configuring QoS via the CLI or using the the Horizon web dashboard. Obviously using the CLI is the much quicker of the two, but if you do not understand CLI commands, or even QoS, I would recommend sticking the web dashboard. For clarity on both approaches, I will go through each step-by-step, the process will never change only the values used in the key/value pairings, so one example can applied to all scenarios.

Setting QoS via the OpenStack CLI

1. Create QoS specs. It is important to note that here the QoS key/value pairs are optional, you need only include them if you want to set a value for that specific key/value pair. {QoS_Spec_Name} is the name which you want to assign to this QoS spec:

Command Structure:

# cinder qos-create {QoS_spec_name} maxIOPS={value} maxMBPS={value} DistributionType={Always/OnFailure}

Command Example:

# cinder qos-createFC_NONE_QOS maxIOPS=4000maxMBPS=4000DistributionType=Always

QoS - CLI Confirm.PNG.png

2. Associate the QoS spec from step 1 with a pre-existing VMAX volume type:

Command Structure:

# cinder qos-associate {QoS_spec_id} {volume_type_id}

Command Example:

# cinder qos-associate 0b473981-8586-46d5-9028-bf64832ef8a3 7366274f-c3d3-4020-8c1d-c0c533ac8578

3. Confirm the association was successful by checking the volume type associated in the previous command

Command Example:

# cinder type-show VMAX_FC_NONE

QoS - CLI Confirm 2.PNG.png

Setting the QoS via OpenStack Horizon Web UI

1. Navigate to Admin>Volume>Volume Types and click on ‘Create QoS Spec’

QoS - 1.PNG.png

2. Give your QoS spec a name and set the Consumer property to ‘front-end’ (this will apply the QoS spec to the Compute back-end, being the volume and not the storage group the volume is in)

QoS - 2.PNG.png

3. Once created, you will be able to specify your QoS spec details. To do so, from the ‘Volume Types’ screen, click on ‘Manage Specs’ next to your newly created QoS spec. In the next dialoge box to open, click on ‘Create’ to add a new key/value pair to the spec.

QoS - 5.PNG.png

4. Continue this process of creating new key/value pairs until you have added all of the required settings to your spec. Click ‘Close’ when you are done adding key/value pairings to the spec. You will get visual confirmation from the UI that your settings have been applied

QoS - 6.PNG.png

5. With all of your QoS specs defined, the last step is to associate it with a volume type. To do so, from the same ‘Volume Types’ screen, clock on the drop down box beside your volume type and select ‘Manage QoS Spec Association’. Select your QoS Spec in the next dialogue box and click ‘Associate’

QoS - 7.PNG.png

QoS - 8.PNG.png

6. You will get visual confirmation of the successful association of the QoS spec with your VMAX volume type from the UI

QoS - 9.PNG.png

Confirming the QoS Spec in Unisphere

With the QoS specification associated with your VMAX volume type in OpenStack, the specs will be added to the storage group associated with the volume type on your VMAX. You can confirm the successful association of QoS specs in Unisphere by looking at the details of the associated storage group.

1. From the Unisphere dashboard, navigate to Array>Storage>Storage Group Dashboard and select the storage group associated with your volume type from the ‘Search’ menu

2. From the details page for your storage group, there is a section near the bottom which details host IO limits, MB/s limits, and dynamic distribution. The QoS specs defined in OpenStack should be mirrored in Unisphere if the association operation was successful.

QoS - U4V Confirm.PNG.png

QoS Use-Case Scenarios

When using QoS to set specs for your volumes, it is important to know how the specs behave when set at Openstack level, Unisphere level, or both. I have detailed these scenarios in the article mentioned at the start of this document ‘VMAX & OpenStack Ocata: An Inside Look Pt. 2: Over-Subscription/QoS/Compression/Retype


Leave a Reply