IP Library Granted Patent US 9,218,219
Granted Patent B2
US 9,218,219 · App. 12/953,964 · Granted Dec 22, 2015

Managing virtual functions of an input/output adapter

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 9,218,219
App. No.
12/953,964
Granted
Dec 22, 2015
Kind
B2
Abstract

A computer implemented method may include identifying allocations for each virtual function of a plurality of virtual functions that are provided via an input/output adapter. The computer implemented method may further include determining a range associated with each group of a plurality of groups based on the identified allocations. The computer implemented method may also include associating each virtual function with a group of the plurality of groups based on the range associated with the group. Where at least one group of the plurality of groups is empty, and where one or more groups of the plurality of groups has two or more virtual functions associated with the one or more groups, the computer implemented method may include distributing the two or more virtual functions to the at least one empty group. The computer implemented method may further include transferring the plurality of virtual functions from each group to a corresponding category at the input/output adapter.

Claims (42)

1. A computer-implemented method, comprising:

identifying bandwidth allocations respectively assigned to a plurality of virtual functions that are provided via a hardware input/output adapter in a virtualized computing system, wherein the hardware input/output adapter supports classification of the plurality of virtual functions into a plurality of categories, each category of the plurality of categories representing a different priority level of input/output processing;

determining a bandwidth range associated with each group of a plurality of groups based on a highest of the assigned bandwidth allocations, a lowest of the assigned bandwidth allocations, and the number of groups, wherein the number of groups is equal to the number of the plurality of categories, wherein each group corresponds to a respective one of the categories, wherein the bandwidth range associated with each particular group of the plurality of groups is greater than the bandwidth range associated with each group corresponding to a lower priority category than the category corresponding to the particular group, and wherein the bandwidth ranges do not overlap;

assigning each virtual function of the plurality of virtual functions to one of the groups, wherein the bandwidth allocation assigned to the virtual function is within the bandwidth range of the group to which the virtual function is assigned;

after assigning each virtual function, in response to determining that a first group of the plurality of groups is empty and that a second group of the plurality of groups has two or more virtual functions, redistributing the two or more virtual functions between the second group and the first group, wherein after the redistributing, the first group and the second group each has at least one virtual function, and wherein the second group is associated with a lower bandwidth range than the first group; and

after the redistributing, transferring the plurality of virtual functions from each group of the plurality of groups to the category corresponding to the group at the hardware input/output adapter for processing.

2. The computer-implemented method of claim 1 , further comprising determining a number of virtual functions to redistribute based on a parameter from the second group to the first group before redistributing the two or more virtual functions from the second group to the first group.

3. The computer-implemented method of claim 2 , wherein determining the number of virtual functions to redistribute from the second group to the first group comprises dividing the number of virtual functions associated with the second group by two.

4. The computer-implemented method of claim 1 , further comprising:

determining that a third group of the plurality of groups is empty;

determining that a fourth group of the plurality of groups has two or more virtual functions; and

redistributing the two or more virtual functions from the fourth group to the third group.

5. The computer-implemented method of claim 4 , further comprising determining a total of the assigned bandwidth allocations for each group of the plurality of groups.

6. The computer-implemented method of claim 2 , wherein the parameter comprises a quality of service parameter.

7. The computer-implemented method of claim 2 , wherein the parameter comprises a number of queues parameter.

8. The computer-implemented method of claim 2 , wherein the parameter comprises a number of interrupts parameter.

9. An apparatus, comprising:

a processor;

a hardware input/output adapter configured to support classification of a plurality of virtual functions into a plurality of categories, wherein each category of the plurality of categories represents a different priority level of input/output processing; and

a memory to store program code, the program code executable by the processor to implement a virtualized computing system and:

to identify a bandwidth allocation respectfully assigned to each virtual function of a plurality of virtual functions that are provided via the hardware input/output adapter,

to determine a bandwidth range associated with each group of a plurality of groups based on a highest of the assigned bandwidth allocations, a lowest of the assigned bandwidth allocations, and the number of groups, wherein the number of groups is equal to the number of the plurality of categories, wherein each group corresponds to a respective one of the categories, wherein the bandwidth range associated with each particular group of the plurality of groups is greater than the bandwidth range associated with each group corresponding to a lower priority category than the category corresponding to the particular group, and wherein the bandwidth ranges do not overlap,

to assign each virtual function of the plurality of virtual functions to one of the groups, wherein the bandwidth allocation assigned to the virtual function is within the bandwidth range of the group to which the virtual function is assigned,

after the assigning of each virtual function, in response to determining that a first group of the plurality of groups is empty and that a second group of the plurality of groups has two or more virtual functions, to redistribute the two or more virtual functions between the second group and the first group such that the first group and the second group each has at least one virtual function, wherein the second group is associated with a lower bandwidth range than the first group, and

after the redistributing, to transfer the plurality of virtual functions from each group of the plurality of groups to the category corresponding to the group at the hardware input/output adapter for processing.

10. The apparatus of claim 9 , wherein the program code is further executable by the processor to determine a number of virtual functions to redistribute based on a parameter from the second group to the first group before redistributing the two or more virtual functions from the second group to the first group.

11. The apparatus of claim 10 , wherein the program code to determine the number of virtual functions to redistribute from the second group to the first group is executable by the processor to divide the number of virtual functions associated with the second group by two.

12. The apparatus of claim 9 , wherein the program code is further executable by the processor to:

determine that a third group of the plurality of groups is empty;

determine that a fourth group of the plurality of groups has two or more virtual functions; and

redistribute the two or more virtual functions from the fourth group to the third group.

13. The apparatus of claim 12 , wherein the program code is further executable by the processor to determine a total of the assigned bandwidth allocations for each group of the plurality of groups.

14. The apparatus of claim 10 , wherein the parameter comprises a quality of service parameter.

15. The apparatus of claim 10 , wherein the parameter comprises a number of queues parameter.

16. The apparatus of claim 10 , wherein the parameter comprises a number of interrupts parameter.

17. A computer program product comprising a non-transitory computer usable medium having computer usable program code embodied therewith, the computer usable program code executable by a processor to:

identify a bandwidth allocation respectively assigned to a plurality of virtual functions that are provided via a hardware input/output adapter in a virtualized computing system, wherein the hardware input/output adapter supports classification of the plurality of virtual functions into a plurality of categories, each categories of the plurality of categories representing a different priority level of input/output processing;

determine a bandwidth range associated with each group of a plurality of groups based on a highest of the assigned bandwidth allocations, a lowest of the assigned bandwidth allocations, and the number of groups, wherein the number of groups is equal to the number of the plurality of categories, wherein each group corresponds to a respective one of the categories, wherein the bandwidth range associated with each particular group of the plurality of groups is greater than the bandwidth range associated with each group corresponding to a lower priority category than the category corresponding to the particular group, and wherein the bandwidth ranges do not overlap;

assign each virtual function of the plurality of functions to one of the groups, wherein the bandwidth allocation assigned to each virtual function is within the bandwidth range of the group to which each virtual function is assigned;

after the assigning of each virtual function and upon determining that a first group of the plurality of groups is empty and that a second group of the plurality of groups has two or more virtual functions, redistribute the two or more virtual functions between the second group and the first group such that the first group and the second group each has at least one virtual function, and wherein the second group is associated with a lower bandwidth range than the first group; and

after the redistributing, transfer the plurality of virtual functions from each group of the plurality of groups to the category corresponding to the group at the hardware input/output adapter for processing.

18. The computer program product of claim 17 , wherein the computer usable program code is further executable by the processor to determine a number of virtual functions to redistribute from the second group to the first group.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2024
From: DAEDALUS BLUE LLC
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY, LIMITED
Reel/Frame 066749/0668 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: DAEDALUS GROUP, LLC
To: DAEDALUS BLUE LLC
Reel/Frame 051737/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP, LLC
Reel/Frame 051710/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP LLC
Reel/Frame 051032/0784 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2010
From: BROWNLOW, SEAN T.; OBERLY, JOHN R., III
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 025422/0368 →