IP Library Granted Patent US 11,030,073
Granted Patent B2
US 11,030,073 · App. 16/670,681 · Granted Jun 8, 2021

Hybrid instrumentation framework for multicore low power processors

Inventors: Sam Idicula (Santa Clara, CA); Kirtikar Kashyap (Redwood City, CA); Arun Raghavan (Belmont, CA); Evangelos Vlachos (San Francisco, CA); Venkatraman Govindaraju (Fremont, CA)
Assignee: Oracle International Corporation
G06F11/3466G06F11/0751G06F11/3024G06F11/3457G06F11/3692G06F9/30145G06F9/30167G06F9/30189G06F9/30196G06F9/3806G06F9/5016G06F11/3447G06F11/3612G06F11/3636G06F11/3644
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,030,073
App. No.
16/670,681
Granted
Jun 8, 2021
Kind
B2
Abstract

Techniques are provided for redundant execution by a better processor for intensive dynamic profiling after initial execution by a constrained processor. In an embodiment, a system of computer(s) receives a request to profile particular runtime aspects of an original binary executable. Based on the particular runtime aspects and without accessing source logic, the system statically rewrites the original binary executable into a rewritten binary executable that invokes telemetry instrumentation that makes observations of the particular runtime aspects and emits traces of those observations. A first processing core having low power (capacity) performs a first execution of the rewritten binary executable to make first observations and emit first traces of the first observations. Afterwards, a second processing core performs a second (redundant) execution of the original binary executable based on the first traces. The second execution generates a detailed dynamic performance profile based on the second execution.

Claims (52)

1. A method comprising:

rewriting an original binary executable into a rewritten binary executable that invokes telemetry instrumentation that makes performance observations and emits traces of said performance observations;

first executing the rewritten binary executable to make first performance observations and emit first traces of said first performance observations;

second executing the original binary executable;

suspending, based on said first traces of said first performance observations of said first executing, a thread of said original binary executable;

generating a dynamic performance profile based on said second executing the original binary executable.

2. The method of claim 1 , wherein:

said first executing the rewritten binary executable comprises a first relative execution ordering of a plurality of basic blocks;

said second executing the original binary executable comprises a second relative execution ordering of the plurality of basic blocks that is different from the first relative execution ordering.

3. The method of claim 1 , wherein:

said first executing the rewritten binary executable comprises generating a new basic block that is stored at a first memory address;

said second executing the original binary executable comprises:

generating same said new basic block that is stored at a second memory address that is not the first memory address,

intercepting an attempt to transfer control to the first memory address, and

transferring control to the second memory address.

4. The method of claim 3 , wherein said generating the new basic block comprises:

sending the new basic block to a remote computer, and

receiving, from the remote computer, the new basic block with said telemetry instrumentation added.

5. The method of claim 1 , further comprising storing the first traces of said first performance observations in a database.

6. The method of claim 5 , wherein said storing the first traces of said first performance observations comprises copying the first traces from a file.

7. The method of claim 1 , wherein said first executing the rewritten binary executable occurs on a computing device that relies on a power source that is: environmental, electromagnetic, thermal, mechanical, battery, and/or photovoltaic.

8. The method of claim 1 , wherein said first executing the rewritten binary executable occurs on a computing device that is one selected from the group consisting of: wearable and an internet of things (IoT) remote sensor.

9. The method of claim 1 , wherein:

said second executing the original binary executable occurs on a central processing unit (CPU) in a computing device;

said first executing the rewritten binary executable occurs on a coprocessor in same said computing device.

10. The method of claim 9 , wherein the CPU and the coprocessor reside on a same chip.

11. The method of claim 1 , further comprising detecting based on the dynamic performance profile, one selected from the group consisting of: heap or code reachability, heap or stack corruption, cache thrashing or coherency, buffer overflow, bus usage, pointer validity, machine instruction usage, subroutine call flow, control or data flow, latency, throughput, processing load, idleness, logical constraint compliance, and codebase hot spots.

12. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:

rewriting an original binary executable into a rewritten binary executable that invokes telemetry instrumentation that makes performance observations and emits traces of said performance observations;

first executing the rewritten binary executable to make first performance observations and emit first traces of said first performance observations;

second executing the original binary executable;

suspending, based on said first traces of said first performance observations of said first executing, a thread of said original binary executable;

generating a dynamic performance profile based on said second executing the original binary executable.

13. The one or more non-transitory computer-readable media of claim 12 , wherein:

said first executing the rewritten binary executable comprises a first relative execution ordering of a plurality of basic blocks;

said second executing the original binary executable comprises a second relative execution ordering of the plurality of basic blocks that is different from the first relative execution ordering.

14. The one or more non-transitory computer-readable media of claim 12 , wherein:

said first executing the rewritten binary executable comprises generating a new basic block that is stored at a first memory address;

said second executing the original binary executable comprises:

generating same said new basic block that is stored at a second memory address that is not the first memory address,

intercepting an attempt to transfer control to the first memory address, and

transferring control to the second memory address.

15. The one or more non-transitory computer-readable media of claim 14 , wherein said generating the new basic block comprises:

sending the new basic block to a remote computer, and

receiving, from the remote computer, the new basic block with said telemetry instrumentation added.

16. The one or more non-transitory computer-readable media of claim 12 , wherein the instructions further cause storing the first traces of said first performance observations in a database.

17. The one or more non-transitory computer-readable media of claim 16 , wherein said storing the first traces of said first performance observations comprises copying the first traces from a file.

18. The one or more non-transitory computer-readable media of claim 12 , wherein said first executing the rewritten binary executable occurs on a computing device that relies on a power source that is one selected from the group consisting of: environmental, electromagnetic, thermal, mechanical, battery, and photovoltaic.

19. The one or more non-transitory computer-readable media of claim 12 , wherein said first executing the rewritten binary executable occurs on a computing device that is one selected from the group consisting of: wearable and an internet of things (IoT) remote sensor.

20. The one or more non-transitory computer-readable media of claim 12 , wherein:

said second executing the original binary executable occurs on a central processing unit (CPU) in a computing device;

said first executing the rewritten binary executable occurs on a coprocessor in same said computing device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2021
From: IDICULA, SAM; KASHYAP, KIRTIKAR; RAGHAVAN, ARUN; VLACHOS, EVANGELOS; GOVINDARAJU, VENKATRAMAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 056102/0978 →
Continuity (2)
Continuation 15882108 · Jan 29, 2018
Related Publication 20200065215A1 · Feb 27, 2020
Cited By (1)
US 12,619,459