What is Quality of Service (QoS) in ONTAP?
Applies to
ONTAP 9
Answer
Quality-of-Service is a way to throttle storage objects, but also includes performance monitoring of volumes with the QoS statistics commands
Note: Adaptive QoS is slightly different and is covered in the article What is Adaptive QoS and how does it work?
What is a storage object?
- A Vserver with FlexVol volumes
- A FlexVol volumeQoS workload
- A LUN
- A file (typically represents a virtual machine)
- Can include system processes internal to ONTAP, called a System-defined workload
Note: Beginning with ONTAP 9.2, Adaptive QoS was introduced for SAN workloads, and expanded to NAS in ONTAP 9.3. For more information, please refer to the Adaptive QoS page.
When to use QoS?
- Prevent workloads from impacting performance
- Enable critical applications to achieve consistent performance
- Monitor and manage application workloads
What are the components in a QoS policy?
- Workload types include:
- User-defined workload
- Beginning with Clustered Data ONTAP 8.3, all created FlexVols automatically are assigned a workload ID
- I/O to storage objects that are not assigned to policy groups belong to the "
User-Default
" workload
- System-defined workload
- User-defined workload
-
- User-defined policy group - Enforces a maximum throughput limit on the storage objects that belong to the policy group by throttling input/output (I/O) requests
- System-defined policy group - Manages internal work that the cluster performs
- QoS policy: The maximum IOPs and/or throughput allowed
What are the rules for assigning storage objects to policy groups?
- Storage objects and policy groups must belong to the same Vserver
- Specify the Vserver to which the policy group belongs when you create the policy group
- Multiple policy groups can belong to the same Vserver
- Multiple storage objects can be put in a single policy group
- A single storage object can be put in a single policy group
- A storage object cannot have two different policy groups assigned
- Nested storage objects cannot belong to policy groups:
If you assign a... | Then you cannot assign... |
---|---|
Vserver to a policy group | Any storage objects contained by the Vserver to a policy group |
Volume to a policy group | The volume's containing Vserver or any child LUNs or files to a policy group |
LUN to a policy group | The LUN's containing volume or Vserver to a policy group |
File to a policy group | The file's containing volume or Vserver to a policy group |
What is not supported with QoS?
- Aggregates
- Entire nodes
- Load-sharing mirrors
- Node root volumes
- Data ONTAP 7-mode FlexCache volumes
Note: The 7-mode FlexCache uses a different technology than the ONTAP 9 version. For more information see the FlexCache Techncial Report.
What are the configuration limits in QoS in ONTAP 9?
The following table shows the maximum number of workloads and policy groups by ONTAP 9 version:
Workload Support | 9.3 and earlier | 9.4 and later |
---|---|---|
Maximum workloads per cluster | 12,000 | 40,000 |
Maximum workloads per node | 12,000 | 40,000 |
Maximum policy group | 12,000 | 12,000 |
What should the QoS Limit be set to?
- Using Active IQ (AIQ) or Active IQ Unified Manager (AIQUM), determine the IOPs and throughput of the volume
- To identify volume throughput or IOPs, please review How to monitor volume latency from Active IQ Unified Manager
- AIQ is not updated in real-time, so it is recommended to download AIQUM or monitor with
qos statistics
commands
- Once the top value is seen, set a value incrementally smaller than the peaks.
- Incrementally set the throttle value lower until latency is at desired levels.
Notes:
- ONTAP will adjust QoS throttles almost instantly, so you can monitor live with
qos statistics
commands so users will not be impacted more than a few seconds. - See the article Can I increase IOPS on a QoS policy or will it cause performance problems? for some additional guidance.
What happens if the QoS limit is too high?
See the article QoS Limits causing high volume latency and Can I increase IOPS on a QoS policy or will it cause performance problems?
Should the built in Value, Performance, and Fixed policies be used, or should custom ones be made?
- The default ones can provide a starting point, but realistically custom ones should be made after monitoring performance.
- Again, see the article QoS Limits causing high volume latency and Can I increase IOPS on a QoS policy or will it cause performance problems?
Additional Information
Example of creating a QoS policy:
Cluster::> qos policy-group create -policy-group vol1-qos -vserver svm0 -max-throughput 50iops,10MB/s -min-throughput 0 Cluster::> vol modify -volume vol1 -qos-policy-group vol1-qos Volume modify successful on volume test_cifs_homedir of Vserver svm0. Cluster::> qos policy-group show Name Vserver Class Wklds Throughput Is Shared ---------------- ----------- ------------ ----- ------------ --------- vol3-qos svm0 user-defined 0 0-3000IOPS,200MB/s true vol1-qos svm0 user-defined 1 0-50IOPS,10MB/s true 2 entries were displayed. Cluster::> vol show -fields volume,qos-policy-group,qos-adaptive-policy-group vserver volume qos-policy-group qos-adaptive-policy-group --------------- ------ ---------------- ------------------------- Cluster-node1 vol0 - - svm0 svm_root - - svm0 vol1 vol1-qos - svm0 vol3 vol3-qos - 3 entries were displayed. Cluster::>