Flow Tracker RSS Indirection for Core Load Balancing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computer systems with multiple processing cores, existing data transfer methods like receive side scaling (RSS) often direct data units to cores that do not support the required tasks, leading to performance degradation due to load imbalance and inefficient task scheduling.

Innovation Solution

Implementing a system where the operating system dynamically re-provisions tasks across cores and uses a network device with a flow tracker that combines flow tables with RSS indirection tables, employing techniques like set associativity and least recently used policies to efficiently direct data units to cores supporting the tasks, thereby optimizing data flow and core utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If flow-spreading or mapping techniques such as receive side scaling (RSS) are used to direct data units, then data transfer speed is improved, but the data units may be directed to cores that do not support the required tasks, degrading system performance

Engineering Contradiction:
Improvedata transfer speedVSAvoidtask support reliability
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The patent implements a feedback mechanism where the operating system monitors task support status of processing cores and dynamically adjusts data unit routing decisions. The flow tracker receives feedback about which cores currently support which tasks and uses this information to modify RSS mappings, ensuring data units are directed to cores that actually support the required tasks rather than relying solely on static flow spreading rules

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent makes the data unit routing dynamic by allowing the operating system to re-provision tasks across cores and dynamically update the flow tracker's routing decisions. Instead of using fixed RSS mappings, the system continuously adapts routing based on current task distribution and core capabilities, enabling flexible response to changing system state

Inventive Principle:
Principle #15Dynamics

2Productivity

If the operating system dynamically re-provisions tasks across cores to balance load, then load balance is improved, but the complexity of task scheduling and data unit directing increases

Engineering Contradiction:
Improveload balanceVSAvoidscheduling complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces a flow tracker as an intermediary component that mediates between the operating system's task scheduling decisions and the network device's data unit routing. The flow tracker maintains a mapping between data unit flows and supported cores, translating OS scheduling actions into appropriate routing decisions without requiring direct complex interactions between the OS and network hardware

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements preliminary action by having the flow tracker pre-establish and maintain mappings between data unit flows and supported cores before data units arrive. When data units need to be routed, the flow tracker can quickly reference pre-computed mappings rather than performing complex real-time analysis, reducing scheduling complexity during data transfer

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8626955B2Directing packets to a processor unit
Publication Date: 2014.01.07 INTEL CORP
  • US8626955B2 patent drawing
  • US8626955B2 patent drawing
  • US8626955B2 patent drawing

AI summary

A computer system may comprise a plurality of cores that may process the tasks determined by the operating system. A network device may direct a first set of packets to a first core using a flow-spreading technique such as receive side scaling (RSS). However, the operating system may re-provision a task from the first core to a second core to balance the load, for example, on the computer system. The operating system may determine an identifier of the second core using a new data field in the socket calls to track the identifier of the second core. The operating system may provide the identifier of the second core to a network device. The network device may then direct a second set of packets to the second core using the identifier of the second core.