Contention Log Navigation with Thread and Resource View Pivoting
Find Innovative SolutionsGenerate 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
Engineering Contradiction Analysis
1Measurement precision
If comprehensive contention data is collected and analyzed, then detection precision is improved, but device complexity increases
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.
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.
2Loss of information
If detailed contention information is displayed, then information completeness is improved, but ease of operation deteriorates
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.
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.
3Productivity
If multi-threaded applications are executed with instrumentation, then productivity is improved, but loss of time increases
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.
Data Source
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.


