Storage QoS in Keystone
Keystone uses storage quality of service (QoS) to ensure that applications obtain consistent and predictable performance. Without QoS, certain workloads, such as those for booting of multiple systems, might consume most or all of the resources for a period of time and affect other workloads.
For information about QoS, see Guarantee throughput with QoS overview.
Adaptive QoS
Adaptive QoS (AQoS) is used by Keystone services to dynamically maintain the IOPS/TiB ratio based on the volume size. For information about AQoS policies, see About adaptive QoS.
Keystone provides you with AQoS polices that you can set up once your cluster is in production. You should ensure that all your volumes are associated with the correct AQoS policies that are already created and available in your system.
An ONTAP volume is non-compliant if it does not have an AQoS policy applied. A volume without a QoS policy is the last on the list of priority for the system to provide any available input-output operations. However, if any input-output operations are available, then the volume could consume all available IOs.
If you have not applied AQoS policies to your volumes, those volumes will be measured and charged at the highest service level as per your subscription. This may result in unintended burst charges. |
Adaptive QoS settings
The Adaptive QoS (AQoS) settings vary with service levels.
Policy name |
Extreme |
Premium |
Performance |
Standard |
Value |
Expected IOPS/TiB |
6,144 |
2,048 |
1,024 |
256 |
64 |
Expected IOPS Allocation |
Allocated space |
||||
Peak IOPS/TiB |
12,288 |
4,096 |
2,048 |
512 |
128 |
Peak IOPS Allocation |
Used space |
||||
Block Size |
32K |
Configuration of adaptive QoS policy group
You can configure adaptive QoS (AQoS) policies to automatically scale a throughput ceiling or floor to volume size. Not all Keystone service levels are aligned with the default ONTAP QoS policies. You can create custom QoS policies for them. For configuring a policy, you should be aware of the following:
-
Policy group name: The name of the AQoS policy group. For example,
Keystone_extreme
. -
VServer: The name of the VServer or storage VM (storage virtual machine).
-
Expected IOPS/TiB: The minimum number of IOPS, per allocated TiB per volume, that the system attempts to provide when enough system IOPS are available.
-
Peak IOPS/TiB: The maximum number of IOPS, per used TiB per volume, that the system allows the volume to reach before it throttles the IOPS through injection of latency.
-
Expected IOPS allocation: This parameter controls whether the expected IOPS available to the volume is based on the allocated or used size of the volume. In Keystone, this is based on the allocated space.
-
Peak IOPS allocation: This parameter controls whether the peak IOPS available to the volume is based on the allocated or used size of the volume. In Keystone, this is 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 forPremium
, and 250 forPerformance
, and 75 forStandard
andValue
service levels.This is not IOPS density (for example, 75 IOPS/TiB), but an absolute minimum number of IOPS.
For information about IO density, see Metrics and definitions used in Keystone Services. For more information about AQoS policy groups, see Use adaptive QoS policy groups.
Settings of adaptive QoS policies
The settings for adaptive QoS (AQoS) policies for each service level are described in the following sections. The minimum and maximum volume sizes for each service level provided 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.
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 allocated-space -peak-iops-allocation used-space -block-size 32K -absolute-min-iops 1000
-
Recommended minimum volume size: 100GiB, 0.1TiB
-
Recommended 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 allocated-space -peak-iops-allocation used-space -block-size 32K -absolute-min-iops 500
-
Recommended minimum volume size: 500GiB, 0.5TiB
-
Recommended 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 allocated-space -peak-iops-allocation used-space -block-size 32K -absolute-min-iops 250
-
Recommended minimum volume size: 500GiB, 0.5TiB
-
Recommended maximum volume size: 80TiB
Settings for Standard service level
Settings and commands for the Standard service level:
-
Sample command:
qos adaptive-policy-group create -policy-group <Keystone_standard> -vserver <SVM_name> -expected-iops 256 -peak-iops 512 -expected-iops-allocation allocated-space -peak-iops-allocation used-space -block-size 32K -absolute-min-iops 75
-
Recommended minimum volume size: 1TiB
-
Recommended maximum volume size: 100TiB
Settings for Value service level
Settings and commands for the Value service level:
-
Sample command:
qos adaptive-policy-group create -policy-group <Keystone_value> -vserver <SVM_name> -expected-iops 64 -peak-iops 128 -expected-iops-allocation allocated-space -peak-iops-allocation used-space -block-size 32K -absolute-min-iops 75
-
Recommended minimum volume size: 1TiB
-
Recommended maximum volume size: 100TiB
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
To calculate the throughput for 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