Hi Michel, > > Attached are some screen shots of this working now. One of them is for > > a simple text log file and shows a hierarchy of DataCenter > Host > VM > > and then state values are on the VM's only. (I work for VMware, so > > that hierarchy seemed relevant). The text log uses the built in custom > > txt trace. The other is actually a trace of Java function calls in an > > application that were taken using another infrastructure that I > > cobbled together using InTrace and UST. > > The java calls don't show the nesting. When function 2 is called from > function 1, no state is shown for function 1; if you want to gather > statistics about self + childs, you probably want to have a state for > "within a function but not at top level". In the VM case, several seem to be > active at a time, presumably because the physical machine has several > processors.
The model that I created has the ability to optionally track a stack of states for a given context. So, there is the ability to "switch context" on a given event, but then there is also the ability to push or pop context on events as well. The pushing and popping isn't used for the VM example that I sent, but for the java function tracing it is. The java function tracer has only two types of events, function enty and function exit, and each of those have a thread id and the name of the function being entered or exited. Given that, I needed to be able to "push" the context on the current thread on a function entry and pop the context on a function exit. Attached is the XML for the function tracer for reference. It is not very clean yet honestly as I have yet to take time to do a proper implementation using UST, so the event names and such are somewhat poor. The movement of the green values indicates which method/context is currently running for the current thread, and so there can only be one for a given thread. In the example I sent the screenshot for, run calls function1, which calls function2, which calls function3. Here is the code with irrelevant stuff snipped out: public void run() { int scratch = 0; try { scratch = function1(scratch); } catch (Exception e) { e.printStackTrace(); } } private int function1(int value) throws InterruptedException { Thread.sleep(1); int returnValue = function2(value); Thread.sleep(1); return returnValue; } private int function2( int value ) throws InterruptedException { Thread.sleep(1); int returnValue = function3(value); Thread.sleep(1); return returnValue; } private int function3( int value ) throws InterruptedException { value = value + (int)(System.currentTimeMillis() % 10); Thread.sleep(10); return value; } I think that I can see your point though, it would perhaps be useful to see explicitly which methods are upstack at a given moment. Next week I will try to create a different state/color for a function being "up stack" and see how that looks. Aaron
java-sequence.state-schema.xml
Description: XML document
_______________________________________________ linuxtools-dev mailing list linuxtools-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/linuxtools-dev