Quality of Service (QoS) Feature
Cloud storage is deployed for multi-tenant usage. Operators strive to provide each tenant with an experience of dedicated resources, while in practice several tenants share the same storage server (in addition to the sharing of other resources such as compute and network). This creates performance unpredictability, which is reflected in the behavior of applications (the “noisy neighbor” effect). The Lightbits value proposition is to improve TCO while maintaining Service Level Agreements (SLA).
Lightbits’ technology allows cloud providers to share and provide storage resources in multi-tenant environments. With the addition of the QoS feature, it is able to deliver performance guarantees, making the cloud more attractive and providing users with the idea that they no longer share resources. Setting user volume limits will enable operators to decrease the impact of the “noisy neighbor” effect and increase the predictability of storage performance that users get.
- Each volume has a default project.
- The default project is automatically assigned to a global-default-policy; this is a no-limit policy. (If no QoS policies were created, only the global-default-policy will be listed).
To list existing QoS policies:
lbcli list qos-policiesCreating a new QoS policy:
lbcli create qos-policy --name=iops-best --description="256 iops" --type iops --write-limit 256 --read-limit 256 --projects defaultA QoS policy can be created to limit the following parameters:
- Limit IOPs per user: –type iops
- Limit bandwidth per user: –type bw
- Limit IOPs per gigabyte per user: –type iops-per-gb
- IOPs write/read limit is in increments of 256, 512, 1024 …
- The newly created policy can be assigned to any number of projects under $ --projects
List existing QoS policies:
lbcli list qos-policiesSample Output
root@rack13-server94:~ lbcli list qos-policiesUUID Name State Type Write limit Read limitbabd2548-b6bc-444f-978c-ed556404f62c no-limit-policy Active iops 0 0 ff23f768-96b6-4874-b838-9eee41b0838e iops-best Active iops 256 256Update the volume with the newly created QoS policy:
lbcli update volume --uuid=0e7ee2fa-5ff3-46cc-ba4a-efd110d0d8b0 --project-name=default --qospolicy-uuid=ff23f768-96b6-4874-b838-9eee41b0838eCheck the update (in the bottom of the output you will see the QoS policy that the volume is assigned to).
lbcli list volumes –uuid=0e7ee2fa-5ff3-46cc-ba4a-efd110d0d8b0 -o jsonSample Output
"qosPolicyUUID": "ff23f768-96b6-4874-b838-9eee41b0838e","qosPolicyName": "iops-best"Update the existing project to use the created QoS policy as the default QoS policy.
New projects for different tenants can be created by lbcli create project --name.
In this example, we will use a default project that is created by installing the Lightbits cluster.
# Update project to use now qos policyroot@rack13-server94:~ lbcli update project --name=default --qos-policy-uuid=ff23f768-96b6-4874-838-9eee41b0838e# Check project informationroot@rack13-server94:~ lbcli list projects -o yamlprojects:- UUID: 27e3800d-d75f-5ae1-8b58-2a16400218dddefaultPolicies:- policyType: qosRateLimitpolicyUUID: ff23f768-96b6-4874-b838-9eee41b0838edescription: This is the default project description.name: defaultIn this output, we can verify that QoS policy UUID is updated to the one we created. Any volume created under this project will inherit the project-default-policy.
# Create volume in default projectroot@rack13-server94 :~ lbcli create volume --size="300 Gib" --name=2vol --acl="acl3"--replica-count=1 --project-name=defaultName UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress2vol 1393874c-6f8b-40b0-a4cf-bdcf30cef6c5 Creating Unknown 0 300 GiB 1 false values:"acl3"# Check volume qos policyroot@rack13-server94:~ lbcli list volume --uuid=1393874c-6f8b-40b0-a4cf-bdcf30cef6c5 -o json"qosPolicyUUID": "ff23f768-96b6-4874-b838-9eee41b0838e","qosPolicyName": "iops-best"