---
title: "Quality of Service Limits"
description: "Quality of Service Limits: Quality of Service (QoS) limits (IOPS, Read, Write, and ReadWrite limits) can be chosen on both volume and pool level."
source: "https://docs.simplyblock.io/latest/non-kubernetes/operations/volumes/limiting-iops-and-throughput/"
---

# Quality of Service Limits

Quality of Service (QoS) limits (IOPS, Read, Write, and ReadWrite limits) can be chosen on both volume and pool level.

It is not allowed to set them on both. A volume assigned to a pool with an active QoS setting
cannot contain its own QoS settings or vice versa. It is possible to combine both approaches in
one cluster, though.

QoS settings on a pool limit the total consumption of all volumes in the pool, but they do not
determine how resources are split within a pool. Some volumes require and receive more IOPS, while
others require and receive less. If the aggregate I/O demand is beyond the limits set for a pool,
all volumes will be relatively throttled.

In Kubernetes, storage class-level QoS Settings are not allowed if the storage class is connected
to a pool with QoS settings.

Therefore, in Kubernetes, if the [Storage Class](../../../kubernetes/usage/storage-class.md) references any pool,
which has QoS limits attached, it is not allowed to add them to the storage class as well.
The same applies to [OpenStack](../../openstack/index.md) QoS Settings on the Volume Type.

!!! warning
    Volumes for which pool-level QoS is active must be located on the same storage node
    in the cluster. Currently, it is not possible to spread them across storage nodes.

To set QoS limits when adding or changing a volume:

```bash title="Setting and updating QoS on volumes"
sbctl volume add lvol01 100G pool01 \
  --max-rw-iops 5000 --max-rw-mbytes 50 \
  --max-r-mbytes 35 --max-w-mbytes 15
sbctl volume qos-set <VOLUME_ID> \
  --max-rw-iops 10000 --max-rw-mbytes 100 \
  --max-r-mbytes 70 --max-w-mbytes 30
```

And the same on pools:

```bash title="Setting and updating QoS on pools"
sbctl storage-pool add pool01 <CLUSTER-UUID> \
  --max-rw-iops 5000 --max-rw-mbytes 50 \
  --max-r-mbytes 35 --max-w-mbytes 15
sbctl storage-pool set <POOL-UUID> \
  --max-rw-iops 5000 --max-rw-mbytes 50 \
  --max-r-mbytes 35 --max-w-mbytes 15
```
