Skip to main content
NetApp Knowledgebase

What is Quality of Service (QoS) in ONTAP?

Last Updated:


Applies to

  • Clustered Data ONTAP 8.2 and later
  • ONTAP 9


Quality-of-Service is a way to throttle storage objects, but also includes performance monitoring of volumes with the qos statistics commands.

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 reference the Adaptive QoS page.

When is there a need to use QoS?
  1. Prevent workloads from impacting performance
  2. Enable critical applications to achieve consistent performance
  3. Monitors and manages application workloads.
What are the components in a QoS policy?
  1. Workload: a storage object. Types include:
    1. User-defined workload. This is a storage object.
      1. Beginning with Clustered Data ONTAP 8.3, all created FlexVols automatically are assigned a workload ID.
      2. I/O to storage objects that are not assigned to policy groups belong to the "User-Default" workload.
    2. System-defined workload. Examples include:
      1. _DEDUP or _Efficiency_Besteffort: Storage Efficiency, Single Instance Storage (SIS), also called Deduplication. Can include inline storage efficiency.
      2. _WAFL_SCAN: WAFL scanners.
      3. _SNAPMIRROR: A kind of background workload.
      4. _Background_Delete: Background deletions
      5. _ocs_vserver: Copy offload.
      6. System-Default: Anything not covered by a separate workload.
  2. QoS policy group: A group of one or more workloads that have a shared throttle limit
    1. 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.
    2. System-defined policy group - Manages internal work that the cluster performs.
  3. QoS policy: The maximum IOPs and/or throughput allowed.
What are the rules for assigning storage objects to policy groups?
  1. Storage objects and policy groups must belong to the same Vserver.
  2. Specify the Vserver to which the policy group belongs when you create the policy group.
  3. Multiple policy groups can belong to the same Vserver.
  4. Multiple storage objects can be put in a single policy group.
  5. A single storage object can be put in a single policy group.
  6. A storage object cannot have two different policy groups assigned.
  7. 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 groups 12,000 12,000

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
vol1-qos         svm0        user-defined 1     0-50IOPS,10MB/s
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.