1 %\documentclass[10pt,dvips]{article}
2 \documentclass[10pt
]{report}
3 \usepackage{../pplmanual
}
4 \usepackage[pdftex
]{graphicx}
6 %\usepackage[dvips]{graphicx}
7 %\usepackage[usenames,dvipsnames]{color}
8 %\usepackage[pdftex]{hyperref}
13 \DeclareGraphicsExtensions{.jpg,.pdf,.mps,.png
}
15 \DeclareGraphicsExtensions{.eps
}
19 \title{\projections{} Manual
}
22 By Mike DeNardo, Sid Cammeresi, Theckla Louchios, Orion Lawlor, Gengbin Zheng,
23 Chee Wai Lee, Isaac Dooley, and Sindhura Bandhakavi
29 \chapter{Generating Performance Traces
}
33 \subsection{Function-level Tracing for Adaptive MPI Applications
}
34 \label{sec::AMPI functions
}
36 Adaptive MPI (AMPI) is an implementation of the MPI interface on top
37 of
\charmpp{}. As with standard MPI programs, the appropriate semantic
38 context for performance analysis is captured through the observation
39 of MPI calls within C/C++/Fortran functions. Users can selectively begin
40 and end tracing in AMPI programs using the routines
\texttt{AMPI
\_Trace\_begin}
41 and
\texttt{AMPI
\_Trace\_end}. Unfortunately, AMPI's
42 implementation does not grant the runtime access to information about
43 user function calls. As a result, the tracing framework must provide
44 an explicit API for capturing this piece of performance information in
45 addition to MPI calls (which are known to the runtime).
47 The functions, similar to those used to capture user events, are as
53 int AMPI_Trace_register_function_name(const char *name);
55 This function registers an AMPI function
{\tt name
}. The tracing
56 framework assigns to function
{\tt name
} a unique id and returns
57 it. It is the user's responsibility to ensure that
{\tt name
} is
58 unique and consistent.
60 This registration function should be called near the start of the
61 application, just after
{\tt MPI
\_Init}.
65 int AMPI_Trace_register_function_id(const char *name, int idx);
67 This function registers an AMPI function
{\tt name
} to be associated
68 explicitly to the id
{\tt idx
}. It is the user's responsibility to
69 ensure that
{\tt name
} as well as
{\tt idx
} are unique and consistent.
70 The tracing framework returns
{\tt idx
}.
72 This is an alternative registration function and should be called near
73 the start of the application just after
{\tt MPI
\_Init}.
77 void AMPI_Trace_begin_function_name(const char *name);
79 This function tells the tracing framework to record a begin event
80 associated with the registered function
{\tt name
}. If this were called
81 in a C/C++ environment with pre-processor support, the line number of
82 the function call will also be recorded.
86 void AMPI_Trace_begin_function_id(int idx);
88 This function tells the tracing framework to record a begin event
89 associated with the registered function indexed by
{\tt idx
}. If this were
90 called in a C/C++ environment with pre-processor support, the line number
91 of the function call will also be recorded.
95 void AMPI_Trace_end_function_name(const char *name);
97 This function tells the tracing framework to record a end event
98 associated with the registered function
{\tt name
}.
102 void AMPI_Trace_end_function_id(int idx);
104 This function tells the tracing framework to record a end event
105 associated with the registered function indexed by
{\tt idx
}.
109 AMPI function events captured by the use of this API are recognized by
110 the visualization system and used for special AMPI-specific views in
111 addition to standard
\charmpp{} entry methods.
113 %\subsection{Tracing POSE Parallel Discrete Event Simulation Abstractions}
116 %Parallel Object-oriented Simulation Environment (POSE) is a parallel
117 %discrete event simulator (PDES) implemented on top of
118 %\charmpp{}. Understanding the performance of simulations conducted
119 %using POSE requires not just the performance of POSE as the \charmpp{}
120 %runtime system sees it (through entry methods), but also requires the
121 %understanding of PDES progress and degree-of-parallelism in real time
122 %as well as virtual time.
124 %As a result, POSE provides its own performance data format that the
125 %\projections{} visualization tool understands when a POSE simulation
126 %is executed with the {\tt +dop\_pose} runtime option. No additional
127 %user intervention is required.
131 \chapter{The
\projections{} Performance Visualization Tool
}
132 \label{sec::visualization
}
134 The
\projections{} Java-based visualization tool (henceforth referred
135 to as simply
\projections{}) can be downloaded from the
\charmpp{}
136 website at
\url{http://charm.cs.illinois.edu/software
}.
137 The directory which you download will henceforth be referred to
138 as
{\tt PROJECTIONS
\_LOCATION}.
140 \section{Building
\projections{}}
142 To rebuild
\projections{} (optional) from the source:
146 Make sure your PATH contains the JDK commands ``java'', ``javac'', and ``jar'',
147 as well as the build tools ``gradle'' and ``make''.
149 Make sure that your versions of java and javac are at least
1.5. Do this by running ``java -version'' and ``javac -version''. Also, make sure the environment variable JAVA
\_HOME is not pointing at an old version of java.
151 From
{\tt PROJECTIONS
\_LOCATION/
}, type ``make''.
153 The following files are placed in `bin':
155 {\tt projections
} : Starts projections, for UNIX machines
157 {\tt projections.bat
} : Starts projections, for Windows machines
159 {\tt projections.jar
} : archive of all the java and image files
162 \section{Visualization and Analysis using
\projections{}}
164 \subsection{Starting Up
}
165 \label{sec:startingUp
}
166 From any location, type: \\
167 {\tt > PROJECTIONS
\_LOCATION/bin/projections
[NAME.sts
]} \\
168 where
{\tt PROJECTIONS
\_LOCATION} is the path to the main projections
171 Available options to the visualization component of
\projections{} include:
175 {\tt -h or --help
}: displays help information about available options.
177 {\tt -V or --version
}: displays current
\projections{} version number.
179 {\tt -u or --use-version $<ver>$
}: overrides the data interpretation
180 behavior of
\projections{} to explicitly use $ver$ instead of the
181 current version. This is useful in scenarios where the latest version
182 of
\projections{} is not backward-compatible with older log formats.
184 {\tt -no-idle
}: tells
\projections{} to ignore idle time information
185 contained in the logs.
187 {\tt -bgsize $<x> <y> <z>$
}: tells
\projections{} to compute
188 additional derived information by assuming a logical
3-D Torus
189 topology with the specified dimensionality and a processor-to-torus
190 placement policy that matches
\charmpp's placement policy on the BG/L
191 class of machines. The presence of this option enables additional
192 communication visualization options (see later). Note that this option
193 is really meant to be used for logs generated from virtual-node mode
194 BG/L executions. The additional information derived from any other
195 logs would probably be misleading.
197 {\tt -print
\_usage}: tells
\projections{} to also write to standard
198 output the detailed graph numbers when viewing Usage Profiles (see
199 later). This is useful for generating visuals that are better
200 expressed by tools such as gnuPlot than through screen captures of
201 \projections{} plots.
204 Supplying the optional
{\tt NAME.sts
} file in the command line will
205 cause
\projections{} to load data from the file at startup. This shortcut
206 saves time selecting the desired dataset via the GUI's file dialog.
210 %\epsfig{figure=fig/front-with-summary.eps,height=4in}
211 \includegraphics[width=
4.0in
]{fig/front-with-summary
}
212 \caption{\projections{} main window
}
216 When
\projections{} is started, it will display a main window as shown
217 in figure
\ref{mainwindow
}. If summary (.sum) files are available in
218 the set of data, a low-resolution utilization graph (Summary Display)
219 will be displayed as shown. If summary files are not available, or if
220 \projections{} was started without supplying the optional
{\tt
221 NAME.sts
} file, the main window will show a blank screen.
227 {\bf File
} contains
3 options.
{\it Open File(s)
} allows you to
228 explicitly load a data set. This happens if you had not specified a
229 {\tt NAME.sts
} file in the command line when starting
\projections{}
230 or if you wish to explicitly load a new dataset. It brings up a
231 dialog box that allows you to select the location of the dataset you
232 wish to study. Navigate to the directory containing your data and
233 select the .sts file. Click on `Open'. If you have selected a valid
234 file,
\projections{} will load in some preliminary data from the
235 files and then activate the rest of the options under the menu item
236 {\bf Tools
}.
{\it Close current data
} currently works the same way
237 as
{\it Close all data
}. They unload all current
\projections{} data
238 so one can load in a new set of data. They will also deactivate the
239 individual items provided in the
{\bf Tools
} menu option.
241 {\bf Preferences
} generally allows you to set foreground or background
242 colors and entry method
color schemes. This is useful for configuring
243 the
color schemes of
\projections{} windows to be print-friendly.
245 {\bf Tools
} lists the set of available tools for analysis of generated
246 trace data. It will be described in great detail under section
247 \ref{sec::available tools
}.
250 %{\bf Summary Display}
252 The Summary Display loaded on the Main Window displays basic processor
253 utilization data (averaged across all processors) over time
254 intervals. This is provided by the data generated by the summary
255 tracemode. This view offers no special features over and above the
256 {\bf Standard Graph Display
} described in section
\ref{sec::misc
}.
257 Please refer the appropriate section on information for using
258 its available features.
260 %{\bf Summary Display Performance Issues}
262 There should not be any serious performance issues involved in the
263 loading of summary data on the main window.
265 \subsection{Available Tools
}
266 \label{sec::available tools
}
268 The following tools and views become available to you after a dataset
269 has been loaded (with the exception of Multirun Analysis) and may be
270 accessed via the menu item Tools:
274 The
{\bf Graphs
} view is where you can analyze your data by breaking it
275 into any number of intervals and look at what goes on in each of those
278 The
{\bf Timelines
} view lets you look at what a specific processor is
279 doing at each moment of the program. It is the most detailed view of a
280 parallel application
\projections{} offers (and correspondingly, the
281 most resource-hungry).
283 The
{\bf Usage Profile
} view lets you see percentage-wise what entry
284 methods each processor spends its time on during a specified time range.
285 It is particularly useful for identifying load imbalance and the probable
286 offending entry method.
288 The
{\bf Communication
} view is a general tool that presents
289 communication properties contributed by each entry point across the
292 The
{\bf Log File Viewer
} provides a human-readable, verbose
293 interpretation of a log file's entries.
295 The
{\bf Histograms
} view presents entry point or communication
296 histogram information (ie. the frequency of occurrence of events given
297 an activity property like time bin size or message size on the
300 The
{\bf Overview
} view gives user an overview of the utilization of
301 all processors during the execution. It is an extremely useful initial
302 tool to begin your performance analysis efforts with as it provides an
303 overall picture of application performance while being very
304 light-weight at the same time.
306 The
{\bf Animation
} view animates the processor usage over a specified
307 range of time and a specified interval size.
309 The
{\bf Time Profile Graph
} view is a more detailed presentation of
310 the
{\bf Graphs
} utilization view in that it presents the time
311 contribution by each entry point across the desired time
312 interval. While the
{\bf Graphs
} view can show the same data, it is
313 unable to stack the entry points, which proves useful in some cases.
316 \section{Performance Views
}
319 \label{sec::graph view
}
323 The Graphs window (see figure
\ref{graph
}) is where you can analyze your data by breaking it
324 into any number of intervals and look at what goes on in each of those
329 When the Graph Window first appears, a dialog box will also appear. It
330 will ask for the following information (Please refer to
331 \ref{sec::misc
} for information on special features you can
332 use involving the various fields)::
336 Processor(s): Choose which processor(s) you wish to visualize graph
339 Start Time : Choose the starting time of interest. A time-based field.
341 End Time : Choose the ending time of interest. A time-based field.
343 Interval Size : Determine the size of an interval. The number of intervals
344 will also be determined by this value (End Time - Start Time divided by
345 Interval Size). A time-based field.
348 Standard
\projections{} dialog options and buttons are also available
349 (see
\ref{sec::misc
} for details).
351 The following menu items are available:
355 {\bf File
} contains
2 options:
{\it Print Graph
} uses Java's built-in
356 print manager feature to render the tool's displays (usually to a printer
357 or a file depending on the platform on which Java is supported). Note that
358 the current implementation of the renderer does not behave in exactly the
359 same fashion as the screen renderer, so you should expect the output to look
360 somewhat different.
{\it Close
} simply closes the Graph window.
362 {\bf Tools
} contains
2 options:
{\it Set Interval Size
} reloads the dialog
363 box so you could select a new time range over which to view Graph data.
364 {\it Timeline
} is currently not implemented. Its intended as a convenient
365 way to load Timeline data (see section
\ref{sec::timeline view
}) over the
366 same parameters as the current Graph view.
369 %{\bf Tool Performance }
371 The amount of time to analyze your data depends on several factors,
372 including the number of processors, number of entries, and number of
373 intervals you have selected. A progress meter will show the amount of
374 data loaded so far. The meter will not, however,
report rendering
375 progress which is determined mainly by the number of intervals selected.
376 As a rule of thumb, limit the number of intervals to
1,
000 or less.
380 %\epsfig{figure=fig/graph.eps,height=4.3in}
381 \includegraphics[width=
4.3in
]{fig/graph
}
386 %{\bf Tool Features }
388 The Graph Window has
3 components in its display:
391 {\bf Display Panel
} (located : top-left area)
394 Displays title, graph, and axes. To the left is a y-axis bar for
395 detailed information involving the number of messages sent or time
396 executed depending on the
{\bf Control Panel
} toggle selected (see
397 below). To the right is a y-axis bar for average processor-utilization
398 information. The x-axis may be based on time-interval or per-processor
399 information depending on the appropriate
{\bf Control Panel
} toggle.
401 Allows you to toggle display between a line graph and a bar graph.
403 Allows you to scale the graph along the X-axis. You can either
404 enter a scale value $>=$
1.0 in the text box, or you can use the
405 $<<$ and $>>$ buttons to increment/decrement the scale by
.25.
406 Clicking on Reset sets the scale back to
1.0. When the scale is
407 greater than
1.0, a scrollbar will appear along the bottom of the
408 graph to let you scroll back and forth.
411 {\bf Legend Panel
} (located : top-right area)
414 Shows what information is currently being displayed on the graph and
415 what
color represents that information.
417 Click on the `Select Display Items' button to bring up a window to
418 add/remove items from the graph and to change the colors of the items:
421 The
{\bf Select Display Items
} window shows a list of items that you
422 can display on the graph. There are
3 main sections: System
423 Usage, System Msgs, and User Entries. The System Usage and System
424 Msgs are the same for all programs. The User Entries section
425 has program-specific items in it.
427 Click on the checkbox next to an item to have it displayed on the
430 Click on the colorbox next to an item to modify its
color.
432 Click on `Select All' to choose all of the items
434 Click on `Clear All' to remove all of the items
436 Click on `Apply' to apply you choices/changes to the graph
438 Click on `Close' to exit
442 {\bf Control Panel
} (located : bottom area)
445 Allows you to toggle what is displayed on the X-axis. You can either
446 have the x-axis display the data by interval or by processor.
448 Allows you to toggle what is displayed on the Y-axis. You can
449 either have the y-axis display the data by the number of msgs sent
450 or by the amount of time taken.
452 Allows you to change what data is being displayed by iterating
453 through the selections. If you have selected an x-axis type of
454 `interval', that means you are looking at what goes on in each
455 interval for a specific processor. Clicking on the $<<, <, >, >>$
456 buttons will change the processor you are looking at by either -
5,
457 -
1, +
1, or +
5. Conversely, if you have an x-axis of `processor',
458 then the iterate buttons will change the value of the interval that
459 you are looking at for each processor.
461 Allows you to indicate which intervals/processors you want to
462 examine. Instead of just looking at one processor or one interval,
463 the box and buttons on the right side of this panel let you choose
464 any number or processors/intervals to look at. This field behaves
465 like a processor field. Please refer to section
\ref{sec::misc
}
466 for more information about the special features on using processor
469 Clicking on `Apply' updates the graph with your choices. Clicking
470 on `Select All' chooses the entire processor range. When you
471 select more than one processor's worth of data to display, the
472 graph will show the desired information summed across all selected
473 processors. The exception to this is processor utilization data
474 which is always displayed as data averaged across all selected
479 \subsection{Timelines
}
480 \label{sec::timeline view
}
484 The Timeline window (see figure
\ref{timeline
}) lets you look at what
485 a specific processor is doing at each moment of the program.
489 %\epsfig{figure=fig/timeline.eps,height=3.8in}
490 \includegraphics[width=
3.8in
]{fig/timeline
}
491 \caption{Timeline Tool
}
497 When opening a Timeline view, a dialog box appears.
498 The box asks for the following information (Please refer to
499 \ref{sec::misc
} for information on special features you can
500 use involving the various fields):
504 Processor(s): Choose which processor(s) you want to see in the timeline.
506 Start Time : Choose what time you want your timeline to start at.
509 End Time : Choose what time you want your timeline to end at. A time-based
513 Standard
\projections{} dialog options and buttons are also available
514 (see
\ref{sec::misc
} for details).
517 The following menu options are available:
520 \item {\bf File
} contains
1 enabled option:
521 {\it Close
} simply closes the Timeline Window.
522 \item {\bf Tools
} contains
1 option:
{\it Modify Ranges
} opens the initial
523 dialog box thereby allowing you to select new set of processors or time duration
525 \item {\bf Colors
} contains options for loading, using, and modifying
color schemes.
{\it Change Colors
} functions in
526 a manner similar to the button of the same name described under control
527 panel information below.
{\it Save Colors
} allows you to save the current
528 color set to a file named ``
color.map'' into the same directory where your
529 data logs are stored. Note that the directory must have write permissions
530 for you before this can work. We are currently working on a more flexible
531 scheme for storing saved
color sets.
{\it Restore Colors
} allows you to
532 load any previously saved
color sets described above.
{\it Default Colors
}
533 resets the current
color set to the default set that
\projections{} assigns
534 without user intervention.
536 Other
color schemes are provided that can be used for some applications. The colors set as described above are the default coloring scheme. Other options for coloring the events are by event id (chare array index), user supplied parameter, or memory usage. In order to
color by a user supplied parameter such as timestep, the C function
\texttt{traceUserSuppliedData(int value);
} should be called within some entry methods. If such a method is called in an entry method, the entry method invocation can be colored by the parameter. The user supplied data can also be viewed in the tooltip that appears when the cursor hovers over an entry method invocation in the window. To
color by memory usage, the C function
\texttt{traceMemoryUsage();
} should be called in all entry methods. The call records the current memory usage. Red indicates high memory usage, and green indicates low memory usage. The actual memory usage can also be viewed in the tooltips that appear when the cursor is over an event. The memory usage is only available in when using a Charm++ version that uses gnu memory.
539 \item {\bf Screenshot
} contains
1 option:
540 {\it Save as JPG or PNG
} save the visible portion of the visualization
541 to an image file. You must choose a filename ending with a
\texttt{.png
}
542 or
\texttt{.jpg
} extension when choosing the location to save the image. The
543 appropriate filetype is chosen based on the chosen filename
544 extension. If the view is zoomed in, only the portion currently shown
549 The Timeline Window consists of two parts:
552 {\bf Display Panel
} (located: top area)
554 This is where the timelines are displayed and is the largest portion
555 of the window. The time axis is displayed at the top
556 of the panel. The left side of the
557 panel shows the processor labels, each containing a processor number and
558 two strange numbers. These two numbers represent the percentage of the
559 loaded timeline during which work occurs. The first of the two numbers
560 is the ``non-idle'' time, i.e. the portion of the time in the timeline
561 not spent in idle regions. This contains both time for entry methods
562 as well as other uninstrumented time spent likely in the Charm++
563 runtime. The second number is the percentage of the time used by the
564 entry methods for the selected range.
567 The timeline itself consists of colored bars for each event.
568 Placing the cursor over any of these bars will display information
569 about the event including: the name, the begin time, the end
570 time, the total time, the time spent packing, the number of messages it
571 created, and which processor created the event.
573 Left clicking on an event bar will cause a window to popup. This
574 window contains detailed information about the messages sent by the
577 Right clicking on an event bar will cause a line to be drawn to the
578 beginning of the event bar from the point where the message causing
579 the event originated. This option may not be applicable for threaded
580 events. If the message originated on a processor not currently
581 included in the visualization, the other processor will be loaded, and
582 then the message line will be drawn. A warning message will appear if
583 the message origination point is outside the time duration, and hence
584 no line will be drawn.
586 User events are displayed as bars above the ordinary
587 event bars in the display area. If the name of the user event contains a substring ``***'' then the bar will vertically span the whole screen.
589 Message pack times and send points can be displayed below the event
590 bars. The message sends are small white tick marks, while the message
591 pack times are small pink bars usually occurring immediately after the
592 message send point. If zoomed in to a point where each microsecond
593 takes more than one pixel, the message send point and the following
594 packing time may appear disconnected. This is an inherent problem with
595 the granularity used for the logfiles.
599 {\bf Control Panel
} (located: bottom area)
601 The controls in this panel are obvious, but we mention one here anyway.
603 View User Event - Checking this box will bring up a new
604 window showing the string description, begin time, end time and
605 duration of all user events on each processor. You can access
606 information on user events on different processors by accessing the
607 numbered tabs near the top of the display.
611 %\epsfig{figure=fig/userevent.eps,height=1.5in}
612 \includegraphics[height=
1.5in
]{fig/userevent
}
613 \caption{User Event Window
}
619 Various features appear when the user moves the mouse cursor over the
620 top axis. A vertical line will appear to highlight a specific
621 time. The exact time will be displayed at the bottom of the
622 window. Additionally a user can select a range by clicking while a
623 time is highlighted and dragging to the left or right of that
624 point. As a selection is being made, a vertical white line will mark
625 the beginning and end of the range. Between these lines, the
626 background
color for the display will change to gray to better
627 distinguish the selection from the surrounding areas. After a
628 selection is made, its duration is displayed at the bottom. A user can
629 zoom into the selection by clicking the ``Zoom Selected'' button. To
630 release a selection, single-click anywhere along the axis. Clicking
631 ``Load Selected'' when a selection is active will cause the timeline
632 range to be reloaded. To zoom out, the ``
\textless\textless'' or ``Reset'' button can be used.
635 To then zoom into the selected area via this interface, click on
636 either the ``Zoom Selected'' or the ``Load Selected'' buttons. The
637 difference between these two buttons is that the "Load Selected" zooms
638 into the selected area and discards any events that are outside the
639 time range. This is more efficient than ``Zoom Selected'' as the
640 latter draws all the events on a virtual canvas and then zooms into
641 the canvas. The disadvantage of using ``Load Selected'' is that it
642 becomes impossible to zoom back out without having to re-specify the
643 time range via the ``Select Ranges'' button.
645 Performance-wise, this is the most memory-intensive part of the
646 visualization tool. The load and zoom times are proportional to the
647 number of events displayed. The user should be aware of how event-intensive the application is
648 over the desired time-period before proceeding to use this view. If
649 \projections{} takes too long to load a timeline, cancel the load and
650 choose a smaller time range or fewer processors. We expect to add features to alleviate
651 this problem in future releases.
653 \subsection{Usage Profile
}
654 \label{sec::usage profile
}
655 The Usage Profile window (see figure
\ref{usage profile
}) lets you see
656 percentage-wise what each processor spends its time on during a
659 When the window first comes up, a dialog box appears asking for the
660 processor(s) you want to look at as well as the time range you want to
661 look at. This dialog functions in exactly the same way as for the Timeline
662 tool (see section
\ref{sec::timeline view
}).
666 %\epsfig{figure=fig/usageprofile.eps,height=4in}
667 \includegraphics[width=
4.0in
]{fig/usageprofile
}
668 \caption{Usage Profile
}
669 \label{usage profile
}
672 The following menu options are available in this view:
675 \item {\bf File
} has
2 options:
{\it Select Processors
} reloads the dialog
676 box for the view and allows you to select a new processor and time range
677 for this view.
{\it Print Profile
} currently does nothing. This will be
678 addressed in a later release of
\projections{}.
681 The following components are supported in this view:
685 {\bf Main Display
} (located: top area)
686 The left axis of the display shows a scale from
0\% to
100\%. The
687 main part of the display shows the statistics. Each processor is
688 represented by a vertical bar with the leftmost bar representing the
689 statistics averaged across all processors. The bottom of the bar
690 always shows the time spent in each entry method (distinguished by the
691 entry method's assigned
color) . Above that is always reported the
692 message pack time (in black), message unpack time (in orange) and idle
693 time (in white). Above this, if the information exists, are colored
694 bars representing communication CPU overheads contributed by each
695 entry method (again, distinguished by the same set of colors
696 representing entry methods). Finally the black area on top represents
697 time overheads that the
\charmpp{} runtime cannot account for.
699 If you mouse-over a portion of the bar (with the exception of the
700 black area on top), a pop-up window will appear telling you the name
701 of the item, what percent of the usage it has, and the processor it is
705 {\bf Control Panel
} (located: bottom area)
706 The panellets you adjust the scales in both the X and Y directions.
707 The X direction is useful if you are looking at a large number of
708 processors. The Y direction is useful if there are small-percentage
709 items for a processor. The ``Reset'' button allows you to reset the
712 The ``Pie Chart'' button generates a pie chart representation (see
713 figure
\ref{piechart
}) of the same information using averaged
714 statistics but without idle time and communication CPU overheads.
718 %\epsfig{figure=fig/piechart.eps,height=1in}
719 \includegraphics[width=
1.8in
]{fig/piechart
}
720 \caption{Pie Chart representation of average usage
}
724 The ``Change Colors'' button lists all entry methods displayed on the
725 main display and their assigned colors. It allows you to change those
726 assigned colors to aid in highlighting entry methods.
728 The resource consumption of this view is moderate. Load times and
729 visualization times should be relatively fast, but dismissing the tool
730 may result in a very slight delay while
\projections{} reclaims memory
731 through Java's garbage collection system.
735 \subsection{Communication
}
736 \label{sec::communication
}
738 The communication tool (see figure
\ref{communication
}) visualizes
739 communication properties on each processor over a user-specified time
742 The dialog box of the tool allows you to specify the time period
743 within which to load communication characteristics information. This
744 dialog box is exactly the same as that of the Timeline tool (see
745 section
\ref{sec::timeline view
}).
747 The main component employs the standard capabilities provided by
748 \projections{}' standard graph (see
\ref{sec::misc
}).
750 The control panel allows you to switch between the following
751 communication characteristics:
754 \item[-
] Number of Messages Sent by entry methods (initial default view);
755 \item[-
] Number of Bytes Sent by entry methods;
756 \item[-
] Number of Messages Received by entry methods;
757 \item[-
] Number of Bytes Received by entry methods;
758 \item[-
] Number of Messages Sent externally (physically) by entry methods;
759 \item[-
] Number of Bytes Sent externally (physically) by entry methods;
760 \item[-
] and Number of hops messages traveled before being received
761 by an entry methods. This is available when the runtime option
{\tt -bgsize
}
762 (See section
\ref{sec:startingUp
}) is supplied.
767 %\epsfig{figure=fig/commhistogram.eps,height=4in}
768 \includegraphics[width=
4.0in
]{fig/apoa1_512_CommProcessorProfile
}
769 \caption{Communication View
}
770 \label{communication
}
773 This view uses memory proportional to the number of processors selected.
775 \subsection{Communication vs Time
}
777 The communication over time tool (see figure
\ref{communication-time
})
778 visualizes communication properties over all processors and displayed
779 over a user-specified time range on the x-axis.
781 The dialog box of the tool allows you to specify the time period
782 within which to load communication characteristics information. This
783 dialog box is exactly the same as that of the Communication tool (see
784 section
\ref{sec::communication
}).
786 The main component employs the standard capabilities provided by
787 \projections{}' standard graph (see
\ref{sec::misc
}).
789 The control panel allows you to switch between the following
790 communication characteristics:
793 \item[-
] Number of Messages Sent by entry methods (initial default view);
794 \item[-
] Number of Bytes Sent by entry methods;
795 \item[-
] Number of Messages Received by entry methods;
796 \item[-
] Number of Bytes Received by entry methods;
797 \item[-
] Number of Messages Sent externally (physically) by entry methods;
798 \item[-
] Number of Bytes Sent externally (physically) by entry methods;
799 \item[-
] and Number of hops messages travelled before being received
800 by an entry methods (available only on trace logs generated on the
806 %\epsfig{figure=fig/commhistogram.eps,height=4in}
807 \includegraphics[width=
4.0in
]{fig/apoa1_512_CommTimeProfile
}
808 \caption{Communication View over Time
}
809 \label{communication-time
}
812 This view has no known problems loading any range or volume of data.
814 \subsection{View Log Files
}
816 This window (see figure
\ref{viewlog
}) lets you see a translation of a
817 log file from a bunch of numbers to a verbose version. A dialog box
818 asks which processor you want to look at. After choosing and pressing
819 OK, the translated version appears. Note that this is
{\it not
} a
820 standard processor field. This tool will only load
{\it exactly
} one
825 %\epsfig{figure=fig/viewlog.eps,height=4in}
826 \includegraphics[width=
2.5in
]{fig/viewlog
}
827 \caption{Log File View
}
833 \item[-
] a line number (starting at
0)
834 \item[-
] the time the event occurred at
835 \item[-
] a description of what happened.
838 This tool has the following menu options:
841 \item {\bf File
} has
2 options:
{\it Open File
} reloads the dialog box
842 and allows the user to select a new processor's data to be loaded.
843 {\it Close
} closes the current window.
844 \item {\bf Help
} has
2 options:
{\it Index
} currently does not do anything.
845 This will be addressed in a later release of
\projections{}.
{\it About
}
846 currently does not do anything. This will also be addressed in a later
847 release of
\projections{}.
850 The tool has
2 buttons. ``Open File'' reloads the dialog box (described
851 above) and allows the user to select a new processor's data to be loaded.
852 ``Close Window'' closes the current window.
854 \subsection{Histograms
}
856 This module (see figure
\ref{histogram
}) allows you to examine the
857 performance property distribution of all your entry points (EP). It
858 gives a histogram of different number of EP's that have the following
859 properties falling in different property bins:
861 The dialog box for this view asks the following information from the
862 user. (Please refer to
\ref{sec::misc
} for information on special
863 features you can use involving the various fields):
867 Processor(s): Choose which processor(s) you wish to visualize histogram
870 Start Time: Choose the starting time of interest. A time-based field.
872 End Time: Choose the ending time of interest. A time-based field.
874 Number of Bins: Select the number of property bins to fit frequency data
875 under. A simple numeric field.
877 Size of Bin: Determine (in units - microseconds or bytes) how large each
878 bin should be. A simple numeric field.
880 Starting Bin Size: Determine (in units - microseconds or bytes) how
881 far to offset the data. This is useful for ignoring data that is too
882 small to be considered significant, but could overwhelm other data
883 because of the sheer numbers of occurrences. A simple numeric field.
886 The dialog box reports the selection of bins as specified by the user
887 by displaying the minimum bin size (in units - microseconds or bytes)
888 to the maximum bin size. ``units'' refer to microseconds for time-based
889 histograms or bytes for histograms representing message sizes.
891 Standard graph features can be employed for the main display of this
892 view (see section
\ref{sec::misc
}).
894 The following menu items are available in this tool:
897 \item {\bf File
} offers
3 options:
{\it Select Entry Points
} currently
898 does nothing. It is intended to behave similarly to the button ``Select
899 Entries'' described below. This will be fixed in a later release of
900 \projections{}.
{\it Set Range
} reloads the dialog box and allows the
901 user to load data based on new parameters.
{\it Close
} closes the current
903 \item {\bf View
} provides
1 option:
{\it Show Longest EPs
} currently
904 does nothing. It is intended to behave similarly to the button
905 ``Out-of-Range EPs'' and will be fixed in a later release of
\projections{}.
908 The following options are available in the control panel in the form
912 \item[-
] Entry method execution time (How long did that entry method ran
914 \item[-
] Entry method creation message size (How large was the message
915 that caused the entry method's execution?)
920 %\epsfig{figure=fig/histogram.eps,height=4in}
921 \includegraphics[width=
4.0in
]{fig/histogram
}
922 \caption{Histogram view
}
926 The use of the tool is somewhat counterintuitive. The dialog box is
927 created immediately and when the tool window is created, it is
928 defaulted to a time-based histogram. You may change this histogram to
929 a message-size-based histogram by selecting the ``Message Size'' radio
930 button which would then update the graph using the same parameters
931 provided in the dialog box. This issue will be fixed in upcoming
932 editions of
\projections{}.
934 The following features are, as of this writing, not implemented. They
935 will be ready in a later release of
\projections{}.
937 The ``Select Entries'' button is intended to bring up a
color
938 selection and filtering window that allows you to filter away entry
939 methods from the count. This offers more control over the analysis
940 (e.g. when you already know EP
5 takes
20-
30ms and you want to know if
941 there are other entry points also takes
20-
30ms).
943 The ``Out-of-Range EPs'' button is intended to bring up a table
944 detailing all the entry methods that fall into the overflow (last)
945 bin. This list will, by default, be listed in descending order of time
946 taken by the entry methods.
948 The performance of this view is affected by the number of bins the
949 user wishes to analyze. We recommend the user limits the analysis to
952 \subsection{Overview
}
954 Overview (see figure
\ref{overview
}) gives users an overview of the
955 utilization of all processors during the execution over a
956 user-specified time range.
958 The dialog box of the tool allows you to specify the time period
959 within which to load overview information. This dialog box is exactly
960 the same as that of the Timeline tool (see section
\ref{sec::timeline
965 \subfigure[Overview
]{
966 \includegraphics[width=
3in
]{fig/apoa1_512_overview
}
969 \subfigure[Overview with dominant Entry Method colors
]{
970 \includegraphics[width=
3in
]{fig/apoa1_512_overviewEPColored
}
973 \caption{Different Overview presentation forms.
}
974 \label{overview forms
}
979 %\epsfig{figure=fig/overview.eps,height=4in}
980 %\includegraphics[width=4.0in]{fig/apoa1_512_overview}
987 %\epsfig{figure=fig/overview.eps,height=4in}
988 %\includegraphics[width=4.0in]{fig/apoa1_512_overviewEPColored}
989 %\caption{Overview with dominant Entry Method colors}
993 This tool provides support for the following menu options:
996 \item {\bf File
} provides
1 option:
{\it Close
} closes the current tool.
997 \item {\bf Modify
} provides
1 option:
{\it Set Range
} reloads the
998 dialog box and allows the user to specify new parameters for rendering
999 new overview information.
1002 The view currently hard codes the number of intervals to
7,
000
1003 independent of the time-range desired.
1005 Each processor has a row of colored bars in the display, different
1006 colors indicating different utilization at that time (White
1007 representing
100% utilization, shades of red representing other
1008 utilization (
100% < utilization < 0%) and the background color
1009 representing
0% utilization. Moving a mouse over the graph will invoke
1010 a display of the processor usage of the specific processor at the
1011 specific time in the status bar below the graph. Vertical and
1012 horizontal zoom is enabled by two zooming bars to the right and lower
1013 of the graph. Panning is possible by clicking on any part of the
1014 display and dragging the mouse.
1016 The ``by EP colors'' radio button provides more detail by replacing
1017 the utilization colors with the colors of the most significant entry
1018 method execution time in that time-interval on that processor
1019 represented by the cells (as illustrated in figure
1021 %Be warned that this particular view is very likely
1022 %a major visualization resource hog.
1024 The Overview tool uses memory proportional to the number of processors
1025 selected. If an out-of-memory error is encountered, try again by
1026 skipping processors (e.g.
{\tt 0-
8191:
2} instead of
{\tt
1027 0-
8191}). This should show the general application structure almost as
1028 well as using the full processor range.
1030 \subsection{Animations
}
1032 This window (see figure
\ref{animation
}) animates the processor usage
1033 over a specified range of time and a specified interval size.
1035 The dialog box to load animation information is exactly the same as
1036 that of the Graph tool (see section
\ref{sec::graph view
}).
1040 %\epsfig{figure=fig/animation.eps,height=3in}
1041 \includegraphics[width=
2.5in
]{fig/animation
}
1042 \caption{Animation View
}
1046 A
color temperature bar serves as a legend for displaying different
1047 processor utilization as the animation progresses. Each time interval
1048 will have its data rendered as a frame. A frame displays in text on
1049 the top of the display the currently represented execution time of the
1050 application and what the size of an interval is.
1052 Each selected processor is laid out in a
2-D plot as close to a square
1053 as possible. The view employs a
color temperature ranging from blue
1054 (cool - low utilization) to bright red (hot - high utilization) to
1055 represent utilization.
1057 You may manually update the frames by using the ``$<<$'' or ``$>>$''
1058 buttons to visualize the preceding or next frames respectively. The
1059 ``Auto'' button toggles automatic animation given the desired refresh
1062 The ``Frame Refresh Delay'' field allows you to select the real time
1063 delay between frames. It is a time-based field (see section
1064 \ref{sec::misc
} for special features in using time-based
1067 The ``Set Ranges'' button allows you to set new parameters for this
1068 view via the dialog box.
1070 This view has no known performance issues.
1072 \subsection{Time Profile Graph
}
1074 The Time Profile view (see figure
\ref{time profile
}) is a
1075 visualization of the amount of time contributed by each entry method
1076 summed across all processors and displayed by user-adjustable time
1079 Time Profile's dialog box is exactly the same as that of the Graph
1080 tool (see section
\ref{sec::graph view
}).
1084 %\epsfig{figure=fig/timeprofile.eps,height=4in}
1085 \includegraphics[width=
4.0in
]{fig/timeprofile
}
1086 \caption{Time Profile Graph View
}
1087 \label{time profile
}
1090 Standard graph features can be employed for the main display of this
1091 view (see section
\ref{sec::misc
}).
1093 Under the tool options, one may:
1096 \item[-
] Filter the set of entry methods to be displayed on the graph via
1097 the ``Select Entry Points'' button. One may also modify the
color set used
1098 for the entry methods via this option.
1099 \item[-
] use the ``Select New Range'' button to reload the dialog box
1100 for the tool and set new parameters for visualization (eg. different
1101 time range, different set of processors or different interval sizes).
1102 \item[-
] store the current set of entry method colors to disk (to the
1103 same directory where the trace logs are stored). This is done via the
1104 ``Save Entry Colors'' button.
1105 \item[-
] load the stored set of entry method colors (if it exists)
1106 from disk (from the same directory where the trace logs are
1107 stored). This is done via the ``Load Entry Colors'' button.
1110 Time Profile also reacts to the presence of data about AMPI
1111 functions (See section
\ref{sec::AMPI functions
}). When such data is
1112 detected, an extra tabbed window displays a graph similar to entry
1113 method profiles, but for AMPI functions only.
1115 This tool's performance is tied to the number of intervals desired by
1116 the user. We recommend that the user stick to visualizing
1,
000
1119 \subsection{User Events Profile
}
1121 The User Events view is essentially a usage profile (See section
1122 \ref{sec::usage profile
}) of bracketed user events (if any) that were
1123 recorded over a specified time range. The x-axis holds bars of data
1124 associated with each processor while the y-axis represents the time
1125 spent by each user event. Each user event is assigned a
color.
1129 \includegraphics[width=
4.0in
]{fig/apoa1_128_userEventsView
}
1130 \caption{User Events Profile View
}
1131 \label{user event profile
}
1134 It is important to note that user-events can be arbitrarily
1135 nested. The view currently displays information based on raw data
1136 without regard to the way the events are nested. Memory usage is
1137 proportional to the number of processors to be displayed.
1139 \subsection{Outlier Analysis
}
1140 \input{View_Outlier
}
1142 \subsection{ Online Live Analysis
}
1143 \input{ccs_streaming
}
1144 \subsection{Multirun Analysis
}
1146 \subsection{Function Tool
}
1147 \label{sec::function tool
}
1148 The Function Tool view presents a graph that is a usage profile (See
1149 section
\ref{sec::usage profile
}) of AMPI function information. This
1150 view allows the analyst to choose to display the time spent by each
1151 function or the number of calls made over the selected time range.
1153 In the case of AMPI functions, the events are properly nested. The
1154 information displayed is currently that of
{\em inclusive time
}
1155 (i.e. if function B's calls are nested within function A's, the time
1156 spent in function B contribute to both function B's and function A's
1157 displayed performance information). There are plans to implement the
1158 presentation of AMPI function information based on
{\em exclusive
1159 time
} (i.e. time within functions are computed by subtracting the
1160 measured time spent minus the time spent by any calls to nested
1163 %\subsection{POSE Analysis}
1165 \subsection{AMPI Usage Profile
}
1167 The AMPI Usage Profile view presents a graph similar to Function
1168 Tool's (See section
\ref{sec::function tool
}) with several
1172 \item In it's per-processor mode, displayed via the tabbed window
1173 ``Per Processor'', the information displayed includes the time spent
1174 by other events outside of AMPI. This is displayed as a white bar
1175 marked ``Others'' when moused-over. This allows the analyst to compare
1176 the time spent by events within AMPI functions along with other
1177 recorded events. In contrast, Function Tool shows only AMPI function
1179 \item In it's per-function mode, displayed via the tabbed window ``Per
1180 Function'', the information is displayed with each bar on the x-axis
1181 showing the percentage utilization for a different AMPI function.
1184 \input{View_NoiseMiner
}
1186 \section{Miscellaneous features
}
1189 \subsection{Standard Graph Display Interface
}
1191 A standard graph display (an example of which can be found with the
1192 Main Summary Graph - figure
\ref{mainwindow
}) has the following
1196 \item[-
] {\bf Graph types
} can be selected between ``Line Graph'' which
1197 connects each data point with a colored line representing the
1198 appropriate data entry. This information may be ``stacked'' or
1199 ``unstacked'' (controlled by the checkbox to the right). A ``stacked''
1200 graph places one data point set (Y values) on top of another. An
1201 ``unstacked'' graph simply uses the data point's Y value to directly
1202 determine the point's position; ``Bar Graph'' (the default) which
1203 draws a colored bar for each data entry and the value of the data
1204 point determines its height or starting position (depending on whether
1205 the bar graph is ``stacked'' or ``unstacked''). A ``Bar Graph''
1206 displayed in ``unstacked'' mode draws its bars in a tallest to
1207 shortest order so that the large Y values do not cover over the small
1208 Y values; ``Area Graph'' is similar to a ``Line Graph'' except that the
1209 area under the lines for a particular Y data point set is also colored
1210 by the data's appropriate
color. ``Area Graph''s are always stacked.
1211 \item[-
] {\bf x-scale
} allows the user to scale the X-Axis. This can be
1212 done by directly entering a scaling factor in the text field (simple
1213 numeric field - see below) or by using the ``$<<$'' or ``$>>$'' buttons
1214 to increase or decrease the scale by
0.25 each time. The ``Reset'' button
1215 changes the scale factor back to
1.0. A scrollbar automatically appears
1216 if the scale factor causes the canvas to be larger than the window.
1217 \item {\bf y-scale
} allows the user to scale the Y-Axis. This functions
1218 similarly to the
{\bf x-scale
} feature where the buttons and fields are
1222 \subsection{Standard Dialog Features
}
1226 %\epsfig{figure=fig/standard_dialog.eps,height=4in}
1227 \includegraphics[width=
2.5in
]{fig/standard_dialog
}
1228 \caption{An example Dialog with standard fields
}
1229 \label{standard dialog
}
1232 Figure
\ref{standard dialog
} shows a sample dialog box with standard
1233 features. The following are standard features that can be employed in
1237 \item[-
] {\bf Moving from field to field
} via the tab key causes the
1238 dialog box update the last field input by the user. It also performs a
1239 consistency check. Whenever it finds an inconsistency, it will move
1240 mouse focus onto the offending field, disabling the ``OK'' button so
1241 as to force the user to fix the inconsistency. Examples of
1242 inconsistency includes: input that violates a field's format; input
1243 whose value violates constraints (eg. start time larger than end
1244 time); or out-of-range stand-alone values.
1245 \item[-
] {\bf Available buttons
} include ``OK'' which confirms the
1246 user's choice of parameters. This button is only activated if the
1247 dialog box considers the parameters' input to be
1248 consistent. ``Update'' causes the dialog box to update the last field
1249 input by the user and perform a consistency check. This is similar in
1250 behavior to the user
tabbing between fields. ``Cancel'' closes the
1251 dialog box without modifying any parameters if the tool has already
1252 been loaded or aborts the tool's load attempt otherwise.
1253 \item[-
] {\bf Parameter History
} allows the user to quickly access
1254 information for all tools for a set of frequently needed time
1255 periods. An example of such a use is the desire by the analyst to view
1256 a particular phase or timestep of a computation without having to
1257 memorize or write on a piece of paper when exactly the phase or
1260 It consists of a pull-down text box and
2 buttons. ``Add to History
1261 List'' adds the current time range to the pull-down list to the left
1262 of the button. The dialog box maintains up to
5 entries, replacing
1263 older entries with newer ones. ``Remove Selected History'' removes the
1264 currently selected entry in the history list. ``Save History to Disk''
1265 stores current history information to the file ``ranges.hst'' in the
1266 same directory where your logs are stored. Note that you will need
1267 write access to that directory to successfully store history
1268 information. A more flexible scheme is currently being developed and
1269 will be released in a later version of
\projections{}. Clicking on the
1270 pull-down list allows the user to select one out of up to
5 possible
1271 time ranges. You can do so by moving the mouse up or down the
1272 list. Clicking on any one item changes the start and end times on the
1276 \subsection{Data Fields
}
1278 Throughout
\projections{} tools and dialog boxes (see sample figure
1279 \ref{standard dialog
}), data entry fields are provided. Unless
1280 otherwise specified, these can be of the following standard field with
1281 some format requirements:
1284 \item[-
] {\bf Simple numeric fields
}: An example can be found in
1285 figure
\ref{standard dialog
} for ``Number of Bins:''. This field expects
1287 \item[-
] {\bf Time-Based Field
}: An example can be found in figure
1288 \ref{standard dialog
} for ``Start Time:''. This field expects a single
1289 simple or floating point number followed by a time-scale modifier. The
1290 following modifiers are supported:
{\it none
} - this is the default
1291 and means the input number represents time in microseconds. A whole
1292 number is expected;
{\it The characters ``us''
} - the input number
1293 represents time in microseconds. A whole number is expected;
{\it The
1294 characters ``ms''
} - the input number represents time in
1295 milliseconds. This can be a whole number or floating point number; or
1296 {\it The character ``s''
} - the input number represents time in
1297 seconds. This can be a whole number or floating point number.
1298 \item[-
] {\bf Processor-Based Field
}: An example can be found in
1299 figure
\ref{standard dialog
} for ``Processors:''. This field expects a
1300 single whole number; a list of whole numbers; a range; or a mixed list
1301 of whole numbers and ranges. Here are some examples which makes the
1304 eg: Want to see processors
1,
3,
5,
7: Enter
{\tt 1,
3,
5,
7}
1306 eg: Want to see processors
1,
2,
3,
4: Enter
{\tt 1-
4}
1308 eg: Want to see processors
1,
2,
3,
7: Enter
{\tt 1-
3,
7}
1310 eg: Want to see processors
1,
3,
4,
5,
7,
8: Enter
{\tt 1,
3-
5,
7-
8}
1312 Ranges also allow skip-factors. Here are some examples:
1314 eg: Want to see processors
3,
6,
9,
12,
15: Enter
{\tt 3-
15:
3}
1316 eg: Want to see processors
1,
3,
6,
9,
11,
14: Enter
{\tt 1,
3-
9:
3,
11,
14}
1318 This feature is extremely flexible. It will normalize your input to a
1319 canonical form, tolerating duplication of entries as well as
1320 out-of-order entries (ie.
{\tt 4,
6,
3} is the same as
{\tt 3-
4,
6}).
1323 \section{Known Issues
}
1324 \label{sec::known issues
}
1326 This section lists known issues and bugs with the
\projections{}
1327 framework that we have not resolved at this time.
1331 \charmpp{} scheduler idle time is known to be incorrectly recorded on
1332 the BG/L machine at IBM TJ Watson.
1334 End-of-Run analysis techniques (while tracing applications) are
1335 currently known to hang for applications that make multiple calls to
1336 traceBegin() and traceEnd() on the same processor through multiple