This article identifies the virtualization and QoS related features for the NETINT Quadra and identifies internal resources to aid in creation, configuration, and operation of these capabilities.
Virtualization and QoS with Quadra
NETINT’s Quadra VPU is increasingly deployed in cloud environments for shared usage. In these uses, virtualization technologies are essential to maximizing hardware resources and ensuring efficient resource . They also enable IT managers to manage resources centrally and to scale down and up based on need.
This document details how Quadra manages SR-IOV (Single Root I/O Virtualization), namespaces, and Quality of Service (QoS).
Virtualization via SR-IOV
SR-IOV, or Single Root I/O Virtualization, is an open hardware virtualization technology that allows a single physical device, like Quadra, to appear as multiple virtual devices. SR-IOV is an open-source component of the PCIe specification that is industry-standard and royalty-free.
Briefly, SR-IOV enables multiple virtual machines (VMs) to share a single Quadra while maintaining high performance and low latency. SR-IOV achieves this by creating Virtual Functions (VFs) that can be assigned directly to VMs, bypassing the hypervisor and reducing the overhead associated with virtualization.
APP Note APPS525-Codensity Quadra SR-IOV Configuration and Usage Guide details how to create and configure one physical function and up to six VFs on a Quadra and assign them to a VM. Each VF will have dedicated hardware resources that are isolated from other VFs, providing a level of QoS between the VFs, with greater control provided via namespaces as described below.
Virtualization via Namespaces
While you might be familiar with namespace as a feature in Linux and other Unix-like operating systems, Quadra uses namespaces from NVMe. Briefly, NVMe namespaces are a collection of logical block addresses (LBA) accessible to the host software. A namespace ID (NSID) is an identifier used by a controller to access a namespace, which is not the physical isolation of blocks but rather the isolation of logical blocks addressable by the host software.
There are many reasons to segment an NVMe SSD into multiple namespaces: with the Quadra, namespaces are the second alternative to achieve VPU fractionalization. Note that APPS607 – Quadra Multi-Namespace Application Note details how to create namespaces with and without SR-IOV. Notably, you can create up to 64 namespaces without SR-IOV and six with SR-IOV.
When created without SR-IOV, namespaces help isolate processes and resources but do not inherently provide strict resource allocation or QoS guarantees like VFs with SR-IOV. While they offer flexibility and compatibility, they may introduce some performance overhead due to the additional abstraction layer and are more susceptible to noisy neighbor performance degradation. This makes quality of service essential when creating multiple namespaces for different processes.
How Quadra Handles QoS
When namespaces are enabled, Quadra manages QoS between the namespaces as detailed in the APPS615-QoS Operation Application Note. As the App Note explains, QoS operation modes are useful when sharing resources among multiple users, where fairness is required to prevent any single user from hogging too many resources. Servers running many namespaces and sharing a smaller count of Quadra resources can enable QoS operation mode by splitting the HW capability and giving each container/VM a fair portion of the resources.
As described in APPS607 – Multi-Namespaces Application Note, the maximum concurrent NSID count is 64. In terms of setup, enabling QoS involves configuring the Quadra firmware, reloading the NVMe driver, and performing controller-level resets for the Quadra NVMe device. Adding or removing namespaces while QoS is enabled automatically adjusts throttling allowances to the new total.
Quadra offers three modes of operation, as follows:
- Disabled: Standard operation with no throttling, suitable for typical usage.
- Enabled – Mode 1 (No Sharing): QoS throttling is enabled, ensuring that each active namespace gets its equally divided share of hardware processing time.
- Enabled – Mode 2 (Sharing with Overprovisioning): QoS throttling is enabled with the option to allocate additional throughput to namespaces if idle capacity is available. Users can configure the overprovisioning setting to meet their specific needs.
Briefly, The Quadra QoS operation applies performance throttling based on each unique NVMe NSID. To apply these QoS functions to VFs, you must also create a namespace for the VF. The same setting applies to all namespaces.
In conclusion, Quadra’s support for SR-IOV, namespaces, and QoS ensures optimal resource utilization and performance in a variety of virtualized environments. At your option, Quadra can deliver high-performance hardware or flexible software virtualization with QoS features to guarantee fairness and efficient resource allocation. These capabilities allow Quadra to function seamlessly and powerfully in any virtualized infrastructure.
Quadra owners seeking to learn more about these topics can check these App Notes. Please click the App Note number to request access to the document.
APPS525 – Codensity QUADRA SR-IOV Configuration and Usage Guide
This resource provides a detailed guide on configuring and using SR-IOV with Quadra. It demonstrates the installation of KVM and CentOS VM on a Linux host, enabling users to run FFmpeg transcoding operations using Quadra VF device connections. It covers hardware virtualization aspects and compatibility details.
APPS607 – Quadra Multi-Namespace Application Note
This document focuses on enabling multi-namespaces with or without SR-IOV for the QUADRA NETINT device. It details the tools and parameters required to configure multi-namespaces and specifies the maximum number of namespaces and virtual functions. It complements the SR-IOV Configuration and Usage Guide.
APPS615 – QoS Operation Application Note
This resource explores Quality of Service (QoS) operation modes for Quadra. It explains the purpose of QoS in resource allocation and offers detailed descriptions of the various operation modes, including throttling, sharing, and overprovisioning settings. It also covers resource usage reporting and limitations.