Dynamic Queue Pair Reconfiguration for Virtualized CPU Scaling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing data processing systems face challenges in dynamically reconfiguring queue pairs in response to changes in the number of CPUs without interrupting performance or service, particularly in virtualized environments where CPU numbers can vary dynamically.
Innovation Solution
A device driver dynamically allocates and reconfigures queue pairs by monitoring CPU changes, allocating memory for new queue pairs when CPUs are added and removing them when CPUs are removed, and programming the receive side scaling mechanism in the network adapter to enable or disable processing engines and tuple hashing accordingly.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If the number of queue pairs is fixed, then the system structure is simple and stable, but the system cannot adapt to dynamic CPU reconfiguration in virtualized environments
Solution Approach 1:
The patent implements dynamic reconfiguration of queue pairs by allowing the device driver to allocate, deallocate, and reconfigure queue pairs in response to changing CPU numbers. The receive side scaling mechanism is programmed to dynamically insert or remove processing engines, enabling the system to adapt its structure to match the current CPU configuration without requiring a system restart or manual intervention.
Solution Approach 2:
The device driver continuously monitors the number of CPUs in the system and uses this feedback information to automatically adjust the queue pair configuration. When CPU numbers change, the driver detects this change and triggers appropriate allocation or deallocation of queue pairs, ensuring the network processing capacity always matches the available processing resources.
2Adaptability or versatility
If queue pairs are dynamically reconfigured, then the system adapts to CPU changes, but performance interruption may occur during reconfiguration
Solution Approach 1:
The device driver prepares for potential reconfiguration by maintaining a pool of available queue pair descriptors and pre-configuring the receive side scaling mechanism. When CPU changes are detected, the driver can quickly allocate or deallocate queue pairs from this pre-prepared state, minimizing the time window during which service interruption might occur.
Solution Approach 2:
The patent ensures continuous network processing by maintaining active queue pairs and their associated processing engines throughout the reconfiguration process. The receive side scaling mechanism is designed to seamlessly insert or remove processing engines without dropping packets or interrupting ongoing data transmission, thus preserving the continuity of useful action during dynamic adaptation.
3Productivity
If more queue pairs are allocated, then the system can handle more CPUs and higher processing capacity, but memory consumption increases
Solution Approach 1:
The device driver allocates queue pairs based on the actual number of CPUs detected in the system rather than provisioning for maximum possible capacity. The receive side scaling mechanism dynamically adjusts the number of active processing engines to match the current CPU count, ensuring that memory resources are allocated proportionally to actual processing needs rather than being over-provisioned for hypothetical future expansions.
Data Source
AI summary
Dynamic reconfiguration of queue pairs in a data processing system is provided. A device driver determines whether a dynamic CPU reconfiguration has added one or more CPUs to the data processing system, wherein the data processing system comprises a number of CPUs and a number of queue pairs. Responsive to the dynamic CPU configuration adding one or more CPUs, the device driver allocates a portion of a memory corresponding to a queue pair, wherein each queue pair comprises a receive queue and a transmit queue, programs a receive side scaling mechanism in a network adapter to allow for dynamic insertion of a processing engine associated with the queue pair, and enables transmit tuple hashing to the queue pair.


