Application Profiling via In-Process Sampling Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing application profilers are limited in collecting and presenting profiling data in real-time during application execution, often requiring separate steps for data capture and analysis, and may not provide comprehensive information due to inter-process synchronization issues.

Innovation Solution

Instrumenting machine-dependent instructions with sampling instructions to collect state samples, including timestamps and execution information, which are then used to generate profiling data interactively and on-demand, eliminating the need for separate data encoding and decoding processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If profiler data is collected in a separate process, then data collection can occur during application execution, but synchronization and inter-process data marshalling complexity increases

Engineering Contradiction:
Improveprofiling data collection reliabilityVSAvoidsynchronization complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges the profiler and the application into the same process, eliminating inter-process communication overhead and synchronization complexity. The sampling instructions are inserted directly into the application's instruction stream, allowing profile data collection without separate process boundaries.

Inventive Principle:
Principle #5Merging (Combining)

2Measurement precision

If profiler data is decoded after application execution, then comprehensive analysis can be performed, but real-time profiling information is not available

Engineering Contradiction:
Improveprofiling analysis completenessVSAvoidprofiling information delay
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent enables continuous profiling during application execution by collecting profile data in real-time within the same process. The sampling instructions continuously capture execution state information without interrupting application flow, providing both real-time visibility and complete analysis capability.

Inventive Principle:
Principle #20Continuity of useful action

3Loss of information

If sampling instructions are inserted at every method entry point, then comprehensive execution tracking is achieved, but instruction overhead increases

Engineering Contradiction:
Improveexecution information completenessVSAvoidapplication execution speed
Core Design Contradiction:
Loss of informationVSProductivity

Solution Approach 1:

The patent applies sampling selectively at specific locations within the instruction stream rather than uniformly throughout. Sampling instructions are inserted at method entry points and other strategically chosen locations based on profiling needs, optimizing the balance between information completeness and performance overhead.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS8074207B1Application profiling
Publication Date: 2011.12.06 ADOBE INC
  • US8074207B1 patent drawing
  • US8074207B1 patent drawing
  • US8074207B1 patent drawing

AI summary

Methods, systems and apparatus, including computer program products, for profiling an application. An application for execution is obtained. The application comprises a plurality of machine-independent first instructions. Regions of the first instructions that implement one or more programming language methods, functions, or flow control structures are identified. The first instructions are translated into corresponding machine-dependent second instructions for a target machine. The second instructions are instrumented to include sampling instructions for the identified regions. The sampling instructions are configured to cause generation of a state sample when an identified region is executed. Each state sample includes a time stamp and an identification of a currently executing method or function. The second instructions are executed in order to execute the application. During the execution of the application, each generated state sample is collected.