Thread Execution Visualization for Concurrency Bottlenecks

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face challenges in optimizing parallel performance of concurrent applications on multiple core systems due to complex thread scheduling and migration issues, which are not effectively addressed by current tools and frameworks adapted for sequential applications.

Innovation Solution

An analysis and visualization method that processes information on thread execution across processor cores over time, providing a graphical display to identify significant thread migrations and affinity bugs, allowing developers to modify code to reduce performance degradation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple processor cores are used to execute concurrent threads, then processor throughput is improved, but thread scheduling complexity and performance optimization difficulty increase

Engineering Contradiction:
Improveprocessor throughputVSAvoidthread scheduling complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an analysis tool as an intermediary between the complex multi-core scheduling system and the developer. This tool captures thread execution data, processes it through a data processor, and presents it through a visualization interface, thereby mediating the complexity and making it manageable for developers to understand and optimize their applications.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements a feedback mechanism by capturing actual thread execution data from the multi-core system, processing this data to identify scheduling patterns and performance issues, then presenting this information back to the developer through visualization. This feedback loop enables developers to understand the actual behavior of their concurrent applications and make informed optimizations.

Inventive Principle:
Principle #23Feedback

2Productivity

If thread migration is allowed for load balancing, then system utilization is improved, but performance penalties increase due to working set reloads

Engineering Contradiction:
Improvesystem utilizationVSAvoidthread migration overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The analysis tool provides feedback information about thread migration patterns and their impact on performance. By visualizing which threads migrate between cores and the associated performance penalties, the tool enables developers to identify problematic migration patterns and implement optimizations to reduce unnecessary thread migrations while maintaining system utilization.

Inventive Principle:
Principle #23Feedback

3Adaptability or versatility

If current sequential application tools are used for concurrent applications, then tool compatibility is maintained, but meaningful insight into thread scheduling is lost

Engineering Contradiction:
Improvetool compatibilityVSAvoidthread scheduling insight
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent creates a universal analysis tool that can work with concurrent applications while providing specialized insights into thread scheduling behavior. The tool maintains compatibility with existing development workflows while adding multi-functional capabilities to capture, process, and visualize thread execution data, thereby preventing loss of scheduling information while preserving tool adaptability.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The analysis tool serves as an intermediary layer between sequential application tools and concurrent application behavior. It captures detailed thread scheduling information that would otherwise be lost, processes this information, and presents it in a form that can be understood by developers using traditional tooling approaches, thereby mediating between tool compatibility and information preservation.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Productivity

If developers manually optimize concurrent applications, then performance can be improved, but optimization time and error-proneness increase

Engineering Contradiction:
Improveapplication performanceVSAvoidoptimization time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements automated feedback mechanisms that capture thread execution data, analyze scheduling patterns, and provide actionable insights to developers. This automated feedback reduces the manual trial-and-error optimization process, decreasing both the time required for optimization and the potential for errors while still achieving performance improvements.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The analysis tool enables a form of self-service optimization by automatically capturing and analyzing thread execution behavior, identifying performance issues, and presenting targeted recommendations. This reduces the burden on developers to manually analyze complex scheduling behavior, allowing them to focus on implementing optimizations based on clear, data-driven insights rather than guessing at problems.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9430353B2Analysis and visualization of concurrent thread execution on processor cores
Publication Date: 2016.08.30 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9430353B2 patent drawing
  • US9430353B2 patent drawing
  • US9430353B2 patent drawing

AI summary

An analysis and visualization is used to depict how a concurrent application executes threads on processor cores over time. With the analysis and visualization, a developer can readily identify thread migrations and thread affinity bugs that can degrade performance of the concurrent application. An example receives information regarding processes or threads running during a selected period of time. The information is processed to determine which processor cores are executing which threads over the selected period of time. The information is analyzed and executing threads for each core are depicted as channel segments over time, and can be presented in a graphical display. The visualization can help a developer identify areas of code that can be modified to avoid thread migration or to reduce thread affinity bugs to improve processor performance of concurrent applications.