Contention Log Navigation with Thread and Resource View Pivoting

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded applications, detecting and analyzing thread contention for shared resources is complex due to the large amounts of information and variations in program behavior, making it difficult to understand interactions between threads and resources, and to identify synchronization issues that can lead to performance bottlenecks.

Innovation Solution

A contention log is created during application execution, recording timestamps, thread identities, call stacks, and resource identities, allowing for post-execution analysis and visualization of contentions, enabling developers to pivot between thread and resource views to investigate blocked threads and synchronization objects, facilitating the detection of resource owners and reducing redundant contentions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If comprehensive contention data is collected and analyzed, then detection precision is improved, but device complexity increases

Engineering Contradiction:
Improvecontention detection precisionVSAvoidanalysis system complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The analysis system divides contention data into separate dimensions: thread-level data showing which threads are blocked and their call stacks, and resource-level data showing which resources are contended and their owners. This segmentation allows developers to independently analyze thread behavior and resource usage without being overwhelmed by the complete dataset, improving detection precision while managing complexity through structured organization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary analysis layer that processes raw contention logs and generates simplified visual representations. This intermediary layer translates complex multi-threaded interaction data into intuitive thread view and resource view displays, enabling precise contention detection without requiring developers to directly handle the complexity of raw instrumentation data.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of information

If detailed contention information is displayed, then information completeness is improved, but ease of operation deteriorates

Engineering Contradiction:
Improvecontention information completenessVSAvoidanalysis operation ease
Core Design Contradiction:
Loss of informationVSEase of operation

Solution Approach 1:

The analysis interface provides dynamic switching between thread view and resource view, allowing developers to adapt the display to their specific analysis needs. The thread view shows blocked threads and their call stacks when investigating thread behavior, while the resource view shows contended resources and their owners when investigating resource usage. This dynamic adaptability maintains information completeness while improving ease of operation by presenting only relevant information for the current analysis context.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent adds a dimensional switch between two perspectives: thread dimension (showing which threads are blocked and why) and resource dimension (showing which resources are contended and by whom). This dimensional change allows developers to navigate the same contention data from different angles, maintaining complete information availability while simplifying the operational complexity through perspective-based filtering.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Productivity

If multi-threaded applications are executed with instrumentation, then productivity is improved, but loss of time increases

Engineering Contradiction:
Improveapplication development productivityVSAvoidexecution time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The instrumentation system implements partial monitoring by selectively tracking only contention-related events rather than all application execution. The system instruments specific synchronization primitives and resource access points to capture contention occurrences, timestamps, and involved threads, while leaving the rest of the application execution uninstrumented. This partial action approach provides sufficient contention data for analysis while minimizing the performance overhead and execution time loss.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8392930B2Resource contention log navigation with thread view and resource view pivoting via user selections
Publication Date: 2013.03.05 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8392930B2 patent drawing
  • US8392930B2 patent drawing
  • US8392930B2 patent drawing

AI summary

A contention log contains data for contentions that occur during execution of a multi-threaded application, such as a timestamp of the contention, contention length, contending thread identity, contending thread call stack, and contended-for resource identity. After execution of the application ends, contention analysis data generated from the contention log shows developers information such as total number of contentions for particular resource(s), total number of contentions encountered by thread(s), a list of resources that were most contended for, a list of threads that were most contending, a plot of the number of contentions per time interval during execution of the application, and so on. A developer may pivot between details about threads and details about resources to explore relationships between thread(s) and resource(s) involved in contention(s). Other information may also be displayed, such as call stacks, program source code, and process thread ownership, for example.