IP Library Granted Patent US 12,381,831
Granted Patent B2
US 12,381,831 · App. 16/867,855 · Granted Aug 5, 2025

Dynamic provisioning of multiple RSS engines

Inventors: Aditya G. Holla (Palo Alto, CA); Rajeev Nair (Palo Alto, CA); Shilpi Agarwal (Palo Alto, CA); Subbarao Narahari (Palo Alto, CA); Zongyun Lai (Beijing, CN); Wenyi Jiang (Palo Alto, CA); Srikar Tati (Palo Alto, CA)
Assignee: VMware LLC
H04L47/6255H04L43/0894H04L45/023H04L45/7453
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,381,831
App. No.
16/867,855
Granted
Aug 5, 2025
Kind
B2
Abstract

An approach for a dynamic provisioning of multiple RSS engines is provided. In an embodiment, a method comprises monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools, and determining whether a CPU usage of any hardware queue, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value. In response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool, has increased above the threshold value, it is determined whether the particular RSS pool includes an unused hardware queue (a queue with light CPU usage). If such an unused hardware queue is presented, then an indirection table that is associated with the particular RSS pool is modified to remap one or more data flows from the particular hardware queue to the unused hardware queue.

Claims (29)

1. A method for managing a plurality of queues of a network interface card (NIC) of a host computer, the method comprising:

monitoring a plurality of RSS pools comprising at least first and second RSS pools, each respective RSS pool corresponding to a respective plurality of hardware queues of the NIC;

assigning flows to the hardware queues of the first and second RSS pools by (i) mapping each flow to one of a first table and a second table respectively associated with the first and second RSS pools, (ii) computing a hash from each flow's set of one or more header values, and (iii) mapping each flow's computed hash value to a record, in the table mapped to the flow, that identifies a hardware queue of the table's associated first or second pool;

determining an association between the hardware queues and a logical queue using at least a hardware queue identifier that is associated with a hash value, the hash value being computed based on values of selected fields of a data packet;

determining that (i) usage of at least one of the hardware queues corresponding to the first RSS pool has increased above a threshold usage value and (ii) the hardware queues of the second RSS pool are underutilized;

based on the determination of the usage and an underutilization, reallocating at least a particular hardware queue from the second RSS pool to the first RSS pool by modifying an indirection table of the second RSS pool associated with a reassignment of the hardware queues;

creating a record in the first table associated with the first RSS pool that maps a set of hash values to the particular hardware queue; and

resizing the first RSS pool and the second RSS pool by adjusting a number of hardware queues based on load metrics.

2. The method of claim 1 , wherein removing a record from the second table associated with the second RSS pool that maps a set of hash values to the particular hardware queue.

3. The method of claim 1 when it is determined that usage of at least one of the hardware queues corresponding to the first RSS pool has increased above a threshold usage value, the method further comprises:

identifying a particular hardware queue in the first RSS pool that is currently underutilized; and

modifying the table associated with the first RSS pool so that a subset of data packets previously mapped to the hardware queue with usage above the threshold usage value are instead mapped to the particular hardware queue.

4. The method of claim 1 , wherein each respective RSS pool is associated with a respective logical queue backed by the respective plurality of hardware queues to which the RSS pool corresponds.

5. The method of claim 1 , wherein when the NIC receives a data packet, the NIC (i) determines whether a destination address of the packet maps to one of the RSS pools, and (ii) when the destination address maps to a particular RSS pool, selects one of the hardware queues that correspond to the particular RSS pool.

6. The method of claim 1 , wherein the method is performed by virtualization software of a host computer on which a plurality of virtual machines execute.

7. A non-transitory machine readable medium storing a program which when executed by at least one processing unit of a host computer manages a plurality of queues of a network interface card (NIC) of the host computer, the program comprising sets of instructions for:

monitoring a plurality of RSS pools comprising at least first and second RSS pools, each respective RSS pool corresponding to a respective plurality of hardware queues of the NIC;

assigning flows to the hardware queues of the first and second RSS pools by (i) mapping each flow to one of a first table and a second table respectively associated with the first and second RSS pools, (ii) computing a hash from each flow's set of one or more header values, and (iii) mapping each flow's computed hash value to a record, in the table mapped to the flow, that identifies a hardware queue of the table's associated first or second pool;

determining that (i) usage of at least one of the hardware queues corresponding to the first RSS pool has increased above a threshold usage value and (ii) the hardware queues of the second RSS pool are underutilized;

based on the determination of the usage and an underutilization, reallocating at least a particular hardware queue from the second RSS pool to the first RSS pool by modifying an indirection table of the second RSS pool associated with a reassignment of the hardware queues;

creating a record in the first table associated with the first RSS pool that maps a set of hash values to the particular hardware queue; and

resizing the first RSS pool and the second RSS pool by adjusting a number of hardware queues based on load metrics.

8. The non-transitory machine readable medium of claim 7 , wherein a record in the second table associated with the second RSS pool that maps a set of hash values to the particular hardware queue is removed.

9. The non-transitory machine readable medium of claim 7 , wherein when it is determined that usage of at least one of the hardware queues corresponding to the first RSS pool has increased above a threshold usage value, the program further comprises sets of instructions for:

identifying a particular hardware queue in the first RSS pool that is currently underutilized; and

modifying the table associated with the first RSS pool so that a subset of data packets previously mapped to the hardware queue with usage above the threshold usage value are instead mapped to the particular hardware queue.

10. The non-transitory machine readable medium of claim 7 , wherein each respective RSS pool is associated with a respective logical queue backed by the respective plurality of hardware queues to which the RSS pool corresponds.

11. The non-transitory machine readable medium of claim 7 , wherein when the NIC receives a data packet, the NIC (i) determines whether a destination address of the packet maps to one of the RSS pools, and (ii) when the destination address maps to a particular RSS pool, selects one of the hardware queues that correspond to the particular RSS pool.

12. The non-transitory machine readable medium of claim 7 , wherein the program is a NIC queue management program that is part of virtualization software of a host computer on which a plurality of virtual machines execute.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2025
From: HOLLA, ADITYA G.; NAIR, RAJEEV; AGARWAL, SHILPI; NARAHARI, SUBBARAO; LAI, ZONGYUN; JIANG, WENYI; TATI, SRIKAR
To: NICIRA, INC.
Reel/Frame 070846/0930 →
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
Continuity (2)
Continuation 15963504 · Apr 26, 2018
Related Publication 20200274820A1 · Aug 27, 2020
References Cited (46)
US 7701849B1 · Ma · 2010 [cited by examiner]
US 7936770B1 · Frattura et al. · 2011 [cited by applicant]
US 8503468B2 · Akyol et al. · 2013 [cited by applicant]
US 8848728B1 · Revah et al. · 2014 [cited by applicant]
US 10686716B2 · Holla et al. · 2020 [cited by applicant]
US 10735341B2 · Holla et al. · 2020 [cited by applicant]
US 11025546B2 · Holla et al. · 2021 [cited by applicant]
US 20090238072A1 · Tripathi et al. · 2009 [cited by applicant]
US 20100064286A1 · Pinter et al. · 2010 [cited by applicant]
US 20100322265A1 · Gopinath · 2010 [cited by examiner]
US 20110142064A1 · Dubal · 2011 [cited by examiner]
US 20110153935A1 · Li · 2011 [cited by applicant]
US 20130117429A1 · Koponen · 2013 [cited by examiner]
US 20130343399A1 · Kandula et al. · 2013 [cited by applicant]
US 20140059111A1 · Veeraiyan · 2014 [cited by applicant]
US 20140122634A1 · Conner et al. · 2014 [cited by applicant]
US 20140254594A1 · Gasparakis et al. · 2014 [cited by applicant]
US 20150055456A1 · Agarwal · 2015 [cited by examiner]
US 20150055457A1 · Agarwal · 2015 [cited by examiner]
US 20150055468A1 · Agarwal · 2015 [cited by examiner]
US 20150100770A1 · Manchineni · 2015 [cited by examiner]
US 20150261556A1 · Jain et al. · 2015 [cited by applicant]
US 20150263974A1 · Jain et al. · 2015 [cited by applicant]
US 20150381514A1 · Word · 2015 [cited by applicant]
US 20160092258A1 · Mehta et al. · 2016 [cited by applicant]
US 20170005931A1 · Mehta et al. · 2017 [cited by applicant]
US 20170163598A1 · Shen et al. · 2017 [cited by applicant]
US 20170187640A1 · Vasudevan et al. · 2017 [cited by applicant]
US 20170353391A1 · Piecuch · 2017 [cited by applicant]
US 20180157514A1 · Malloy et al. · 2018 [cited by applicant]
US 20180157515A1 · Malloy et al. · 2018 [cited by applicant]
US 20180159771A1 · Malloy et al. · 2018 [cited by applicant]
US 20180285151A1 · Wang et al. · 2018 [cited by applicant]
US 20190028435A1 · Khare et al. · 2019 [cited by applicant]
US 20190036894A1 · Wang et al. · 2019 [cited by applicant]
US 20190173841A1 · Wang et al. · 2019 [cited by applicant]
US 20190281018A1 · Zhu et al. · 2019 [cited by applicant]
US 20190334829A1 · Holla et al. · 2019 [cited by applicant]
US 20200028792A1 · Holla et al. · 2020 [cited by applicant]
US 20200036636A1 · Holla et al. · 2020 [cited by applicant]
US 20200036646A1 · Mathew et al. · 2020 [cited by applicant]
US 20200304418A1 · Holla et al. · 2020 [cited by applicant]
US 20210258257A1 · Holla et al. · 2021 [cited by applicant]
Author Unknown, “NSX-T Networking Best Practices,” NSX-T 1.1, Month Unknown 2017, 21 pages, VMware, Inc., Palo Alto, CA, U.S.A. [cited by applicant]
Author Unknown, “RSS and Multiqueue Support in Linux Driver for VMXNET3,” 2020567, Dec. 9, 2015, 3 pages, VMware, Inc. [cited by applicant]
Author Unknown, “What is Numa?,” vSphere 4.1—ESX and vCenter—vSphere Resource Management Guide: Using NUMA Systems with ESX/ESXi, Nov. 29, 2017, 1 page, VMware, Inc. [cited by applicant]