Compiled Application Performance Monitoring via Jump Code Interception

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing solutions for monitoring the performance of network software applications, such as web applications, are inefficient and vulnerable, especially in programming languages like Go, where compiled applications lack mechanisms for intercepting function calls, requiring dynamic linking and symbol tables that are less portable and introduce vulnerabilities.

Innovation Solution

Modifying the machine code of compiled applications by replacing the request routing function with jump code that directs processing to a data collection function, allowing performance metrics to be collected without impacting the application's functionality and without the need for manual code instrumentation or dynamic linking.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If dynamic linking and symbol tables are used to intercept function calls in compiled applications, then performance monitoring capability is improved, but portability deteriorates and security vulnerabilities are introduced

Engineering Contradiction:
Improveperformance monitoring capabilityVSAvoidportability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent creates a copy of the original request routing function and replaces it with jump code that redirects to a data collection function. This copying approach enables performance monitoring without requiring dynamic linking or symbol tables, thus maintaining portability while achieving monitoring capability. The backup of the original function ensures the application can still execute its intended logic.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent introduces a data collection function as an intermediary between the jump code and the backup request routing function. This intermediary function collects performance metrics before passing control to the original function, enabling monitoring without compromising portability or introducing security vulnerabilities associated with dynamic linking.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If manual code instrumentation is used to collect performance metrics, then measurement precision is improved, but device complexity and ease of manufacture deteriorate

Engineering Contradiction:
Improveperformance metrics accuracyVSAvoidcode instrumentation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent modifies the compiled application's machine code to automatically redirect control flow to data collection functions through jump code. This self-service approach enables performance monitoring without requiring manual code instrumentation or developer intervention, thus maintaining measurement precision while reducing complexity. The modification is performed automatically on the compiled binary, eliminating the need for source code access or manual instrumentation.

Inventive Principle:
Principle #25Self-service

3Reliability

If the request routing function is replaced with data collection function, then performance monitoring capability is improved, but application functionality deteriorates

Engineering Contradiction:
Improveperformance monitoring capabilityVSAvoidapplication functionality
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The patent creates a backup of the original request routing function before replacing it with jump code. This preliminary action ensures that the original functionality is preserved and can be restored if needed. The backup is stored in a location accessible to the data collection function, which calls it after collecting performance metrics, thus maintaining application functionality while enabling monitoring.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The data collection function acts as an intermediary that bridges the jump code replacement and the backup request routing function. It collects performance metrics and then invokes the backup function to execute the original application logic, ensuring that application functionality is maintained despite the replacement of the original request routing function.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Ease of operation

If jump code is used to redirect processing to data collection function, then ease of operation is improved, but device complexity increases

Engineering Contradiction:
Improvemonitoring implementation easeVSAvoidmachine code modification complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent creates a backup of the original request routing function and uses jump code to redirect control flow to the data collection function. This copying and redirection approach simplifies the implementation of performance monitoring by working directly with compiled machine code rather than requiring source code modifications or complex instrumentation frameworks.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11347614B2Modifying compiled applications to monitor performance
Publication Date: 2022.05.31 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11347614B2 patent drawing
  • US11347614B2 patent drawing
  • US11347614B2 patent drawing

AI summary

A computer system modifies a compiled application to monitor performance. A request routing function of the compiled application is replaced with jump code that directs processing to a data collection function and backing up the request routing function. In response to receiving, during execution of the compiled application, an incoming request from a remote device for handling by the request routing function, the data collection function is executed based on the jump code. Using the data collection function, data associated with the incoming request is collected, the data comprising performance metrics. The backup of the request routing function is called using the data collection function to process the request and provide a response. Embodiments of the present invention further include a method and program product for modifying a compiled application to monitor performance in substantially the same manner described above.