IP Library Granted Patent US 8,782,657
Granted Patent B2
US 8,782,657 · App. 13/076,720 · Granted Jul 15, 2014

Dynamic creation and destruction of IO resources based on actual load and resource availability

Inventors: Nicolas G. Droux (Rio Rancho, NM); Rajagopal Kunhappan (Fremont, CA)
Assignee: Oracle International Corporation
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 8,782,657
App. No.
13/076,720
Granted
Jul 15, 2014
Kind
B2
Abstract

A method for binding input/output (I/O) objects to nodes. The method includes binding an I/O object group to a NUMA node of a plurality of NUMA nodes on a system, obtaining an I/O object group size of the I/O object group, and determining an I/O object group target size based on an I/O object group aggregate load of the I/O object group. The method further includes comparing, by the NUMA I/O Framework, the I/O object group target size and the I/O object group aggregate load, determining, by the NUMA I/O Framework, that a difference between the I/O object group target size and the I/O object group aggregate load exceeds a threshold, and instructing, by the NUMA I/O Framework, an I/O Subsystem associated with the I/O object group to change the I/O object group size, wherein the I/O Subsystem changes, in response to the instruction, the I/O object group size.

Claims (54)

1. A non-transitory computer readable medium comprising software instructions, which when executed by a processor perform a method, the method comprising:

binding, by a Non-Uniform Memory Access (NUMA) input/output (I/O) Framework, an I/O object group to a NUMA node of a plurality of NUMA nodes on a system, wherein the I/O object group is a group of references to I/O resources necessary to service requests to access an I/O device, and wherein the I/O object group comprises a first I/O object corresponding to a first thread and a second I/O object corresponding to an interrupt;

obtaining an I/O object group size of the I/O object group bound to the NUMA node, wherein the I/O object group size is a value corresponding to a number of I/O objects within the I/O object group;

determining an I/O object group target size based on an I/O object group aggregate load of the I/O object group wherein the I/O object group target size is calculated using a sizing policy and wherein the I/O object group aggregate load is calculated using a value corresponding to an amount of processing resources necessary to process the I/O object group;

comparing, by the NUMA I/O Framework, the I/O object group target size and the I/O object group size;

determining, by the NUMA I/O Framework, that a difference between the I/O object group target size and the I/O object group size exceeds a threshold; and

instructing, by the NUMA I/O Framework, an I/O Subsystem associated with the I/O object group to change the I/O object group size, wherein the I/O Subsystem changes, in response to the instruction, a number of the references to the I/O resources necessary to service requests to access the I/O device, wherein after the changing, the I/O object group size is equal to the I/O object group target size.

2. The non-transitory computer readable medium of claim 1 , wherein the first I/O object comprises an affinity defining a relationship between the first I/O object and the second I/O object.

3. The non-transitory computer readable medium of claim 1 , wherein the determination that the difference between the I/O object group target size and the I/O object group size exceeds the threshold indicates the NUMA node processing the I/O object group is one selected from a group consisting of under-utilized and over-utilized.

4. The non-transitory computer readable medium of claim 1 , wherein the changing the I/O object group size comprises one selected from a group consisting of adding an I/O object to the I/O object group, removing the I/O object from the I/O object group, and releasing a reference to a resource corresponding to the I/O object.

5. The non-transitory computer readable medium of claim 1 , wherein the sizing policy specifies that the I/O object group target size is calculated as a particular ratio of the I/O object group aggregate load.

6. A system, comprising:

an input/output (I/O) device;

a plurality of Non-Uniform Memory Access (NUMA) nodes comprising:

a NUMA node comprising a processor and a memory;

a NUMA I/O Framework executing on at least one of the plurality of NUMA nodes, configured to:

bind an I/O object group to the NUMA node, wherein the I/O object group is a group of references to I/O resources necessary to service requests to access the I/O device, and wherein the I/O object group comprises a first I/O object corresponding to a first thread and a second I/O object corresponding to an interrupt;

obtain an I/O object group size of the I/O object group bound to the NUMA node, wherein the I/O object group size is a value corresponding to a number of I/O objects within the I/O object group;

determine an I/O object group target size based on an I/O object group aggregate load of the I/O object group, wherein the I/O object group target size is calculated using a sizing policy and wherein the I/O object group aggregate load is calculated using a value corresponding to an amount of processing resources necessary to process the I/O object group;

compare the I/O object group target size and the I/O object group size;

send the I/O object group target size to an I/O Subsystem associated with the I/O object group in response to a determination that a difference between the I/O object group target size and the I/O object group size exceeds a threshold; and

instruct the I/O Subsystem to change the I/O object group size using the I/O object group target size; and

the I/O Subsystem executing on at least one of the plurality of NUMA nodes, configured to:

receive the I/O object group target size;

receive the instruction to change the I/O object group size; and

change the I/O object group size using the I/O object group target size by changing a number of the references to the I/O resources necessary to service requests to access the I/O device, wherein after the changing, the I/O object group size is equal to the I/O object group target size.

7. The system of claim 6 , wherein the first I/O object comprises an affinity defining a relationship between the first I/O object and the second I/O object.

8. The system of claim 7 , wherein changing the I/O object group size comprises:

initializing a third I/O object;

adding the third I/O object to the I/O object group; and

sending a request to the NUMA I/O Framework to bind the third I/O object to one of the plurality of NUMA nodes on the system.

9. The system of claim 7 , wherein changing the I/O object group size comprises:

selecting the first I/O object;

removing the first I/O object from the I/O object group; and

releasing a reference to a resource corresponding to the first I/O object.

10. The system of claim 6 , wherein the determination that the difference between the I/O object group target size and the I/O object group size exceeds the threshold indicates the NUMA node is one selected from a group consisting of under-utilized and over-utilized.

11. The system of claim 6 , wherein the sizing policy specifies that the I/O object group target size is calculated as a particular ratio of the I/O object group aggregate load.

12. A method for binding input/output (I/O) objects to nodes, the method comprising:

binding, by a Non-Uniform Memory Access (NUMA) input/output (I/O) Framework, an I/O object group to a NUMA node of a plurality of NUMA nodes on a system, wherein the I/O object group is a group of references to I/O resources necessary to service requests to access an I/O device, and wherein the I/O object group comprises a first I/O object corresponding to a first thread and a second I/O object corresponding to an interrupt;

obtaining an I/O object group size of the I/O object group bound to the NUMA node, wherein the I/O object group size is a value corresponding to a number of I/O objects within the I/O object group;

determining an I/O object group target size based on a first I/O object effective load of the first I/O object and a second I/O object effective load of the second I/O object, wherein the I/O object group target size is calculated using a sizing policy, and wherein the first and second I/O object effective loads are calculated using a value corresponding to an amount of processing resources necessary to process the I/O object group;

comparing, by the NUMA I/O Framework, the I/O object group target size and the I/O object group size;

determining, by the NUMA I/O Framework, that a difference between the I/O object group target size and the I/O object group size exceeds a threshold; and

instructing, by the NUMA I/O Framework, a Network Media Access Connection (MAC) Layer associated with the I/O object group to change the I/O object group size, wherein the Network MAC Layer changes, in response to the instruction, a number of the references to the I/O resources necessary to service requests to access the I/O device, wherein after the changing, the I/O object group size is equal to the I/O object group target size.

13. The method of claim 12 , wherein changing the I/O object group size comprises:

initializing, by the Network MAC Layer, a third I/O object corresponding to a second thread;

adding the third I/O object to the I/O object group; and

sending a request to the NUMA I/O Framework to bind the third I/O object to one of the plurality of NUMA nodes on the system.

14. The method of claim 12 , wherein changing the I/O object group size comprises:

selecting, by the Network MAC Layer, the first I/O object; removing, by the Network MAC Layer, the first I/O object from the I/O object group; and

releasing, by the Network MAC Layer, a reference to a resource corresponding to the first I/O object.

15. The method of claim 12 , wherein the I/O object group is associated with a virtual network interface card executing on one of the plurality of NUMA nodes.

16. The method of claim 12 , wherein the determination that the difference between the I/O object group target size and the I/O object group size exceeds the threshold comprises determining that the first I/O object corresponding to the first thread is contributing to an under-utilization of the NUMA node.

17. The method of claim 12 , wherein the sizing policy specifies that the I/O object group target size is calculated as a particular ratio of the I/O object group aggregate load.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2011
From: DROUX, NICOLAS G.; KUNHAPPAN, RAJAGOPAL
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 026129/0649 →
Continuity (2)
Provisional Application 61384120 · Sep 17, 2010
Related Publication 20120072627A1 · Mar 22, 2012