# US 5,710,724 A · Dynamic computer performance monitor

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 5,710,724 A
- Document ID: US5710724A
- Status: Granted
- Kind: A
- Application number: 08/425,562
- Filed: 1995-04-20
- Granted: 1998-01-20
- Earliest claimed: 1995-04-20
- Assignees: Digital Equipment Corporation
- Inventors: Michael Burrows
- Web page: https://patentgrep.com/patent/US5710724A

## CPC

- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 2201/865: Monitoring of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In a computer system, an instrumented program associated with a first paging table is stored in a memory. The memory also stores an instrumented version of the uninstrumented program associated with a second paging table. The instructions of the uninstrumented and instrumented programs are stored at identical relative addresses. The instrumented programs also includes one word instrumentation points and instrumentation routines to monitor the performance of the computer system. Activating the first paging table causes the uninstrumented program to execute, and activating, in response to a single, the second paging table causes the instrumented program to execute. The instrumentation points cause execution flow to be routed through a gap between word aligned procedures of the program to a routing table, and then instrumentation routines. The gap includes instructions which randomly distributes the execution flow through the routing table.

## Claims

### Claim 1

A method for monitoring the performance of computer systems, comprising:
storing an uninstrumented program in a memory of a computer system, the uninstrumented program having a first paging table and instructions stored in addresses;
storing an instrumented program in the memory, the instrumented program having a second paging table, the instrumented program including a plurality of instrumentation points for routing the execution flow to a plurality of instrumentation procedures, the instrumented program having instructions stored at identical relative addresses as the instructions of the uninstrumented program;
activating the first paging table to execute the uninstrumented program; and
in response to a signal, activating the second paging table to execute the instrumented program.

### Claim 2 (depends on 1)

The method as of claim 1 further comprising:
while executing the instrumented program, activating the first paging table, in response to the signal, to execute the uninstrumented program.

### Claim 3 (depends on 1)

The method of claim 1 wherein the instrumented program includes a plurality of procedures aligned at predetermined memory addresses to create gaps between the plurality of procedures, and the uninstrumented program includes candidate instructions at memory addresses to monitor the performance of the computer system, and further comprising:
storing instrumentation instructions at the memory addresses of the candidate instructions;
storing routing instructions in the gaps, the instrumentation instructions calling the routing instructions in the gaps;
storing branching instructions in a routing table, the routing instructions directing execution flow to the branching instructions of the routing table, and the branching instructions to direct execution flow to the instrumentation routines.

### Claim 4 (depends on 3)

The method of claim 3 further comprising:
determining a difference in memory addresses between the middle of the routing table and a first one of the gaps;
adding the difference to a return address of a first instrumentation instruction and calling a first set of routing instructions in the first gap to determine a memory address of a first entry in the routing table to store a first one of the branching instructions to direct the execution flow to a first instrumentation routine for monitoring the performance of the computer system when executing the first instrumentation instruction.

### Claim 5

An apparatus for monitoring the performance of a computer system comprising:
a compiler for generating an uninstrumented program, the uninstrumented program including a candidate instruction at an address selected for performance monitoring;
means for generating an instrumented program from the uninstrumented program, the instrumented program including an instrumentation instruction at the address selected for performance monitoring, the instructions of the uninstrumented program and the instructions of the instrumented program stored at identical relative memory addresses;
a first set of paging values mapping the uninstrumented program into a memory of the computer system;
a second set of paging values to map the instrumented program and an instrumentation routine into the memory of the computer system, the instrumentation routine to be called by the instrumentation instruction;
means, responsive to a signal while executing the uninstrumented program, for activating the second set of paging values to execute the instrumented program.

### Claim 6 (depends on 5)

The apparatus of claim 5 further comprising:
a routing table for directing the execution flow from the instrumentation instruction to the instrumentation routine.

### Claim 7

A method for executing a computer program, comprising the steps of:
activating the execution of an uninstrumented program;
prior to completion of the execution of the activated uninstrumented program, activating an instrumented program having an instrumentation routine for routing the execution flow to a plurality of instrumentation procedures; and
upon completion of the instrumentation routine, reactivating execution of the uninstrumented program.

### Claim 8 (depends on 7)

The method of claim 7, wherein the instrumented and uninstrumented programs have instructions stored at identical relative addresses.

### Claim 9 (depends on 7)

The method of claim 7, wherein the uninstrumented program includes a first paging table and the instrumented program includes a second paging table.

### Claim 10 (depends on 9)

The method of claim 9, further comprising: activating the first paging table to execute the uninstrumented program and, in response to a signal, activating the second paging table to execute the instrumented program.

### Claim 11 (depends on 10)

The method of claim 10, further comprising: while executing the instrumented program, activating the first paging table, in response to the signal, to execute the uninstrumented program.

### Claim 12 (depends on 7)

The method of claim 7, wherein the uninstrumented program includes a plurality of procedures aligned at predetermined memory addresses to create gaps between the plurality of procedures, and the uninstrumented program includes candidate instructions at memory addresses to monitor the performance of the computer system, and further comprising:
storing instrumentation instructions at the memory addresses of the candidate instructions;
storing routing instructions in the gaps, the instrumentation instructions calling the routing instructions in the gaps;
storing branching instructions in a routing table, the routing instructions directing execution flow to the branching instruction of the routing table, and the branching instructions to direct execution flow to the instrumentation routines.

### Claim 13 (depends on 12)

The method of claim 12 further comprising:
determining a difference in memory addresses between the middle of the routing table and a first one of the gaps;
adding the difference to a return address of a first instrumentation instruction and calling a first set of routing instructions in the first gap to determine a memory address of a first entry in the routing table to store a first one of the branching instructions to direct the execution flow to a first instrumentation routine for monitoring the performance of the computer system when executing the first instrumentation instruction.

### Claim 14

A computer system comprising:
an uninstrumented program stored on a memory device:
an instrumented program stored on the memory device, the instrumented program including a plurality of instrumentation points for routing the execution flow of the instrumented program to a plurality of instrumentation procedures;
a mapping unit for storing the uninstrumented program and the instrumented program into the memory at related addresses.

### Claim 15 (depends on 14)

The apparatus of claim 14 further comprising:
a routing table for directing the execution flow from the instrumentation points to the instrumentation procedures.

### Claim 16 (depends on 14)

The apparatus of claim 14, wherein the uninstrumented program includes a candidate instruction at an address selected for performance monitoring; and
the instrumented program includes an instrumentation instruction at an address selected for performance monitoring, the instructions of the uninstrumented program and the instructions of the instrumented program stored at identical relative memory addresses.

### Claim 17 (depends on 14)

The apparatus of claim 14, further comprising:
a first paging table mapping first paging values of the uninstrumented program to first addresses in the memory of the computer system;
a second paging table mapping second paging values of the instrumented program to second addresses in the memory of the computer system.
