Quality of Service (QoS) policies enable you to define quality of service per view. In a QoS policy, you can set limits to define minimum and maximum allowed bandwidth and/or IOPS for read and/or write operations per view. After creating a QoS policy, you can attach it to a view when you create or modify a view.
QoS policies are supported for NFSv4.1, NFSv3 and SMB. S3 is not supported.
You can set static and/or capacity-based QoS limits.
Static limits are used-defined values of bandwidth and/or IOPS for read and/or write operations. These limits are fixed; they are not dependent on the used or provisioned capacity of the view.
Minimum limits define the minimum allowed performance per view when there is resource contention.
Maximum limits define the maximum allowed performance per view when there is no resource contention.
Capacity-based limits can be based on either of the following:
Used logical capacity
These limits cap the read/write bandwidth and/or IOPS per unit of used logical capacity. (Logical capacity is the amount of data written, before data reduction.) For example, you can configure a QoS policy to allow a maximum of 3 read IOPS per one GB of used logical capacity.
Provisioned logical capacity
These limits cap the read/write bandwidth and/or IOPS per unit of logical capacity provisioned by the soft limit of a quota on the view path. For example, you can configure the QoS policy to allow a maximum of 1MB/s of read bandwidth per GB of the capacity limit configured in a quota.
Capacity-based limits require a quota to be provisioned on the view path. If you attach a QoS policy that uses this mode to a view that has no quota, VMS automatically creates a quota on the view path.
The quota on the view path itself is the only quota that affects the limits.
QoS limits take both data workload and metadata requests into account, as follows:
- The size of a single IO for the purpose of a QoS limit is 1MB. In other words, the number of IOs per request is obtained by dividing the request size by 1MB.
- A mutating metadata request (such as create, delete, rename, setattr) is counted as one write IO. Non-mutating metadata requests (such as getattr, lookup, list) are counted as one read IO for each. The size of a metadata request is taken to be 4KB.
VAST Cluster provides the following QoS provisioning modes:
Static. This mode enforces minimum and maximum static limits.
Used Capacity. This mode enforces used capacity-based limits and maximum static limits.
Provisioned Capacity. This mode enforces provisioned capacity-based limits and maximum static limits.
When static limits are used in Used Capacity and Provisioned Capacity modes, they limit performance that can be reached while still within the capacity-based limits. For example, setting a 1GB/s maximum and 10 MB/s per GB would mean that after reaching 100GB, the performance will no longer increase.