One of the administrative challenges that any data platform has to solve is fair access to resources. That is to say, any given user or workload should not starve out others. At the same time, we generally want to maximize utilization of the resources available. There are various approaches to managing this balance and quality of service (QoS) is one of them.
In VAST 5.0 we introduce QoS per user. This blog examines what that means and why it’s important to organizations servicing wide-ranging workloads, including AI and ML.
QoS is a feature that allows us to prioritize different types of traffic and allocate bandwidth accordingly. QoS can improve the performance and user experience of applications that require low latency, high reliability, or high throughput, such as artificial intelligence (AI), business intelligence (BI), media, and practically all modern workloads.
VAST has constantly advanced our QoS technology. We started off with coarse-based QoS around hardware, software or both simultaneously. Over the course of several product releases we have refined the granularity into finer and finer levels.
Our composable shared-everything architecture gives us the edge over shared nothing architectures. For example, we can dedicate hardware to particular users, protocols and workloads. In addition or alternatively we can provide QoS in software. The VAST Data Platform utilizes a Btree+ element store and exposes data in that store over various protocols simultaneously, called a View. Since VAST is multi-tenant, every view is part of a tenant. Hence, QoS is achieved within and across tenants simply by applying a QoS policy to any given view or views.
Not all users (within or across tenants) have the same QoS requirements or expectations. For example, advanced users may need higher QoS levels than regular users. They also might require different types of QoS and QoS at different times. Moreover, some users may have different QoS preferences for different applications. For instance, an AI/DL pipeline may prioritize bandwidth while an AI inference pipeline might prioritize IOPS.
Therefore, it would be useful to have a QoS feature that allows you to configure QoS on a per user basis. This way, we can customize QoS for each user according to their needs and preferences, and minimize contention or unfair allocation.
With VAST 5.0 we now offer QoS per user. This functionality is available within and across tenants, meaning the noisy neighbor problem can be solved within and across each tenant of the system.
QoS can be configured and changed real-time using our GUI, command line and/or via our RESTful API.
In the next few screens, we will demonstrate how easy it is to configure QoS per user in the VAST GUI.
First, log into the VMS GUI. Once logged in, navigate to Element Store → QoS Policies:
The QoS policy screen lists existing policies. We can right-click on any existing policy to update them in real time. Click on the Create QoS Policy icon in the top right:
On the Create / Add QoS Policy screen, go to the ‘User’ tab to create our new QoS policy for any user.
We can define the QoS user policy for the ‘default’ tenant or any other defined tenant.
We can define a QoS policy for the ‘default’ user.
Provide min, max, burst and credits for flows.
We can limit by BW & IOPS, BW only and IOPS only.
By following these steps, you can enable QoS on a per user basis and provide a better overall experience for your users. For more information, you can refer to our documentation and guides.