IP Library › Granted Patent US 7,266,810
Granted Patent B2
US 7,266,810 · App. 10/120,036 · Granted Sep 4, 2007

Runtime profiling of platform-independent software applications

Assignee: Hewlett-Packard Development Company, LP.
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 7,266,810
App. No.
10/120,036
Filed
Apr 9, 2002
Granted
Sep 4, 2007
Kind
B2
Art Unit
2192
USPC
717/130
Abstract

A system and method for profiling the runtime environment of a software application written in a platform-independent (e.g. platform neutral) programming language. Such a software application can invoke a non-application-code component to facilitate the functioning of the software application. The profiling tool and method can generate runtime profiles relating to both the software application and the non-application-code component invoked by the software application.

Claims (92)

1. A profiling system for runtime environments, comprising:

a software application written in a platform-independent programming language;

a non-application-code component invoked by said software application; and

a profiling tool for generating a runtime metric, said runtime metric including an application metric and a non-application-code metric, said profiling tool generating said application metric from said software application and said non-application-code metric from said non-application-code component.

2. The system of claim 1 , wherein said platform-independent programming language is Java.

3. The system of claim 1 , wherein said software application is written in a different programming language than said non-application-code component.

4. The system of claim 1 , further comprising a virtual machine for interfacing said software application with said non-application-code component, said runtime metric Farther including a virtual machine metric, and said profiling tool generating said virtual machine metric from said virtual machine.

5. The system of claim 4 , further comprising a kernel for running said virtual machine, said runtime metric further including a kernel metric, and said profiling tool generating said kernel metric from said kernel.

6. The system of claim 1 , said runtime metric further comprising a time-stamped compilation log.

7. The system of claim 6 , said runtime metric further comprising a kernel metric.

8. The system of claim 1 , said software application including a dynamically re-compiled Java method, and said profiling tool generating a metric from said application metric.

9. The system of claim 1 , said profiling tool does not include an embedded agent.

10. The system of claim 1 , wherein said application software is not specially prepared for said profiling tool.

11. The system of claim 1 , wherein said profiling tool does not modify a flow of control in said software application.

12. The system of claim 1 , including an invocation interface, wherein said invocation interface invokes said software application without a profiling decision by said invocation interface.

13. The system of claim 1 , further comprising an invocation interface, wherein said profiling tool is launched remotely by said invocation interface.

14. The system of claim 13 , wherein a firewall separates said invocation interface from said software application.

15. The system of claim 1 , further comprising a method map, wherein said profiling tool generates said runtime metric with said method map.

16. The system of claim 1 , wherein said non-application-code component comprises a virtual machine, said system further comprising:

a kernel profiling subsystem, including a trace and a data record;

wherein said virtual machine sends said trace to said kernel profiling subsystem, said kernel profiling subsystem generates said data record from said trace, and said kernel profiling subsystem sends said data record to said profiling tool.

17. The system of claim 16 , said kernel profiling subsystem further including:

a plurality of kernel instrumentation points; and

a kernel instrumentation trace buffer;

wherein said kernel instrumentation trace buffer generates said data record from said kernel instrumentation points.

18. The system of claim 17 , further comprising a client computer running said software application, wherein said kernel profiling subsystem does not occupy a port on a client computer.

19. The system of claim 17 , wherein said kernel profiling subsystem updates a compiled method data record in a dynamic manner.

20. The system of claim 1 , further comprising a method map, said application metric generated from said method map with said profiling tool.

21. The system of claim 1 , wherein said application metric and said non-application-code metric are created during the same execution of said software application.

22. A system for profiling a runtime environment of a Java application, comprising:

a Java-code profiling subsystem for generating a Java-code metric based on execution of a Java-code application that is executed on a virtual machine;

an external instrumentation profiling subsystem for generating an external metric based on an external instrumentation darn record;

a virtual machine profiling subsystem for generating a virtual machine metric based on operation of said virtual machine.

23. The system of claim 22 , said system for profiling including a method map and a header table, said system for profiling generating a runtime metric from said method map and said header table.

24. The system of claim 23 , said system for profiling including:

a symbol table, comprising a symbol data row;

a symbol string table, comprising a string data row linking a string to said symbol data row; and

a pointer, said pointer identifying said symbol data row;

wherein said profiling tool maps bits to symbols with said pointer.

25. A method for profiling the runtime environment of an application-code component, comprising:

executing the application-code component in a runtime environment that includes a non-application code component;

running a profiler with respect to the executing application-code component;

generating an application-code metric from the application-code component with the profiler; and

creating a non-application-code metric from the non-application-code component with the profiler;

wherein the application-code metric and the non-application-code metric are generated from one execution of the application-code component in a runtime environment.

26. The method of claim 25 , wherein only a profiling tool is applied to the runtime environment during the running of the profiler.

27. The method of claim 25 , said generating an application-code metric including:

tracking a dynamic re-compilation of a method in the application-coda component; and

breaking down a method profile into a per-compilation-metric.

28. The method of claim 25 , wherein running the profiler does not require an embedded agent.

29. The method of claim 25 , wherein running the profiler does not require any special preparation of the application-code component.

30. The method of claim 25 , wherein running the profiler does not modify a flow of control in the application-code component during runtime.

31. The method of claim 25 , said running the profiler including:

launching the profiler through an invocation interface; and

invoking the execution of the application code component trough the invocation interface;

wherein said launching occurs after said invoking.

32. The method of claim 31 , wherein the profiler is launched from a client computer at a remote location.

33. The method of claim 32 , wherein an Internet firewall exists between the profiler and the application-code component.

34. A profiling tool stored on a medium for storing computer-readable instructions, said profiling tool, when executed, generating a runtime metric, said runtime metric including an application metric and a non-application-code metric, said profiling tool generating said application metric from a software application and said non-application-code metric from a non-application-code component used by said software application.

35. The tool of claim 34 , wherein said software application is in a platform-independent programming language.

36. The tool of claim 35 , wherein said programming language is Java.

37. The tool of claim 34 , wherein said software application is written in a different programming language than said non-application-code component.

38. The tool of claim 34 , further comprising a virtual machine for interfacing said software application with said non-application-code component, said runtime metric further including a virtual machine metric, and said profiling tool generating said virtual machine metric from said virtual machine.

39. The tool of claim 38 , further comprising a kernel for running said virtual machine, said runtime metric further including a kernel metric, and said profiling tool generating said kernel metric from said kernel.

40. The tool of claim 34 , said profiling tool does not use an agent embedded in said software application.

41. The tool of claim 34 , wherein said application software is not specially prepared for said profiling tool.

42. The tool of claim 34 , wherein said profiling tool does not modify a flow of control in said software application.

43. The tool of claim 34 , further comprising a method map, wherein said profiling tool generates said runtime metric with said method map.

44. The tool of claim 34 , further comprising:

a kernel profiling subsystem, including a trace and a data record;

wherein a virtual machine sends said trace to said kernel profiling subsystem, said kernel profiling subsystem generates said data record from said trace, and said kernel profiling subsystem sends said data record to said profiling tool.

45. The tool of claim 44 , said kernel profiling subsystem further including:

a plurality of kernel instrumentation points; and

a kernel instrumentation trace buffer;

wherein said kernel instrumentation trace buffer generates said data record from said kernel instrumentation points.

46. The tool of claim 45 , further comprising a client computer running said software application, wherein said kernel profiling subsystem does not occupy a port on a client computer.

47. The tool of claim 45 , wherein said kernel profiling subsystem updates a compiled method data record in a dynamic manner.

48. The tool of claim 34 , wherein said application metric and said non-application-code metric are created during the same execution of said software application.

49. A system for profiling the runtime environment of an application-code component, comprising:

means for executing the application-code component in a runtime environment tat includes a non-application code component;

means for generating an application-code metric from operation of the application-code component; and

means for determining a non-application-code metric from operation of the non-application-code component;

wherein the application-code metric and the non-application-code metric are generated from one execution of the application-code component in a runtime environment.

50. The system of claim 49 , wherein said means for generating an application-code metric comprise:

means for tracking a dynamic re-compilation of a method in the application-code component; and

means for breaking down a method profile into a per-compilation-metric.

51. The system of claim 49 , wherein said means for generating do not comprise an embedded agent.

52. The system of claim 49 , wherein said means for generating do not modify a flow of control in the application-code component during runtime.

53. A profiling system for runtime environments, comprising:

a software application written in a platform-independent programming language;

a virtual machine supporting said software application; and

a profiling tool for generating a runtime metric, said runtime metric including an application metric and a virtual machine metric, said profiling tool generating said application metric from said software application and said virtual machine metric from said virtual machine.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2022
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: SNOWFLAKE INC.
Reel/Frame 060820/0271 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2003
From: HEWLETT-PACKARD COMPANY
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 013776/0928 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2002
From: KARKARE, ASHISH; MATHUS, RYAN; TSARIOUNOV, ALEX; AFGHANI, AMIR
To: HEWLETT-PACKARD COMPANY
Reel/Frame 013013/0641 →
Continuity (1)
Related Publication 20030192036A1 · Oct 9, 2003