Assume Connected States in Thread view in ``Preview'' is selected, as soon as user clicks on the Display buttons in the ``View & Frame Selector'' window. A Time Lines window as shown in Figure 7 will pop up. Time Lines window provides a detailed display of the sppm's trace data as a GANTT chart with x-axis as time and y-axis as thread ID. The control buttons in the top panel provide zoom IN and OUT operations around the zoom focus which could be set by putting the cursor at the point of interest on the GANNT chart and press the key ``z''. In Figure 7, the zoom focus is marked by a white line drawn from top to botton of the diagram and is labeled as ZOOM LOCK in red.
After being zoomed in several times, the Time Line window looks like Figure 8. At this resolution, a lot more details are exposed. For instance, the MPI_Isend states which are in navy blue in the figure become noticeable. Clicking on any rectangle in the time line canvas will pop up a ``Rectangle Info'' box which contains various information regarding to the subroutine call, like start and end time of the call, various call arguments and instruction address(es) if there are any. Clicking on the ``Rectangle Info'' box again will remove the box from the screen. Also, clicking on the red circle at the end of the arrow will pop up a ``Arrow Info'' box which provides similar function as ``Rectangle Info''. In Figure 8, MPI_Isend, MPI_Irecv and MPI_Wait are all nested within the user defined state ``bdrys''. This suggests ``bdrys'', which is a user defined subroutine call, makes all these MPI calls. Also the regularity on the pattern of arrows provides insight to the end user of how data are exchanged.
There are several tricks and hidden operations that are worth mentioning. Firstly, it is the trick in locating small rectangles: since all the rectangles have white border surrounding them, when many small rectangles are next to each other in very low resolution, they form a completely white rectangle. A totally white rectangle usually means a lot more details are hidden inside. Secondly, a trick about scrolling: user can drag on the scroll tab to advance to later time, but it is slow when there are many threads with a lot of objects. In this scenario, it is recommended to click on the white space between the scroll tab and the end arrow tab in the direction that one would want to advance to. The operation will allow the redraw of the next time frame in the canvas to be carried out immediately. Thirdly, the label of the y-axis in Thread view is ( MPI-rank, local thread ID ), but it is different in different view. Because of the limited space on the canvas, the label of the y-axis is actually written in the tooltip of the two vertical y-axis label. The tooltip can be activated by simply putting the cursor over any y-axis integer doublet for few seconds. Fourthly, doubly click on any integer doublet label will invoke the ``Time Lines Manipulation'' window as shown in Figure 9. This window provides various operations on the selected time line. For instance, the adjustment of time line by changing the offset of the time line for alignment of rectangles, swapping different time lines for organizational purpose, ...
Fifthly, this trick is about the Definitions window which is located at the bottom of the Time Line window. The Definitions windows consists of a collection of definition panels. Each definition panel which has a checkbox and a definition button corresponds to each state/arrow in the Time Lines canvas. The Definitions window can be torn out of the Time Lines window as a standalone window or it can be re-attached to any one of the four side of the Time Lines window. This allows user to change the arrangement of the state and arrow definitions to optimize the use of the Time Lines canvas. All the states' and arrows' definitions are checked by default. Unchecking any of definitions will make the corresponding states or arrows invisible. The goal is to help the user to highlight what he/she is interesed in by hiding the uninteresting ones. Clicking on any of the definition buttons will bring up the histogram window of the corresponding state/arrow. For example, the forward arrow button will invoke the a window as shown in the Figure 10. The Histogram window provides basic statistics and statistical distribution of the duration of the selected state. The ``Blink States'' button enables the selected state/arrow in the Time Lines window to flash. Again the goal is to help to highlight the objects. Finally, worth mentioning about the memory demand for Time Line window. It is very high especially on Linux box, our experience seems to indicate that the amount of X server memory needed to have one instance of Time Lines window running is proportional to the size of the Time Lines window and the color depth of X server. If one plans to run multiple instances of Time Lines windows at the same time, be sure to have enough physical memory for the X server and Java Virtual Machine.