Activity-Level CPU Profiling via Thread Sampling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional CPU profilers fail to identify individual CPU usage among a collective set of activities, leading to false indications of CPU activity and inability to pinpoint CPU hotspots or inefficient code portions, which hinders performance optimization.

Innovation Solution

A sampling-based CPU profiler that identifies CPU hotspots by determining the number of busy and wasted threads, calculating CPU time usage for each activity, and providing data for code optimization, allowing for maximal CPU utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If conventional profilers collect data about collective CPU usage for an entire set of activities, then the measurement coverage is comprehensive, but the measurement precision is insufficient to identify individual CPU usage patterns and hotspots

Engineering Contradiction:
ImproveCPU usage measurement precisionVSAvoidprofiler complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the collective CPU usage measurement into individual activity-level measurements. By tracking CPU usage at the activity level rather than collectively, the system achieves precise identification of CPU hotspots and individual activity performance without requiring complex profiler architecture.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent uses sampling-based measurement that captures CPU usage at specific intervals rather than continuously monitoring all activities. This partial action approach provides sufficient precision for identifying hotspots while avoiding the complexity of comprehensive continuous monitoring.

Inventive Principle:
Principle #16Partial or excessive action

2Loss of information

If conventional profilers detect collective CPU usage for all activities, then the data collection is complete, but the information about which activities are using CPU and which are not is lost

Engineering Contradiction:
Improveactivity-specific CPU usage informationVSAvoidperformance optimization efficiency
Core Design Contradiction:
Loss of informationVSProductivity

Solution Approach 1:

The patent segments CPU usage data by individual activities, allowing identification of which specific activities are consuming CPU resources and which are idle. This segmentation preserves activity-specific information that enables targeted performance optimization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces activity identifiers as intermediaries between CPU usage events and the profiler. These identifiers link CPU usage data to specific activities, enabling the system to track and report which activities are using CPU resources without losing information.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If conventional profilers provide only collective CPU usage data, then the data collection is simple, but the ability to identify CPU hotspots and code portions that excessively use CPU is lost

Engineering Contradiction:
ImproveCPU hotspot identification accuracyVSAvoidprofiler complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments CPU usage measurement to the activity level, enabling precise identification of CPU hotspots by comparing individual activity usage against thresholds. This segmentation approach achieves hotspot identification accuracy without requiring complex analysis algorithms.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the measurement parameter from collective CPU usage to activity-level CPU usage. This parameter change enables direct identification of hotspots and excessive CPU usage by specific activities while maintaining relatively simple profiler implementation.

Inventive Principle:
Principle #35Parameter changes

4Measurement precision

If the system tracks individual activity CPU usage, then the measurement precision improves for identifying hotspots, but the data processing complexity increases

Engineering Contradiction:
Improveindividual activity CPU usage measurementVSAvoiddata processing complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent uses sampling-based measurement that captures activity CPU usage at selected intervals rather than continuously. This partial monitoring approach provides sufficient precision for identifying hotspots while reducing data processing complexity compared to continuous tracking.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent extracts only the essential CPU usage data at activity level needed for hotspot identification, rather than processing all possible activity attributes. This extraction approach maintains measurement precision while minimizing data processing complexity.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11481298B2Computing CPU time usage of activities serviced by CPU
Publication Date: 2022.10.25 SAP SE
  • US11481298B2 patent drawing
  • US11481298B2 patent drawing
  • US11481298B2 patent drawing

AI summary

Processor(s) of a sampling profiler can identify an activity of multiple activities serviced by a central processing unit (CPU). Each activity can be performed by computing thread(s) of multiple computing threads executing various subroutines of a computer program. The processor(s) can set a target representing a total number of computing threads required to work simultaneously for a maximal use of the CPU. The processor(s) can determine a number of busy computing threads that are performing the activity by using the CPU. The processor(s) can calculate a number of wasted computing threads that are not performing the activity and not using the CPU by computing a difference between the target and the number of busy threads. The processor(s) can compute a CPU time usage for the activity by multiplying time duration of the activity by a value obtained by dividing the number of wasted threads by the number of busy threads.