Quality of Service (QoS) in Keystone

Contributors netapp-manini netapp-aruldeepa

Storage quality of service (QoS) is a critical technology that ensures that applications obtain consistent and predictable performance. Without QoS, certain workloads like booting of multiple systems can take up entire resources for a period and affect other workloads. For information about QoS, see Guarantee throughput with QoS overview.

Applying QoS ensures that applications get consistent performance every time. NetApp ONTAP defines two parameters for QoS ceilings- QoS Max, and throughput floor- QoS Min. QoS Max represents the maximum number of IOPS or MBps or IOPS and MBps a workload can achieve. On the other hand, QoS Min guarantees that the throughput for a workload is not below a certain number of IOPS or Mbps, or IOPS and MBps.

Adaptive QoS

Adaptive QoS is used for Keystone services to maintain the ratio of IOPS to TBs/GBs as the size varies the QoS policy is automatically applied. For information about adaptive QoS, see About adaptive QoS.

Keystone provides you with adaptive QoS polices that you can set up once your cluster is in production. You should ensure that all your volumes are associated with the correct adaptive QoS policies that are already created and available in your system.

Note If you have not applied adaptive QoS policies on your volumes correctly, those volumes will be measured and charged at the highest service level as per your subscription. This may result in unintended burst charges.

Configuration of adaptive QoS policy group

You can configure adaptive QoS policies to automatically scale a throughput ceiling or floor to volume size. For configuring a policy, you should be aware of the following:

  • Policy group name: The name of the adaptive QoS policy group. For example, Keystone_extreme.

  • VServer: The name of the VServer or storage VM (storage virtual machine).

  • Expected IOPS: The number of IOPS/TiB that ONTAP provides as a minimum as long as there is performance guarantee.

  • Peak IOPS. The maximum number of IOPS/TiB that will be available to a volume before performance is limited.

  • Expected IOPS allocation: Whether allocated space or used space is considered for expected IOPS. This field controls whether the expected IOPS available to the volume is based on the provisioned or used size of the volume. In Keystone, all QoS calculations are based on the used space.

  • Peak IOPS allocation: Whether allocated space or used space is considered for peak IOPS. This field controls whether the peak IOPS available to the volume is based on the provisioned or used size of the volume. In Keystone, all QoS calculations are based on the used space.

  • Absolute minimum IOPS: The lowest number of expected IOPS that will be applied to a volume if the volume size is very small and would otherwise result in an unacceptable number of IOPS. This value defaults to 1,000 for Extreme, 500 for Premium, and 75 for other service levels.

    Note This is not IOPS density (for example, 75 IOPS/TiB), but an absolute minimum number of IOPS.

For more information, see Use adaptive QoS policy groups.

Settings of adaptive QoS policies

The settings for adaptive QoS policies vary for each service level.

Settings for Extreme service level

Settings and commands for the Extreme service level:

  • Sample command:

qos adaptive-policy-group create -policy group <Keystone_extreme> -vserver <SVM_name> -expected-iops 6144 -peak-iops 12288 -expected-iops-allocation used-space -peak-iops-allocation used-space -block-size 32K
  • Minimum volume size: 100GiB, 0.1TiB

  • Maximum volume size: 10TiB

Settings for Premium service level

Settings and commands for the Premium service level:
  • Sample command:

qos adaptive-policy-group create -policy group <Keystone_premium> -vserver <SVM_name> -expected-iops 2048 -peak-iops 4096 -expected-iops-allocation used-space -peak-iops-allocation used-space -block-size 32K
  • Minimum volume size: 500GiB, 0.5TiB

  • Maximum volume size: 50TiB

Settings for Performance service level

Settings and commands for the Performance service level:

  • Sample command:

qos adaptive-policy-group create -policy group <Keystone_performance> -vserver <SVM_name> -expected-iops 1024 -peak-iops 2048 -expected-iops-allocation used-space -peak-iops-allocation used-space -block-size 32K
  • Minimum volume size: 500GiB, 0.5TiB

  • Maximum volume size: 80TiB

Settings for Value service level

Settings and commands for the Value  service level:
  • Sample command:

qos adaptive-policy-group create -policy group <Keystone_premium> -vserver <SVM_name> -expected-iops 64 -peak-iops 128 -expected-iops-allocation used-space -peak-iops-allocation used-space -block-size 32K
  • Minimum volume size: 1TiB

  • Maximum volume size: 100TiB

Recommendations of volume size

The minimum and maximum volumes sizes for each service level described here allow for optimal IOPs and latency values for a volume. Creating too many volumes outside of these guidelines may negatively impact performance in those volumes.

Block size calculation

Note these points before you calculate the block size by using these settings:

  • IOPS/TiB = MBps/TiB divided by (block size * 1024)

  • Block size is in KB/IO

  • TiB = 1024GiB; GiB = 1024MiB; MiB = 1024KiB; KiB = 1024Bytes; as per base 2

  • TB = 1000GB; GB = 1000MB; MB = 1000KB; KB = 1000Bytes; as per base 10

Sample block size calculation

To calculate the throughput for the a service level, for example Extreme service level:

  • Maximum IOPS: 12,288

  • Block size per I/O: 32KB

  • Maximum throughput = (12288 * 32 * 1024) / (1024*1024) = 384MBps/TiB

If a volume has 700GiB of logical used data, the available throughput will be:

Maximum throughput = 384 * 0.7 = 268.8MBps