Browse Prior Art Database

Flow and time analysis of jitting methods

IP.com Disclosure Number: IPCOM000013392D
Original Publication Date: 2000-Mar-01
Included in the Prior Art Database: 2003-Jun-18
Document File: 2 page(s) / 29K

Publishing Venue

IBM

Abstract

When analyzing the performance of a java virtual machine, it is nice to have a way to identify where time is spent performing what type of operations and on behalf of what types of processing. In particular, it is helpful to know what time is spent interpreting method(s), what time is spent executing the jitted method(s), and what time is spent jitting the method(s). This knowledge may be used to help determine when to jit a method and in determining how much time to spend jitting a method is warranted. Also, summary statistics, such as, the total time spent interpreting, executing jitted methods, and jitting methods for a specific run would be helpful in this determination. Please note that it is not sufficient to simply take the difference between the end time and the start time to identify the time spent executing an interpreted method, executing a jitted method, or jitting a method. This is because other operations could take place, such as, process switches, timer interrupts, key board interrupts, etc. Also, other events could occur during the execution of a method. For example, it is possible that other operations or threads are executing code concurrently. The key to avoiding this problem is in the processing or analysis phase, which could be either real time or post processing. We define a methodology for attributing time spent in a method or process/thread (pid/tid) by identifying the current method or process/thread (pid/tid) as a node and applying base time to the node currently executing whenever a new event occurs. Nodes are either a pid/tid node or a child of a pid/tid node. New child nodes are defined to represent the jitting of a method.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 1 of 2

Flow and time analysis of jitting methods

When analyzing the performance of a java virtual machine, it is nice to have a
way to identify where time is spent performing what type of operations and on
behalf of what types of processing. In particular, it is helpful to know what
time is spent interpreting method(s), what time is spent executing the jitted
method(s), and what time is spent jitting the method(s). This knowledge may
be used to help determine when to jit a method and in determining how much
time to spend jitting a method is warranted. Also, summary statistics, such
as, the total time spent interpreting, executing jitted methods, and jitting
methods for a specific run would be helpful in this determination.

Please note that it is not sufficient to simply take the
difference between the end time and the start time to
identify the time spent executing an interpreted method,
executing a jitted method, or jitting a method.

This is because other operations could take place, such
as, process switches, timer interrupts, key board
interrupts, etc. Also, other events could occur during
the execution of a method. For example, it is possible
that other operations or threads are executing code
concurrently.

The key to avoiding this problem is in the processing or
analysis phase, which could be either real time or post
processing. We define a methodology for attributing time
spent in a method or process/thread (pid/tid) by
identifying the current method or process/thread (pid/tid)
as a node and applying base time to the node currently
executing whenever a new event occurs. Nodes are either a
pid/tid node or a child of a pid/tid node. New child
nodes are defined to represent the jitting of a method.

New trace hooks which identify the start of jitting of a
specified method and the end of jitting of a specified
method are added to the jitting path. Different hook
identifications or event identifications are used when
executing the starting or the compl...