NVMe HBA Driver I/O Prioritization via Namespace Queues

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The current NVMe specification lacks a mechanism for specifying priority levels for I/O commands, leading to misrouting of I/O commands and potential delays in processing, as urgent commands may be executed in low-priority queues while less urgent commands are executed in high-priority queues.

Innovation Solution

The method involves using namespaces to map logical block addresses (LBAs) to virtual machines or constructs and assigning priority levels to these namespaces, allowing the HBA driver to route I/O commands to queues with designated priority levels, ensuring that commands are processed according to the desired performance levels.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If I/O commands are processed using standard NVMe queues without priority levels, then the system maintains simplicity in queue management, but urgent commands may be delayed by less urgent commands leading to performance degradation

Engineering Contradiction:
ImproveI/O command processing speedVSAvoidCommand execution delay
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments I/O submission queues into multiple priority levels (e.g., high priority, medium priority, low priority queues). Each queue is dedicated to specific priority levels, allowing urgent commands to be processed in high-priority queues without being blocked by less urgent commands in lower-priority queues. This segmentation resolves the contradiction by organizing queues hierarchically based on command urgency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent assigns different priority levels to different namespaces and I/O submission queues based on local requirements. Each namespace can be configured with specific priority levels tailored to its workload characteristics. This local quality approach allows critical workloads to receive higher priority processing while non-critical workloads use lower priority queues, optimizing overall system performance without uniform treatment.

Inventive Principle:
Principle #3Local quality

2Measurement precision

If priority levels are assigned to I/O submission queues based on namespaces, then command routing accuracy improves, but system complexity increases due to additional configuration and management overhead

Engineering Contradiction:
ImproveCommand routing accuracyVSAvoidQueue management complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent introduces namespaces as intermediary entities between I/O commands and submission queues. Namespaces act as mediators that group logical block addresses and associate them with specific priority levels. This intermediary layer simplifies the mapping process by providing a structured hierarchy: I/O commands → Namespaces → Priority-level queues, reducing the complexity of direct command-to-queue routing while improving routing accuracy.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent makes namespaces multi-functional by using them for both data organization (grouping LBA ranges) and priority management (assigning priority levels). This universal approach allows a single namespace structure to serve dual purposes: organizing storage logic and controlling I/O scheduling, thereby reducing the need for separate priority assignment mechanisms and lowering overall system complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Reliability

If multiple priority-level queues are maintained, then urgent commands can be processed promptly, but the number of queues and associated overhead increases

Engineering Contradiction:
ImproveCommand execution guaranteeVSAvoidNumber of queues
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges multiple priority-level queues into a unified namespace structure. Instead of maintaining completely separate queue systems for different priorities, all queues are integrated under the namespace framework with standardized management. This merging approach reduces duplication of management overhead while preserving priority differentiation, as the namespace layer provides a common interface for managing diverse priority queues.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent implements dynamic queue management where the number and configuration of priority queues can be adjusted based on workload demands. The system can dynamically allocate I/O submission queues to namespaces and adjust priority levels without halting operations. This dynamic approach allows the system to maintain only the necessary number of queues at any given time, reducing overhead while ensuring reliable processing for urgent commands when needed.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentEP3605347B1Systems and methods for I/O prioritization in nvme-compliant storage devices
Publication Date: 2023.04.19 HEWLETT PACKARD ENTERPRISE DEV LP
  • EP3605347B1 patent drawingFigure 1
  • EP3605347B1 patent drawingFigure 2
  • EP3605347B1 patent drawingFigure 3

AI summary

Systems and methods disclosed herein provide an I/O prioritization scheme for NVMe-compliant storage devices (120). Through an interface of an HBA driver (110), a user specifies a range of LBAs (122, 124) that map to a namespace. The user interface (112) also designates a priority level for the namespace. Once the namespace is created, the HBA driver (110) generates a queue (116, 118) of the designated priority level. The HBA driver (110) also generates a table (114) that maps the queue to the namespace. When the HBA driver (110) receives a request to perform an I/O command that targets the namespace, the HBA driver (110) adds the requested command to the queue. I/O commands targeting the namespace are processed in accordance with the designated priority level by the controller (150).