Adaptive Thread Placement for Multi-Socket Contention

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current operating systems and runtime systems struggle with managing parallel workloads that have variable CPU demands and frequent synchronization between threads, leading to performance issues when multiple applications share resources on the same machine, especially in multi-socket environments.

Innovation Solution

Implementing an adaptive contention-aware thread scheduler that dynamically adjusts thread placements based on performance counter data, using profile information to predict and mitigate resource contention by moving threads to optimize shared resource usage across multiple sockets.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple applications are run on the same machine to improve resource utilization, then productivity increases, but interference between applications occurs leading to performance degradation

Engineering Contradiction:
Improveresource utilizationVSAvoidperformance stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system segments the machine's hardware contexts into different groups and dynamically assigns applications to specific segments based on their resource demands and compatibility. This segmentation reduces interference between applications while maintaining high overall resource utilization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The thread placement is made dynamic rather than static. The system continuously monitors application behavior and adjusts thread placement in real-time based on changing resource demands and contention patterns, allowing the system to adapt to varying workload conditions.

Inventive Principle:
Principle #15Dynamics

2Reliability

If threads are manually pinned to different cores to avoid interference, then performance stability improves, but device complexity increases

Engineering Contradiction:
Improveperformance stabilityVSAvoidscheduling complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system implements self-service through automated monitoring and decision-making. Performance counters automatically track resource usage, and the scheduler autonomously makes placement decisions based on this data, eliminating the need for manual configuration while maintaining performance stability.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system uses feedback from performance counters to continuously monitor resource contention and adjust thread placement accordingly. This closed-loop control automatically optimizes performance without increasing operational complexity for users.

Inventive Principle:
Principle #23Feedback

3Reliability

If over-provisioning is used to avoid interference, then performance stability improves, but productivity decreases

Engineering Contradiction:
Improveperformance stabilityVSAvoidresource utilization
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system changes the parameter of thread placement from static to dynamic, allowing the same hardware resources to be efficiently shared between applications at different times. This enables high resource utilization while maintaining performance stability through adaptive management rather than over-provisioning.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10133602B2Adaptive contention-aware thread placement for parallel runtime systems
Publication Date: 2018.11.20 ORACLE INT CORP
  • US10133602B2 patent drawing
  • US10133602B2 patent drawing
  • US10133602B2 patent drawing

AI summary

An adaptive contention-aware thread scheduler may place software threads for pairs of applications on the same socket of a multi-socket machine for execution in parallel. Initial placements may be based on profile data that characterizes the machine and its behavior when multiple applications execute on the same socket. The profile data may be collected during execution of other applications. It may identify performance counters within the cores of the processor sockets whose values are suitable for predicting whether the performance of a pair of applications will suffer when executed together on the same socket (e.g., values indicative of their demands for particular shared resources). During execution, the scheduler may examine the performance counters (or performance metrics derived therefrom) and determine different placement decisions (e.g., placing an application with high demand for resources of one type together with an application with low demand for those resources).