Logo: lash (lambda hash)

Eden Trace Viewer (EdenTV)


  1. What is EdenTV?
  2. What views does EdenTV provide?
  3. What do the colours of the diagram bars mean?
  4. What do the states of the logical units mean?
  5. What about process communication?
  6. What other information does EdenTV display?
  7. What are EdenTV events?
  8. What to do with misaligned traces?
  9. What other features do exist?

What is EdenTV?

The Eden Trace Viewer (or simply EdenTV) is a tool that can generate diagrams to visualize the behaviour of Eden programs. Here comes an example:


This is an Machine-view diagram generated by EdenTV. You can see how 8 machines have worked together in parallel to solve a problem.

Sometimes the parallel programs do not perform as good as we expect, and the reasons are unknown. The goal of EdenTV is to show the Eden programmers what really happens inside the parallel machines during a program execution, so they can discover reasons for the inefficiency. The motivation of this tool is to provide execution information in order to solve runtime problems, showing this information in an intuitive way.

EdenTV recognizes trace files created by the Eden Runtime System during the execution of the Eden programs. The creation of trace files happens automatically thanks to an extension of the compiler code, so the programmer must not care about it. After the execution of the program the trace file is ready to be analyzed by EdenTV, which creates several diagrams and displays related information.

After starting the program, you are presented with the main EdenTV window, from which you can open *.parevents tracefiles by clicking the "Open" button. edentv_main.png

The first version of EdenTV is the result of a Master Thesis written at the Fachbereich Mathematik und Informatik of the Philipps Universität Marburg.

What views does EdenTV provide?

The current version of EdenTV provides principally three different main views: Machines, Processes and Threads. The views show a horizontal bar for each logical unit (machine, process or thread) that has taken part in the execution. The execution time is projected on the X-axis. The colour of the bars changes depending on the state on which the logical unit is. In these diagrams, the logical units are arranged by the ID they have had during the execution: the smaller is the ID, the nearer to the X-axis is the corresponding bar. Supplemental reordering of the displayed logical units is possible via Drag'n'Drop or sort-buttons.

Besides of the three main views, EdenTV provides an additional view: Processes/Machines, which shows the same bars as the Processes view, but processes on the same machine are grouped together.

To switch between the views, just select the desired view in the "View Drop-Down-Box".

What do the colours of the diagram bars mean?

The bars in the diagrams are composed by segments which come in different colours. The colours say us the state in which the logical unit was during a time period. The next table explains the relationship between colours and logical unit states used by EdenTV:

Machine Process Thread
Blue Idle
(TotalProcesses = 0)
(Total Threads = 0)
Yellow System Time
(threads runnable)
(at least one thread)
Green Running
(one thread)
(one thread)
Red Blocked
(all threads)
(all threads)

* Theoretically, a process can never have no threads, but the Eden Runtime System allows this state in its implementation.


Note: Those are the default colors when starting EdenTV. You can change the colors to your liking in the main window.

What do the states of the logical units mean?

An Eden process, as a purely conceptual unit, consist of a number of threads which share a common graph heap. For the Eden Runtime System, the threads are the basic unit for the implementation, and they can be in four states:

The thread is ready to run, but other thread runs currently.
A runnable thread waits into a queue with other runnable threads until the Eden Runtime System changes their states.
The thread runs currently.
The thread can not run because it needs a result of any other thread to finish its calculations.
When the awaited value arrives, the thread goes to state runnable.
The Eden Runtime System thread terminates a thread whether the thread has calculated its output or the output of the thread is not needed anymore.
EdenTV does not assign a colour for this state.

The state of a process depends of the state of its threads. If a thread of the process is in state running, the process is in state running. If all threads of the process are in state blocked, the process is in state blocked. Otherwise the process must have any runnable thread (and no running thread), and so is it in state runnable.

A machine is in state idle when no process of the executed program runs in it. The meaning of the other states is the same as for a process.

What about process communication?

EdenTV is also capable to show the exchange of messages between machines and processes. Messages are represented as black arrows which point from the sending unit to the receiving unit. To show the communications, just click the "Messages" button in the toolbar.

edentv_messages.png Example of process communication. The trapezoid shapes are used to group multiple messages in order to prevent cluttering.

(click on a capture to see it better)

Tip: edentv_confmsg.png When too many messages obscure your view, you should click the "Configure Msgs." button. In this dialog you can enable/disable drawing incoming/outgoing messages for each individual process.

What other information does EdenTV display?

In the middle of the toolbar you will find an "Info" button which displays a dialog with additional data in text format. The four tabs display statistical information in general and seperated for each logical unit.


The process-tree from a karatsuba tracefile.

What are EdenTV events?


EdenTV reads trace files generated by the Eden Runtime System and builds the diagrams from them. Concretely, the trace files contain relevant events occurred during the execution of a program. EdenTV interpret these events to paint the bar segments with the right colour. To inquire what event has occurred in a certain time point of the execution, click the right mouse button.  Here is a table with all events supported by EdenTV:

Start Machine New Process New Thread Run Thread Block Thread Send Message
End Machine Kill Process Kill Thread Suspend Thread Deblock Thread Receive Message

What to do with misaligned traces?

If your traces are displayed incorrectly, this is usually because the system clocks of the machines do not run synchronously. To compensate for that, you have the ability to align the views on the machine-startup event. To do so click the "Startup Sync." button.

What other features do exist?

You can enable a marker, which will follow your mouse cursor, to quickly spot time differences. To enable/disable the Marker click the menu entry "View->Show Marker"

Configure ticks on X-axis:
When the standard ticks just aren't sufficient, you can manually override the automatic behaviour. In the first field enter a time value at which ticks should be drawn. Use the second field to specify when a timestamp should be written next to the tick. The "auto" checkbox enables/disables the automatic behaviour.
You can open this dialog by clicking on "View->Configure Ticks"

Zoom to a specific time range:
If you want to display only a certain time range of the trace, click on "View->Configure Ticks" and enter the desired start/end-values in seconds. After a click on the "Show" button the current view zooms to this range.

A last question: why all questions begin with "What"?

Yes, I did it on purpose. I thought it would be cooler.

Philipps-Universität Marburg

Eden - Parallel Functional Programming. E-Mail
Fb. 12 - Mathematik und Informatik, Hans-Meerwein-Straße, D-35032 Marburg

This page: http://www.mathematik.uni-marburg.de/~eden

Last change: 14/06/12