Jump to: navigation, search

Hybrid TPTP scenario

TPTP Profiler users

  • Harm Sluiman

Usage scenarios

Requirements and set up

To run this simple two tier application follow these steps:

  1. Install a default image of Tomcat 5.5 or newer
  2. Put your JRE 1.5 or newer on the path and run the tomcat5.exe in the tomcat bin directory
  3. open the tomcat welcome page or go to http://127.0.0.1:8080/ for a local install.
  4. login with the default userid and pwd (not actually required, see tomcat-users.xml in the conf dir for the configured users)
  5. run some of the sample applications to confirm things work, and then try the JSP SVG (http://127.0.0.1:8080/jsp-examples/jsp2/jspx/svgexample.html) sample. This will give tell you how to run the sample.
  6. download and unzip a recent batik binary driver from Apache
  7. with your JRE on the path run java -jar batik-squiggle.jar and enter the url provided when running the earlier jsp sample (http://localhost:8080/jsp-examples/jsp2/jspx/textRotate.jspx?name=JSPX)

You now have a running two tier java application. This is all free open source so easy to install and recreate as needed. You can try all this out on one machine but clearly the two processes will affect each other so using two machines for more formal measurement is better and creates the need for remote monitoring using the profiler.

Most general case:

  1. First and second experience profiling the squiggly browser when running the Tomcat 5.5 SVG jsp example
    1. experience
  2. isolate the time spent in the batik code versus the browser code or on the network using the class/method statistics views in TPTP
  3. profile the jsp on the tomcat server
  4. isolate the time spent in the jsp generated code and support libraries versus the tomcat server itself.
  5. compare these result to an end user clock
  6. optionally create a TPTP URL test for repeated testing of the server code without needing the browser

Required features:

  1. tbd

Ideal profiler

The ideal profiler will let me profile both of these applications at the same time or independently as well as show the network separations and impacts. At least one of these applications is normally on an separate machine so I would need remote support as well.

For the initial use case I only need to assess time spent, but it is important to note that I actually don't know the code I am profiling and am using the profiler to learn something about this code base before I write a line of code.

Opened Bugzillas

none yet

Problems observed during the experiences referenced above

First experience
  • Set config does not run with common JRE environments.

Harm, am I right what it means JRE doesn't comply with TPTP requirements? (HS - yes) --Alexander.n.alexeev.intel.com 06:05, 2 January 2008 (EST)

Problem is inability to run AC configuration with default JRE on Windows. A default install of Java 1.4 1.5 or 1.6 from SUN for example appears to not satisfy the setconfig.
The cause is that "The Java Runtime in use does not contain a suitable JAXP feature"
Solution for problem can be:
  • Add more meaningful message about usage of unsuitable JRE version and required version . Something like "JAXP is included in J2SE 5.0 and Java SE 6.0, please verify that you have such version of JRE"
  • Add JAXP to distribution (can meet legal issues)
  • Add to error message where JAXP can be taken and how to install it
  • Change the way setconfig tests for JAXP
  • In the IAC case used the support packaged in the workbench already
Bugzilla bug 215023
  • IAC does not have a configuration file for standalone use.
Problem is absence of default AC configuration file which can be used
Solution for problem can be:
  • Check configuration file each time then then profiling started and run SetConfig if it is inconsistent. User can just response to question of configuration script in console where profiling have been run
  • Configure execution by value of environment variable TPTP_AC_HOME
  • note that use of global environment variables cna be problematic if multiple AC instances are used, since this is a supported environment starting with 4.4
Bugzilla bug 214088
Distribution's problem
  • Plain windows workbench install of 4403 includes binaries for linux IAC as well as 64 bit
Seems that this isn't a direct problem for usability. But can be risen since it makes install and download slow.
  • IAC does not start until a test connection is attempted
Problem is that IAC doesn't start automatically
Solution for problem can be:
Data filtering
  • Filters set in attach config are called default, but properties variant is called __JVMPI__
Problem is completely incorrect functionality of property tab with filters.
Filter can be edited and renamed but it doesn't affect set of collected classes.
Even if remove all filtering entities, press "finish" and reopen dialog all settings are completely recovered.
Solution for problem can be:
  • Expected behavior for filter page on node properties should be defined.
Problem can be tracked via bugzilla.
If editing can't be supported, a possible approach to make this page read only for JVM TI's nodes, and correct logic for filter's name displaying.
Execution management
  • After detaching and attaching to an agent, no more data is collected/sent to the workbench
  • After deleting profiling sessions/connections navigator shows status of all deleted connections (What do you mean here --Alexander.n.alexeev.intel.com 18:22, 6 December 2007 (EST))
    • This is a UI problem. At the bottom of the workbench the status line shows the number of events process and the time etc. for the profiling connection that is in focus in the navigator of the profiling perspective. This gives a user some indication of the amount of work our code is doing for them. If you terminate the profiling session and delete the resource from the navigator the status line should not show any status because there is no session in focus. After I created a few sessions, terminated each of them and then deleted them all, the status line cycled through the old status of the deleted resources.
  • Attach and collect with execution details turned on, and method data is not rendered (Does rendered mean isn't shown at all? --Alexander.n.alexeev.intel.com 18:22, 6 December 2007 (EST))
    • Yes, it is not showing up in the UI. I did not debug to see if the events where there or if the model was loaded.

Problem: an interupted profiling session stops collecting data

Solution: If the workbench detaches from an agent or clears all data in memory, the agent does not resend any missing data needed by the workbench in order to continue. No additional protocol should be added to the agent for this use case but an attach or reattach scenario should cause the agent to send fresh data as needed. For example the agent can keep track of what class definitions it has sent and send them if not previously done. A detach should simply clear this log of data sent so the agent just starts over. In addition the workbench should recover from missing data/events and not simply loose the information.

Data representation
  • Double click a numbered unknown method and a NPE occurs. (Can't reproduce it)
    • to reproduce you need to get a the tool loaded with these unknown numbered events. Are you getting that symptom and not the NPE or are you not getting the unknown methods. I can capture the models and trace files if needed to reproduce.
  • Even when Execution flow shows threads and unknown methods, the UML diagrams do not have any data
  • Execution flow has 14 threads and Execution details only shows 2 AWT threads