US20120278637A1 - Method and apparatus for performing energy-efficient network packet processing in a multi processor core system - Google Patents
Method and apparatus for performing energy-efficient network packet processing in a multi processor core system Download PDFInfo
- Publication number
- US20120278637A1 US20120278637A1 US13/546,276 US201213546276A US2012278637A1 US 20120278637 A1 US20120278637 A1 US 20120278637A1 US 201213546276 A US201213546276 A US 201213546276A US 2012278637 A1 US2012278637 A1 US 2012278637A1
- Authority
- US
- United States
- Prior art keywords
- data
- network packet
- processor cores
- low
- power state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Definitions
- This disclosure relates to and in particular to energy-efficiency in a multi-processor core system and in particular to energy-efficient network packet processing.
- a computer system having a plurality of processor cores handles a high workload by distributing the workload amongst all of the processor cores.
- each of the plurality of processor cores may be underutilized.
- an operating system may adjust the number of processor cores used based on the system utilization level.
- the unused processor cores are placed in a low-power idle state (“parked”) and can remain at the low-power idle state for long consecutive intervals.
- the operating system continues to distribute the workload amongst the processor cores that are not in the low-power idle state.
- FIG. 1 is a block diagram of a system that includes an embodiment of a Network Interface Controller that supports Receive-Side Scaling;
- FIG. 2 is a block diagram illustrating an embodiment of the network interface controller and memory shown in FIG. 1 ;
- FIG. 3 is a flowgraph of an embodiment of a method to dynamically adjust core affinity settings according to the principles of the present invention.
- FIG. 4 is a block diagram illustrating another embodiment of the network interface controller and memory shown in FIG. 1 .
- a computer system may include a network interface controller (adapter, card) that receives a network packet from the network and forwards the received network packet for processing to one of a plurality of processor cores.
- the workload that is distributed amongst the processor cores may include the processing of network packets received by the network interface controller.
- the processing of network packets may be distributed amongst the processor cores such that the processing of the same traffic flow (for example, network packets having the same source address and destination address) is performed by the same processor core.
- the operating system may use only a subset of the plurality of the processor cores and put the other processor cores in low-power idle state.
- a received network packet to be processed for a particular traffic flow is assigned to a processor core (core affinity setting for the traffic flow) that is in a low-power idle state
- the processor core is woken up from the low-power idle state.
- processor cores that are in a low-power idle state do not have the opportunity to stay in the low-power idle state for a long time.
- An embodiment of the present invention dynamically adjusts the core affinity settings for network packet processing based on whether the operating system has put any of the processor cores into a low-power idle state.
- RSS Receive-Side Scaling
- OS Microsoft's® Windows® Operating System
- I/O Scalable Input/Output
- FIG. 1 is a block diagram of a system 100 that includes an embodiment of a Network Interface Controller 108 that supports Receive-Side Scaling.
- the system 100 includes a processor 101 , a Memory Controller Hub (MCH) 102 and an Input/Output (I/O) Controller Hub (ICH) 104 .
- the MCH 102 includes a memory controller 106 that controls communication between the processor 101 and memory 110 .
- the processor 101 and MCH 102 communicate over a system bus 116 .
- the processor 101 may be a multi-core processor such as Intel® Pentium D, Intel® Xeon® processor, or Intel® Core® Duo processor, Intel® CoreTM i7 Processor or any other type of processor.
- the system includes two multi-core processors 101 each having at least two processor cores (“cores”) 122 .
- each multi-core processor includes four cores 122 .
- the memory 110 may be Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Synchronized Dynamic Random Access Memory (SDRAM), Double Data Rate 2 (DDR2) RAM or Rambus Dynamic Random Access Memory (RDRAM) or any other type of memory.
- DRAM Dynamic Random Access Memory
- SRAM Static Random Access Memory
- SDRAM Synchronized Dynamic Random Access Memory
- DDR2 Double Data Rate 2
- RDRAM Rambus Dynamic Random Access Memory
- the ICH 104 may be coupled to the MCH 102 using a high speed chip-to-chip interconnect 114 such as Direct Media Interface (DMI).
- DMI Direct Media Interface
- DMI supports 2 Gigabit/second concurrent transfer rates via two unidirectional lanes.
- the ICH 104 may include a storage Input/Output (I/O) controller for controlling communication with at least one storage device 112 coupled to the ICH 104 .
- the storage device may be, for example, a disk drive, Digital Video Disk (DVD) drive, Compact Disk (CD) drive, Redundant Array of Independent Disks (RAID), tape drive or other storage device.
- the ICH 104 may communicate with the storage device 112 over a storage protocol interconnect 118 using a serial storage protocol such as, Serial Attached Small Computer System Interface (SAS) or Serial Advanced Technology Attachment (SATA).
- SAS Serial Attached Small Computer System Interface
- SATA Serial Advanced Technology Attachment
- the network interface controller 108 may be included in an ICH 104 that does not include a storage I/O controller 120 or may be included on a separate network interface card that is inserted in a system card slot in the system 100 .
- FIG. 2 is a block diagram illustrating an embodiment of the network interface controller 108 and memory 110 shown in FIG. 1 .
- the network interface controller 108 includes a hash function unit 220 , an indirection table 230 and a plurality of hardware receive queues 202 .
- the memory 110 includes an operating system kernel 280 , a filter driver 210 and a network device driver (miniport driver) 270 .
- hash function unit 220 and indirection table 230 are included in the network interface controller (“NIC”) 108 .
- NIC network interface controller
- some of these components or some elements of these components may be located outside the network interface controller 108 .
- the miniport driver 270 and filter driver 210 are components of a Microsoft® Windows® operating system model (WDM).
- WDM includes device function drivers which may be class drivers or miniport drivers.
- a miniport driver supports a particular type of device, for example, a specific network interface controller 108 .
- a filter driver 210 is an optional driver that adds value to or modifies the behavior of the function driver (miniport driver) 270 .
- the Network Driver Interface Specification is a library of functions accessed via an application programming interface (API) for network interface controllers 110 .
- the NDIS acts as an interface between layer 2 (link layer) and layer 3 (network layer) of the 7 layer Open Systems Interconnect (OSI).
- the library functions include Object Identifiers (OIDs).
- the network interface controller 108 may use a hashing function in the hash function unit 220 to compute a hash value over a hash type (for example, one or more fields in the headers) within the received network packet.
- a number of least significant bits of the hash value may be used to index an entry in an indirection table 230 that identifies a processor core 122 ( FIG. 1 ) to handle processing of the received data packet and one of a plurality of receive queues 202 to store the received data packet.
- the network interface controller 108 can interrupt the identified processor core 122 .
- the “flow” associated with the network packet is determined.
- the “flow” of a Transport Control Protocol (TCP) packet may be determined based on the value of fields in the TCP header and the Internet Protocol (IP) header included in the packet.
- IP Internet Protocol
- a flow identifier for the “flow” can be dependent on a combination of the IP source address and IP destination address included in the IP header and the source port address and destination port address included in the TCP header in the received network packet.
- the plurality of hardware receive queues 202 are provided to store received network packets. In order to ensure in-order packet delivery for a particular flow, each of he hardware receive queues 202 may be assigned to a different flow and also to one of the plurality of processor cores 122 . Thus, each of the plurality of hardware receive queues 202 is associated with one of the plurality of a core processors 122 via the indirection table 230 .
- the network interface controller 108 has eight receive queues 202 .
- the number of receive queues 202 is not limited to eight. In other embodiments there may be more or less receive queues 202 .
- Received network packets are stored in one of the plurality of receives queues 202 . Packet processing of each of the receive queues may be affinitized to a specific processor core 122 . In an embodiment of the present invention, the core affinity settings for packet processing is dynamically adjusted based on the number of processor cores 122 that are in a power-saving idle state (‘parked’).
- Table 1 below illustrates an example of an indirection table 230 with an initial assignment of receive queues 202 to processor cores 122 in a system having eight cores and eight receive queues in order to distribute receive packet processing amongst all of the processor cores 122 .
- FIG. 3 is a flowgraph of an embodiment to dynamically adjust the core affinity settings according to the principles of the present invention.
- the distribution of receive queues 202 to core processors 122 is dynamically modified based on operating system (OS) core parking status which is handled by the OS kernel.
- OS operating system
- the OS kernel may “park” a portion of the core processors 122 by putting them into a low-power idle state.
- 6 of 8 core processors may be “parked” and the other portion (for example, 2 of 8) of the core processors may be used.
- interrupts from the network interface controllers are only sent to the un-parked cores and the parked cores remain at low-power idle states resulting in a reduction in energy consumption.
- the network interface controller is modified to run network interrupt and packet processing also on the selected three cores. This results in an increase in the lower-power idle state residency for the parked cores.
- a 10 Gigabit network interface controller has multiple Receive Side Scaling Receive (RSS Rx) queues, each affinitized to a specific core.
- the network interface controller gets the configuration of OS core parking settings via the filter driver 210 and modifies the RSS indirection table 230 based on the OS core parking configuration.
- RSS Rx Receive Side Scaling Receive
- the filter driver 210 periodically requests OS parking status from the OS kernel 280 .
- the filter driver 210 requests the OS core parking status using an Application Program Interface (API) command provided by the OS kernel 280 to query parking status of each of the processor cores 122 .
- API Application Program Interface
- the filter driver 210 periodically requests OS_parking status based on the number of network packets that have been received, for example, after every about 1000 network packets have been received
- the filter driver 210 accesses the CPU 101 directly to obtain the current power state of each processor core 202 .
- the Intel® CoreTM i7 supports low power states at the core level for optimal power management.
- the core power states include C0, C1, C3 and C6.
- C0 is the normal operating state and C1, C3 and C6 are low power states, with different levels of reduced power consumption.
- C3 low power state all the clocks are stopped and the processor core maintains all of its architectural state except for the caches.
- the current power state of each processor core 202 is stored in one or more registers in the CPU 101 that are accessible by the filter driver 210 .
- the filter driver 210 periodically reads the registers storing the power state for the cores and infers whether the core is “parked” based on the distribution of the power state type read for the core over a time period. For example, if within a time period, the registers are read n times and a core is in low power state each time, the core is “parked”. If during the time period, the core is in a high power state n times, the core is not “parked”. If during the time period, the power state of the core differs, with the number of times that the power state is low power state being greater than the number of times that power state is high power state, the core is inferred to be “parked”.
- the filter driver 210 determines if the parking status of any of processor cores 122 has changed. If not, processing continues with block 300 to continue to periodically request parking status of processor cores 122 .
- the filter driver 210 uses an OID_GEN_RECEIVE_SCALE_PARAMETERS Object Identifier (OID) to modify the RSS parameters of the NIC based on the parking status of the processor cores.
- OID_GEN_RECEIVE_SCALE_PARAMETERS OID includes an NDIS_RECEIVE_SCALE_PARAMETERS structure that specifies the RSS parameters.
- the structure includes a header with a type that specifies that the object includes RSS Parameters, a flag indicating whether the indirection table and associated members have changed, and the size of the indirection table.
- the new data to be stored in the indirection table 230 based on the core parking status are appended after the other structure members. Processing continues with block 304 .
- the miniport driver 270 stores the received new data for the indirection table 230 in the indirection table 230 .
- the retrieved core parking status indicates that only processor core 0 and processor core 4 are un-parked
- RSS Rx receive
- a round-robin core assignment can be performed resulting in the new data (contents of the indirection table) as shown in Table 2 below stored in indirection table 230 .
- Processor core 0 is assigned to receive queues 0, 2, 4, and 6, and processor core 4 is assigned to receive queues 1, 3, 5, and 7.
- Table 2 For example, the data to be stored in Table 2 can be represented as a data structure IndTable as shown below:
- the IndTable structure is appended to the OID which is received by the miniport driver 270 allowing the miniport driver 270 to update the data stored in the indirection table 230 .
- FIG. 4 is a block diagram illustrating another embodiment of the network interface controller 108 and memory 110 shown in FIG. 1 .
- the monitoring of core parking status is performed by the OS kernel 280 .
- the request to update the indirection table 230 is sent directly from the OS kernel 280 to the miniport driver 270 .
- the OS kernel 280 Similar to the embodiment discussed for the filter driver 210 in conjunction with FIG. 2 , the OS kernel 280 generates an OID_GEN_RECEIVE_SCALE_PARAMETERS OID with the modified contents for the indirection table 230 as an input parameter as discussed in conjunction with the embodiment shown in FIG. 2 .
- This OID is sent directly to the device driver 270 which modifies the indirection table 230 accordingly based the received modified contents.
- an RSS alignment function is added to the OS core to adjust the RSS indirection table 230 .
- the monitoring of core parking status and modification of the contents of the indirection table 230 based on the monitored core parking status is not limited to the Windows® Operating System, the method may also be applied to other operating systems, for example, the Linux Operating System.
- Alternative embodiments of the invention also include machine-accessible media containing instructions for performing the operations of the invention. Such embodiments may also be referred to as program products.
- Such machine-accessible media may include, without limitation, computer readable storage media having instructions (computer readable program code) stored thereon such as floppy disks, hard disks, Compact Disk-Read Only Memories (CD-ROM)s, Read Only Memory (ROM), and Random Access Memory (RAM), and other tangible arrangements of particles manufactured or formed by a machine or device. Instructions may also be used in a distributed environment, and may be stored locally and/or remotely for access by single or multi-processor machines.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
A method and apparatus for managing core affinity for network packet processing is provided. Low-power idle state of a plurality of processing units in a system including the plurality of processing units is monitored. Network packet processing is dynamically reassigned to processing units that are in a non-low power idle state to increase the low-power idle state residency for processing units that are in a low-power idle state resulting in reduced energy consumption.
Description
- This application is a continuation of and claims priority to U.S. patent application Ser. No. 12/459,114 filed Jun. 26, 2009 and entitled, “METHOD APPARATUS FOR PERFORMING ENERGY-EFFICIENT NETWORK PACKET PROCESSING IN A MULTI PROCESSOR CORE SYSTEM”; this application is entirely incorporated by reference.
- This disclosure relates to and in particular to energy-efficiency in a multi-processor core system and in particular to energy-efficient network packet processing.
- Typically, a computer system having a plurality of processor cores handles a high workload by distributing the workload amongst all of the processor cores. However, as the workload decreases, each of the plurality of processor cores may be underutilized.
- In order to reduce power consumption by the plurality of processor cores when workload is low, an operating system may adjust the number of processor cores used based on the system utilization level. The unused processor cores are placed in a low-power idle state (“parked”) and can remain at the low-power idle state for long consecutive intervals. The operating system continues to distribute the workload amongst the processor cores that are not in the low-power idle state.
- Features of embodiments of the claimed subject matter will become apparent as the following detailed description proceeds, and upon reference to the drawings, in which like numerals depict like parts, and in which:
-
FIG. 1 is a block diagram of a system that includes an embodiment of a Network Interface Controller that supports Receive-Side Scaling; -
FIG. 2 is a block diagram illustrating an embodiment of the network interface controller and memory shown inFIG. 1 ; -
FIG. 3 is a flowgraph of an embodiment of a method to dynamically adjust core affinity settings according to the principles of the present invention; and -
FIG. 4 is a block diagram illustrating another embodiment of the network interface controller and memory shown inFIG. 1 . - Although the following Detailed Description will proceed with reference being made to illustrative embodiments of the claimed subject matter, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly, and be defined only as set forth in the accompanying claims.
- A computer system may include a network interface controller (adapter, card) that receives a network packet from the network and forwards the received network packet for processing to one of a plurality of processor cores. The workload that is distributed amongst the processor cores may include the processing of network packets received by the network interface controller.
- For example, in the computer system, the processing of network packets may be distributed amongst the processor cores such that the processing of the same traffic flow (for example, network packets having the same source address and destination address) is performed by the same processor core. When workloads are low, the operating system may use only a subset of the plurality of the processor cores and put the other processor cores in low-power idle state. However, if a received network packet to be processed for a particular traffic flow is assigned to a processor core (core affinity setting for the traffic flow) that is in a low-power idle state, the processor core is woken up from the low-power idle state. As a result, processor cores that are in a low-power idle state do not have the opportunity to stay in the low-power idle state for a long time.
- An embodiment of the present invention dynamically adjusts the core affinity settings for network packet processing based on whether the operating system has put any of the processor cores into a low-power idle state.
- An embodiment of the present invention will be described for a computer system having a network interface controller that supports Receive-Side Scaling (RSS) used by Microsoft's® Windows® Operating System (OS). However, the invention is not limited to RSS. In other embodiments, the network adapter may support Scalable Input/Output (I/O) used by the Linux operating system that includes a scheduler which has a power-saving mode feature or any other operating system that includes a power-saving mode.
-
FIG. 1 is a block diagram of asystem 100 that includes an embodiment of aNetwork Interface Controller 108 that supports Receive-Side Scaling. Thesystem 100 includes aprocessor 101, a Memory Controller Hub (MCH) 102 and an Input/Output (I/O) Controller Hub (ICH) 104. The MCH 102 includes amemory controller 106 that controls communication between theprocessor 101 andmemory 110. Theprocessor 101 and MCH 102 communicate over asystem bus 116. - The
processor 101 may be a multi-core processor such as Intel® Pentium D, Intel® Xeon® processor, or Intel® Core® Duo processor, Intel® Core™ i7 Processor or any other type of processor. In the embodiment shown, the system includes twomulti-core processors 101 each having at least two processor cores (“cores”) 122. In one embodiment, each multi-core processor includes fourcores 122. - The
memory 110 may be Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Synchronized Dynamic Random Access Memory (SDRAM), Double Data Rate 2 (DDR2) RAM or Rambus Dynamic Random Access Memory (RDRAM) or any other type of memory. - The ICH 104 may be coupled to the
MCH 102 using a high speed chip-to-chip interconnect 114 such as Direct Media Interface (DMI). DMI supports 2 Gigabit/second concurrent transfer rates via two unidirectional lanes. - The ICH 104 may include a storage Input/Output (I/O) controller for controlling communication with at least one
storage device 112 coupled to theICH 104. The storage device may be, for example, a disk drive, Digital Video Disk (DVD) drive, Compact Disk (CD) drive, Redundant Array of Independent Disks (RAID), tape drive or other storage device. The ICH 104 may communicate with thestorage device 112 over a storage protocol interconnect 118 using a serial storage protocol such as, Serial Attached Small Computer System Interface (SAS) or Serial Advanced Technology Attachment (SATA). - In another embodiment, the
network interface controller 108 may be included in an ICH 104 that does not include a storage I/O controller 120 or may be included on a separate network interface card that is inserted in a system card slot in thesystem 100. -
FIG. 2 is a block diagram illustrating an embodiment of thenetwork interface controller 108 andmemory 110 shown inFIG. 1 . Thenetwork interface controller 108 includes ahash function unit 220, an indirection table 230 and a plurality of hardware receivequeues 202. Thememory 110 includes anoperating system kernel 280, afilter driver 210 and a network device driver (miniport driver) 270. In an embodiment,hash function unit 220 and indirection table 230 are included in the network interface controller (“NIC”) 108. In another embodiment, some of these components or some elements of these components may be located outside thenetwork interface controller 108. - In the embodiment shown, the
miniport driver 270 andfilter driver 210 are components of a Microsoft® Windows® operating system model (WDM). The WDM includes device function drivers which may be class drivers or miniport drivers. A miniport driver supports a particular type of device, for example, a specificnetwork interface controller 108. Afilter driver 210 is an optional driver that adds value to or modifies the behavior of the function driver (miniport driver) 270. - The Network Driver Interface Specification (NDIS) is a library of functions accessed via an application programming interface (API) for
network interface controllers 110. The NDIS acts as an interface between layer 2 (link layer) and layer 3 (network layer) of the 7 layer Open Systems Interconnect (OSI). The library functions include Object Identifiers (OIDs). - The
network interface controller 108 may use a hashing function in thehash function unit 220 to compute a hash value over a hash type (for example, one or more fields in the headers) within the received network packet. A number of least significant bits of the hash value may be used to index an entry in an indirection table 230 that identifies a processor core 122 (FIG. 1 ) to handle processing of the received data packet and one of a plurality of receivequeues 202 to store the received data packet. Thenetwork interface controller 108 can interrupt the identifiedprocessor core 122. - In an embodiment, as each network packet is received by the
network interface controller 108, the “flow” associated with the network packet is determined. The “flow” of a Transport Control Protocol (TCP) packet may be determined based on the value of fields in the TCP header and the Internet Protocol (IP) header included in the packet. For example, a flow identifier for the “flow” can be dependent on a combination of the IP source address and IP destination address included in the IP header and the source port address and destination port address included in the TCP header in the received network packet. - The plurality of hardware receive
queues 202 are provided to store received network packets. In order to ensure in-order packet delivery for a particular flow, each of he hardware receivequeues 202 may be assigned to a different flow and also to one of the plurality ofprocessor cores 122. Thus, each of the plurality of hardware receivequeues 202 is associated with one of the plurality of acore processors 122 via the indirection table 230. - In the embodiment shown, the
network interface controller 108 has eight receivequeues 202. However, the number of receivequeues 202 is not limited to eight. In other embodiments there may be more or less receivequeues 202. Received network packets are stored in one of the plurality of receivesqueues 202. Packet processing of each of the receive queues may be affinitized to aspecific processor core 122. In an embodiment of the present invention, the core affinity settings for packet processing is dynamically adjusted based on the number ofprocessor cores 122 that are in a power-saving idle state (‘parked’). - Table 1 below illustrates an example of an indirection table 230 with an initial assignment of receive
queues 202 toprocessor cores 122 in a system having eight cores and eight receive queues in order to distribute receive packet processing amongst all of theprocessor cores 122. -
TABLE 1 RECEIVE QUEUE CORE 0 0 1 1 2 2 3 3 4 4 5 6 6 7 7 8 -
FIG. 3 is a flowgraph of an embodiment to dynamically adjust the core affinity settings according to the principles of the present invention. - The distribution of receive
queues 202 tocore processors 122 is dynamically modified based on operating system (OS) core parking status which is handled by the OS kernel. For example, when workload is low, the OS kernel may “park” a portion of thecore processors 122 by putting them into a low-power idle state. For example, in an embodiment with eight core processors, 6 of 8 core processors may be “parked” and the other portion (for example, 2 of 8) of the core processors may be used. Thus, interrupts from the network interface controllers are only sent to the un-parked cores and the parked cores remain at low-power idle states resulting in a reduction in energy consumption. - For example, in an embodiment, if Windows® 7 server core parking feature selects to use three cores and parks the remaining cores when the workloads are low, the network interface controller is modified to run network interrupt and packet processing also on the selected three cores. This results in an increase in the lower-power idle state residency for the parked cores.
- In an embodiment, a 10 Gigabit network interface controller has multiple Receive Side Scaling Receive (RSS Rx) queues, each affinitized to a specific core. The network interface controller gets the configuration of OS core parking settings via the
filter driver 210 and modifies the RSS indirection table 230 based on the OS core parking configuration. - At
block 300, thefilter driver 210 periodically requests OS parking status from theOS kernel 280. For example, in an embodiment, thefilter driver 210 requests the OS core parking status using an Application Program Interface (API) command provided by theOS kernel 280 to query parking status of each of theprocessor cores 122. In an embodiment, thefilter driver 210 periodically requests OS_parking status based on the number of network packets that have been received, for example, after every about 1000 network packets have been received - In an alternative embodiment, the
filter driver 210 accesses theCPU 101 directly to obtain the current power state of eachprocessor core 202. For example, the Intel® Core™ i7 supports low power states at the core level for optimal power management. The core power states include C0, C1, C3 and C6. C0 is the normal operating state and C1, C3 and C6 are low power states, with different levels of reduced power consumption. For example, in the C3 low power state, all the clocks are stopped and the processor core maintains all of its architectural state except for the caches. - The current power state of each
processor core 202 is stored in one or more registers in theCPU 101 that are accessible by thefilter driver 210. In order to determine whether a particular core is “parked”, thefilter driver 210 periodically reads the registers storing the power state for the cores and infers whether the core is “parked” based on the distribution of the power state type read for the core over a time period. For example, if within a time period, the registers are read n times and a core is in low power state each time, the core is “parked”. If during the time period, the core is in a high power state n times, the core is not “parked”. If during the time period, the power state of the core differs, with the number of times that the power state is low power state being greater than the number of times that power state is high power state, the core is inferred to be “parked”. - Processing continues with
block 302. - At
block 302, having received the parking status of each of theprocessor cores 122, thefilter driver 210 determines if the parking status of any ofprocessor cores 122 has changed. If not, processing continues withblock 300 to continue to periodically request parking status ofprocessor cores 122. - If so, the
filter driver 210 generates new data to be stored in the indirection table 230 in theNIC 108 based on the parking status. Thefilter driver 210 uses an OID_GEN_RECEIVE_SCALE_PARAMETERS Object Identifier (OID) to modify the RSS parameters of the NIC based on the parking status of the processor cores. The OID_GEN_RECEIVE_SCALE_PARAMETERS OID includes an NDIS_RECEIVE_SCALE_PARAMETERS structure that specifies the RSS parameters. - In an embodiment, the structure includes a header with a type that specifies that the object includes RSS Parameters, a flag indicating whether the indirection table and associated members have changed, and the size of the indirection table. The new data to be stored in the indirection table 230 based on the core parking status are appended after the other structure members. Processing continues with
block 304. - At
block 304, upon detecting receipt of an OID_GEN_RECEIVE_SCALE_PARAMETERS OID, theminiport driver 270 stores the received new data for the indirection table 230 in the indirection table 230. For example, if the retrieved core parking status indicates that only processor core 0 and processor core 4 are un-parked, in an embodiment in which there are eight receive (RSS Rx)queues 202, a round-robin core assignment can be performed resulting in the new data (contents of the indirection table) as shown in Table 2 below stored in indirection table 230. Processor core 0 is assigned to receive queues 0, 2, 4, and 6, and processor core 4 is assigned to receive queues 1, 3, 5, and 7. -
TABLE 2 RECEIVE QUEUE CORE 0 0 1 4 2 0 3 4 4 0 5 4 6 0 7 4 - For example, the data to be stored in Table 2 can be represented as a data structure IndTable as shown below:
- IndTable[0]=0
- IndTable[1]=4
- IndTable[2]=0
- IndTable[3]=4
- IndTable[4]=0
- IndTable[5]=4
- IndTable[6]=0
- IndTable[7]=4
- The IndTable structure is appended to the OID which is received by the
miniport driver 270 allowing theminiport driver 270 to update the data stored in the indirection table 230. - An embodiment has been described for a system that includes a
filter driver 210. However, the monitoring of the core parking status and request for modification of the indirection table 230 is not limited to thefilter driver 210. In another embodiment these functions may be included in another part of the network driver stack. -
FIG. 4 is a block diagram illustrating another embodiment of thenetwork interface controller 108 andmemory 110 shown inFIG. 1 . - As shown in
FIG. 4 , instead of adding a filter driver 210 (FIG. 2 ) to the network driver stack, the monitoring of core parking status is performed by theOS kernel 280. The request to update the indirection table 230 is sent directly from theOS kernel 280 to theminiport driver 270. Similar to the embodiment discussed for thefilter driver 210 in conjunction withFIG. 2 , theOS kernel 280 generates an OID_GEN_RECEIVE_SCALE_PARAMETERS OID with the modified contents for the indirection table 230 as an input parameter as discussed in conjunction with the embodiment shown inFIG. 2 . This OID is sent directly to thedevice driver 270 which modifies the indirection table 230 accordingly based the received modified contents. - In an embodiment, an RSS alignment function is added to the OS core to adjust the RSS indirection table 230.
- An embodiment has been described for the Windows® Operating System. The monitoring of core parking status and modification of the contents of the indirection table 230 based on the monitored core parking status is not limited to the Windows® Operating System, the method may also be applied to other operating systems, for example, the Linux Operating System.
- Alternative embodiments of the invention also include machine-accessible media containing instructions for performing the operations of the invention. Such embodiments may also be referred to as program products. Such machine-accessible media may include, without limitation, computer readable storage media having instructions (computer readable program code) stored thereon such as floppy disks, hard disks, Compact Disk-Read Only Memories (CD-ROM)s, Read Only Memory (ROM), and Random Access Memory (RAM), and other tangible arrangements of particles manufactured or formed by a machine or device. Instructions may also be used in a distributed environment, and may be stored locally and/or remotely for access by single or multi-processor machines.
- While embodiments of the invention have been particularly shown and described with references to embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of embodiments of the invention encompassed by the appended claims.
Claims (21)
1. A method, comprising:
determining at least one respective low-power state associated with at least one of multiple processor cores; an
based on the determined at least one lower power state associated with the at least one of multiple processor cores, causing a change to data that maps network packet flows to respective multiple processor cores based on respective hashes of network packet header data of respective network packets belonging to the network packet flows, wherein the change to the data remaps network packet flows from the at least one of multiple processor cores in a low-power state to at least one processor core not in a low-power state.
2. The method of claim 1 ,
wherein the low-power state comprises one of a subset of power states available to a processor core.
3. The method of claim 2 , wherein the low-power state comprises C1, C3, or C6.
4. The method of claim 1 , wherein the hashes of network packet header data comprise at least one hash of data in a transport header and in an internet header of a respective network packet.
5. The method of claim 1 , wherein the data comprises data stored by a network interface controller.
6. The method of claim 5 , wherein the causing the change to data comprises sending change data to the network interface controller.
7. The method of claim 1 , wherein the data comprises an indirection table indexed by the hashes to, at least in part, determine a receiving processor core.
8. The method of claim 1 , wherein the data that maps network packet flows to respective multiple processor cores comprises data that maps the network packet flows to respective receive queues associated with the respective multiple processor cores.
9. An article including a machine-accessible medium having associated information, wherein the information when accessed, results in a machine to:
determine at least one respective low-power state associated with at least one of multiple processor cores; and
based on the at least one respective low-power state associated with the at least one of multiple processor cores, cause a change to data that maps network packet flows to respective multiple processor cores based on respective hashes of network packet header data of respective network packets belonging to the network packet flows, wherein the change to the data remaps network packet flows from the at least one processor cores in a low-power state to at least one processor core not in a low-power state.
10. The article of claim 9 ,
wherein the low-power state comprises one of a subset of power states available to a processor core.
11. The article of claim 10 , wherein the low-power state comprises C1, C3, or C6.
12. The article of claim 9 , wherein the hashes of network packet header data comprise at least one hash of data in a transport header and in an internet header of a respective network packet.
13. The article of claim 9 , wherein the data comprises data stored by a network interface controller.
14. The article of claim 13 , wherein the information when accessed, results in a machine to send data to the network interface controller to change the data.
15. The article of claim 9 , wherein the data comprises an indirection table indexed by the hashes to, at least in part, determine a receiving processor core.
16. The article of claim 9 , wherein the data that maps network packet flows to respective multiple processor cores comprises data that maps the network packet flows to respective receive queues associated with the respective multiple processor cores.
17. A system, comprising:
multiple processor cores; and a
a network interface controller;
wherein the system comprises logic to:
determine at least one respective low-power state associated with at least one of multiple processor cores;
based on the at least one respective low-power state associated with at least one of multiple processor cores, cause a change to data that maps network packet flows to respective multiple processor cores based on respective hashes of network packet header data of respective network packets belonging to the network packet flows, wherein the change to the data remaps network packet flows from the at least one processor cores in a low-power state to at least one processor core not in a low-power state.
18. The system of claim 17 ,
wherein the low-power state comprises one of a subset of power states available to a processor core.
19. The system of claim 17 , wherein the hashes of network packet header data comprise at least one hash of data in a transport header and in an internet header of a respective network packets.
20. The system of claim 17 , wherein the logic to cause the change to data comprises logic to send change data to the network interface controller.
21. The article of claim 17 , wherein the data that maps network packet flows to respective multiple processor cores comprises data that maps the network packet flows to respective receive queues associated with the respective multiple processor cores.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/546,276 US20120278637A1 (en) | 2009-06-26 | 2012-07-11 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/459,114 US8239699B2 (en) | 2009-06-26 | 2009-06-26 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
| US13/546,276 US20120278637A1 (en) | 2009-06-26 | 2012-07-11 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/459,114 Continuation US8239699B2 (en) | 2009-06-26 | 2009-06-26 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20120278637A1 true US20120278637A1 (en) | 2012-11-01 |
Family
ID=43382083
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/459,114 Active 2030-08-06 US8239699B2 (en) | 2009-06-26 | 2009-06-26 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
| US13/546,276 Abandoned US20120278637A1 (en) | 2009-06-26 | 2012-07-11 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/459,114 Active 2030-08-06 US8239699B2 (en) | 2009-06-26 | 2009-06-26 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US8239699B2 (en) |
| EP (1) | EP2446340A4 (en) |
| KR (1) | KR101444990B1 (en) |
| CN (2) | CN105446455B (en) |
| WO (1) | WO2010151824A2 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140281380A1 (en) * | 2013-03-12 | 2014-09-18 | Inder M. Sodhi | Execution context swap between heterogenous functional hardware units |
| KR20190138365A (en) * | 2018-06-05 | 2019-12-13 | 삼성전자주식회사 | Multi-processor system and method of operating the same |
| EP3465382A4 (en) * | 2016-06-07 | 2020-01-15 | Intel Corporation | POWER SENSITIVE PACKET DISTRIBUTION |
| US20210105221A1 (en) * | 2016-12-06 | 2021-04-08 | Microsoft Technology Licensing, Llc | Network processing resource management in computing systems |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8064197B2 (en) * | 2009-05-22 | 2011-11-22 | Advanced Micro Devices, Inc. | Heat management using power management information |
| US8239699B2 (en) | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
| US9557795B1 (en) * | 2009-09-23 | 2017-01-31 | Xilinx, Inc. | Multiprocessor system with performance control based on input and output data rates |
| US8543857B2 (en) * | 2009-09-26 | 2013-09-24 | Intel Corporation | Method and apparatus for low power operation of multi-core processors |
| EP2385440A1 (en) * | 2010-05-07 | 2011-11-09 | ST-Ericsson SA | Method and system for controlling the operation of an electronic device |
| US8637212B2 (en) | 2010-12-22 | 2014-01-28 | Via Technologies, Inc. | Reticle set modification to produce multi-core dies |
| US8972707B2 (en) | 2010-12-22 | 2015-03-03 | Via Technologies, Inc. | Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin |
| US8782451B2 (en) | 2010-12-22 | 2014-07-15 | Via Technologies, Inc. | Power state synchronization in a multi-core processor |
| US9460038B2 (en) * | 2010-12-22 | 2016-10-04 | Via Technologies, Inc. | Multi-core microprocessor internal bypass bus |
| US8631256B2 (en) | 2010-12-22 | 2014-01-14 | Via Technologies, Inc. | Distributed management of a shared power source to a multi-core microprocessor |
| US8621479B2 (en) * | 2012-01-05 | 2013-12-31 | The Boeing Company | System and method for selecting task allocation method based on load balancing and core affinity metrics |
| US9509565B2 (en) * | 2013-03-29 | 2016-11-29 | Telefonaktiebolaget L M Ericsson (Publ) | Energy efficiency in software defined networks |
| CN104424156A (en) * | 2013-09-09 | 2015-03-18 | 中兴通讯股份有限公司 | Core processing method and device of processor and terminal |
| US9323544B2 (en) * | 2013-10-09 | 2016-04-26 | International Business Machines Corporation | Dynamic reconfiguration of queue pairs |
| US10082858B2 (en) * | 2014-06-23 | 2018-09-25 | Mellanox Technologies, Ltd. | Peripheral device assistance in reducing CPU power consumption |
| CN104158764B (en) * | 2014-08-12 | 2018-02-06 | 新华三技术有限公司 | Message processing method and device |
| US10324513B2 (en) | 2014-08-31 | 2019-06-18 | Mellanox Technologies, Ltd. | Control of peripheral device data exchange based on CPU power state |
| CN107231396B (en) * | 2016-03-25 | 2021-05-28 | 阿里巴巴集团控股有限公司 | Data operation method and device, transfer equipment and client |
| US10423511B2 (en) * | 2016-11-29 | 2019-09-24 | International Business Machines Corporation | Packet flow tracing in a parallel processor complex |
| US10639550B2 (en) * | 2017-04-18 | 2020-05-05 | Bullguard Ltd | System and method for dynamically allocating resources to a game process |
| CN109039929A (en) * | 2018-07-06 | 2018-12-18 | 华为技术有限公司 | Business scheduling method and device |
| US11431565B2 (en) * | 2018-10-15 | 2022-08-30 | Intel Corporation | Dynamic traffic-aware interface queue switching among processor cores |
| US11086379B2 (en) * | 2019-10-28 | 2021-08-10 | EMC IP Holding Company LLC | Efficient storage system battery backup usage through dynamic implementation of power conservation actions |
| US11181967B2 (en) | 2020-02-07 | 2021-11-23 | Marvell Asia Pte Ltd | Power management and transitioning cores within a multicore system from idle mode to operational mode over a period of time |
| US11994925B2 (en) * | 2020-04-10 | 2024-05-28 | Marvell Asia Pte Ltd | Power management and staggering transitioning from idle mode to operational mode |
| CN111897648B (en) * | 2020-06-04 | 2022-06-14 | 华南理工大学 | Dark core perception many-core system processor resource allocation method under temperature constraint |
| CN118939405A (en) * | 2023-05-09 | 2024-11-12 | 腾讯科技(深圳)有限公司 | Processor scheduling method, device, equipment, storage medium and program product |
Citations (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060182031A1 (en) * | 2005-02-17 | 2006-08-17 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
| US20060195698A1 (en) * | 2005-02-25 | 2006-08-31 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
| US20070005742A1 (en) * | 2005-06-30 | 2007-01-04 | Avigdor Eldar | Efficient network communications via directed processor interrupts |
| US20070070904A1 (en) * | 2005-09-26 | 2007-03-29 | King Steven R | Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme |
| US7257572B2 (en) * | 2004-04-30 | 2007-08-14 | Intel Corporation | Function for directing packets |
| US20080005352A1 (en) * | 2006-06-28 | 2008-01-03 | Goglin Stephen D | Flexible and extensible receive side scaling |
| US20080077792A1 (en) * | 2006-08-30 | 2008-03-27 | Mann Eric K | Bidirectional receive side scaling |
| US20080086575A1 (en) * | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
| US20090006521A1 (en) * | 2007-06-29 | 2009-01-01 | Veal Bryan E | Adaptive receive side scaling |
| US20090235260A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Branover | Enhanced Control of CPU Parking and Thread Rescheduling for Maximizing the Benefits of Low-Power State |
| US20100064286A1 (en) * | 2008-09-10 | 2010-03-11 | International Business Machines Corporation | Data affinity based scheme for mapping connections to cpus in i/o adapter |
| US7715428B2 (en) * | 2007-01-31 | 2010-05-11 | International Business Machines Corporation | Multicore communication processing |
| US7739527B2 (en) * | 2004-08-11 | 2010-06-15 | Intel Corporation | System and method to enable processor management policy in a multi-processor environment |
| US20100153590A1 (en) * | 2007-09-17 | 2010-06-17 | Chih-Fan Hsin | Dma (direct memory access) coalescing |
| US20100284404A1 (en) * | 2009-05-05 | 2010-11-11 | Sandhya Gopinath | Systems and methods for packet steering in a multi-core architecture |
| US20100325263A1 (en) * | 2009-06-22 | 2010-12-23 | Murali Raja | Systems and methods for statistics exchange between cores for load balancing |
| US8010822B2 (en) * | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6986066B2 (en) | 2001-01-05 | 2006-01-10 | International Business Machines Corporation | Computer system having low energy consumption |
| US20030055969A1 (en) * | 2001-09-17 | 2003-03-20 | International Business Machines Corporation | System and method for performing power management on a distributed system |
| US6985952B2 (en) | 2001-10-31 | 2006-01-10 | International Business Machines Corporation | Energy-induced process migration |
| US6804632B2 (en) | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
| US7564810B2 (en) * | 2002-05-08 | 2009-07-21 | Microsoft Corporation | Method and system for managing power consumption of a network interface module in a wireless computing device |
| US7080267B2 (en) * | 2002-08-01 | 2006-07-18 | Texas Instruments Incorporated | Methodology for managing power consumption in an application |
| EP1471326B1 (en) | 2003-04-26 | 2010-04-07 | Rheinmetall Waffe Munition GmbH | Electric switch for a projectile fuze, which switch is activated by gas pressure |
| US7490256B2 (en) * | 2006-04-04 | 2009-02-10 | Microsoft Corporation | Identifying a target processor idle state |
| US7647509B2 (en) * | 2006-05-12 | 2010-01-12 | Intel Corporation | Method and apparatus for managing power in a processing system with multiple partitions |
| US8239699B2 (en) | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
-
2009
- 2009-06-26 US US12/459,114 patent/US8239699B2/en active Active
-
2010
- 2010-06-25 CN CN201510781891.3A patent/CN105446455B/en active Active
- 2010-06-25 EP EP10792757.6A patent/EP2446340A4/en not_active Withdrawn
- 2010-06-25 CN CN201080028104.3A patent/CN102460342B/en not_active Expired - Fee Related
- 2010-06-25 KR KR1020117031560A patent/KR101444990B1/en active Active
- 2010-06-25 WO PCT/US2010/040083 patent/WO2010151824A2/en not_active Ceased
-
2012
- 2012-07-11 US US13/546,276 patent/US20120278637A1/en not_active Abandoned
Patent Citations (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7257572B2 (en) * | 2004-04-30 | 2007-08-14 | Intel Corporation | Function for directing packets |
| US7739527B2 (en) * | 2004-08-11 | 2010-06-15 | Intel Corporation | System and method to enable processor management policy in a multi-processor environment |
| US20060182031A1 (en) * | 2005-02-17 | 2006-08-17 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
| US7548513B2 (en) * | 2005-02-17 | 2009-06-16 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
| US20060195698A1 (en) * | 2005-02-25 | 2006-08-31 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
| US20070005742A1 (en) * | 2005-06-30 | 2007-01-04 | Avigdor Eldar | Efficient network communications via directed processor interrupts |
| US20070070904A1 (en) * | 2005-09-26 | 2007-03-29 | King Steven R | Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme |
| US20080005352A1 (en) * | 2006-06-28 | 2008-01-03 | Goglin Stephen D | Flexible and extensible receive side scaling |
| US20080077792A1 (en) * | 2006-08-30 | 2008-03-27 | Mann Eric K | Bidirectional receive side scaling |
| US20080086575A1 (en) * | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
| US7715428B2 (en) * | 2007-01-31 | 2010-05-11 | International Business Machines Corporation | Multicore communication processing |
| US20090006521A1 (en) * | 2007-06-29 | 2009-01-01 | Veal Bryan E | Adaptive receive side scaling |
| US20100153590A1 (en) * | 2007-09-17 | 2010-06-17 | Chih-Fan Hsin | Dma (direct memory access) coalescing |
| US20090235260A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Branover | Enhanced Control of CPU Parking and Thread Rescheduling for Maximizing the Benefits of Low-Power State |
| US8010822B2 (en) * | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
| US20100064286A1 (en) * | 2008-09-10 | 2010-03-11 | International Business Machines Corporation | Data affinity based scheme for mapping connections to cpus in i/o adapter |
| US20100284404A1 (en) * | 2009-05-05 | 2010-11-11 | Sandhya Gopinath | Systems and methods for packet steering in a multi-core architecture |
| US20100325263A1 (en) * | 2009-06-22 | 2010-12-23 | Murali Raja | Systems and methods for statistics exchange between cores for load balancing |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140281380A1 (en) * | 2013-03-12 | 2014-09-18 | Inder M. Sodhi | Execution context swap between heterogenous functional hardware units |
| US9250901B2 (en) * | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
| EP3465382A4 (en) * | 2016-06-07 | 2020-01-15 | Intel Corporation | POWER SENSITIVE PACKET DISTRIBUTION |
| US20210105221A1 (en) * | 2016-12-06 | 2021-04-08 | Microsoft Technology Licensing, Llc | Network processing resource management in computing systems |
| US12015563B2 (en) * | 2016-12-06 | 2024-06-18 | Microsoft Technology Licensing, Llc | Management of resource affinities in computing systems having multiple cores |
| KR20190138365A (en) * | 2018-06-05 | 2019-12-13 | 삼성전자주식회사 | Multi-processor system and method of operating the same |
| US10956210B2 (en) * | 2018-06-05 | 2021-03-23 | Samsung Electronics Co., Ltd. | Multi-processor system, multi-core processing device, and method of operating the same |
| KR102563648B1 (en) * | 2018-06-05 | 2023-08-04 | 삼성전자주식회사 | Multi-processor system and method of operating the same |
| US12020065B2 (en) | 2018-06-05 | 2024-06-25 | Samsung Electronics Co., Ltd. | Hierarchical processor selection |
Also Published As
| Publication number | Publication date |
|---|---|
| CN102460342B (en) | 2016-01-20 |
| WO2010151824A2 (en) | 2010-12-29 |
| KR101444990B1 (en) | 2014-10-07 |
| US20100332869A1 (en) | 2010-12-30 |
| KR20140014407A (en) | 2014-02-06 |
| WO2010151824A3 (en) | 2011-04-07 |
| CN105446455A (en) | 2016-03-30 |
| US8239699B2 (en) | 2012-08-07 |
| EP2446340A4 (en) | 2017-05-31 |
| EP2446340A2 (en) | 2012-05-02 |
| CN102460342A (en) | 2012-05-16 |
| CN105446455B (en) | 2019-04-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8239699B2 (en) | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system | |
| EP3242185B1 (en) | Server rack power management | |
| CN103460199B (en) | Self-adaptation based on class of service interrupts adjustment | |
| US8924534B2 (en) | Resource optimization and monitoring in virtualized infrastructure | |
| US8171321B2 (en) | Method and apparatus for cost and power efficient, scalable operating system independent services | |
| JP6290462B2 (en) | Coordinated admission control for network accessible block storage | |
| US9715397B2 (en) | Methods and apparatuses for controlling thread contention | |
| US7830882B2 (en) | Switch scaling for virtualized network interface controllers | |
| JP7383631B2 (en) | Protocol-level control for system-on-chip (SoC) agent reset and power management | |
| US10990407B2 (en) | Dynamic interrupt reconfiguration for effective power management | |
| CN115210693A (en) | Memory transactions with predictable latency | |
| US20090132840A1 (en) | Cross-layer power management in a multi-layer system | |
| US20190253357A1 (en) | Load balancing based on packet processing loads | |
| US9158713B1 (en) | Packet processing with dynamic load balancing | |
| CN104821887A (en) | Device and Method for Packet Processing with Memories Having Different Latencies | |
| GB2460735A (en) | Bus Fabric for Embedded System Comprising Peer-to-Peer Communication Matrix | |
| US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
| US20240330235A1 (en) | Request allocation method for virtual channel, and related apparatus | |
| US20150253837A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Power Savings in Arrays of Multiple RISC Cores | |
| US20250004812A1 (en) | Disaggregated memory management for virtual machines | |
| CN101661406A (en) | Processing unit dispatching device and method | |
| US20230153121A1 (en) | Accelerator usage prediction for improved accelerator readiness | |
| US12464452B2 (en) | Adaptive load based power saving in communication network | |
| CN120687327A (en) | Graphics processor monitoring method, device, baseboard management controller and medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |