The first version of upshot was described in [Herrarte and Lusk 1991]. Since then, a number of enhancements have been added, primarily with the goal of allowing the tool to scale to an environment with hundreds or even thousands of processors.
Figure
shows a typical upshot display. It was the result of
issuing the command
../bin/upshot -l grid.16.log -s grid.sts
More generally, the command line operations and their meanings are as follows:
| Flag | Meaning | Valid Range |
| -l | log file name | string up to 250 chars |
| -logfile | log file name | string up to 250 chars |
| -s | state file name | string up to 250 chars |
| -statefile | state file name | string up to 250 chars |
| -ch | canvas height | 480 to 1000 |
| -cheight | canvas height | 480 to 1000 |
| -t | graph tasks | no value necessary |
| -tasks | graph tasks | no value necessary |
In addition, upshot accepts the usual Xt resource options. For example, to bring it up on a color display with black background, one might say
../bin/upshot -l sam_hyp.16.log -s roo.sts
-bg black -fg white -bd yellow
The main object in the upshot window is the central viewport onto the canvas showing the time lines of the processes. Each line represents events logged by and states of the process whose identifier appears along the left edge. Time elapsed since the time of the first event is shown along the bottom edge, with units described based on the assumption that the units given in the timestamp field in the logfile are microseconds. The current logfile and statefile are shown at the right.
One can scroll forward and backward in time using the two scrollbars at the top of the viewport and the buttons along the bottom edge of the window. The entire logfile is partitioned into pages, each consisting of a fixed number of events. Short files have only one page. A page is selected by clicking the left mouse button on its page number. Once a page is selected, it can be scrolled using the middle mouse button on either of the two scrollbars above the display. The page view scrollbar indicates the portion (both size and position) of the visible part of the page. The graph view scrollbar indicates the portion of the part of the canvas visible in the viewport, which is usually about ten times the width of the visible part. These two scrollbars behave the same unless the view has been zoomed in or out. Zooming changes the percentage of the page that is shown, thus changing the size of the page view scrollbar's thumb, but does not change the lower scrollbar, which remains a convenient size for scrolling back and forth in the canvas.
The buttons across the top provide further control of upshot's view.
The
2#2
and
3#3
buttons shrink or stretch the canvas
along the horizontal axis, allowing detailed separation of events down to the
microsecond level. When the horizontal scale changes, the left edge of the
viewport remains fixed. It is possible to zoom in or out too far, in which
case the initial scales can be restored by the
4#4
button. The zoom
factor can be modified by editing the
5#5
box. The zoom factor
should always be a positive integer.
The
6#6
button brings up a menu of display options. The
default is to display only states. Alternatives are to display only events
and to display both events and states. Events are displayed as in Figure
. The
7#7
button brings up a window for defining
a new state. The
8#8
button exits from upshot.
Selecting a specific event with the left mouse button pops up a small window containing all of the information in the logfile for the event, including the integer and string data items. The integer data item is additionally formatted with the format string logged as event type -10. If one uses the middle or right buttons instead, the data box will remain on the screen and can be moved around. It will disappear when selected with any mouse button.
Thus the first few lines of the logfile displayed by upshot in Figure
are as follows:
-2 0 0 8769 0 0
-3 0 0 17 0 0
-4 0 0 1 0 0
-5 0 0 6 0 0
-6 0 0 0 0 2781263066
-7 0 0 0 0 2791364419
-8 0 0 1 0 0
-1 0 0 0 0 2779321478 May21-90
-11 0 0 0 0 4294967295
-9 0 0 100 0 2779321670 create
-10 0 0 100 0 2779321734
-9 0 0 102 0 2779321791 sends
-10 0 0 102 0 2779321855
-9 0 0 101 0 2779321911 receive
-10 0 0 101 0 2779321970
-9 0 0 4 0 2779322027 working
-10 0 0 4 0 2779322090
-9 0 0 5 0 2779322148 end work
-10 0 0 5 0 2779322207
-9 0 0 6 0 2779322266 wait recv
-10 0 0 6 0 2779322328 works %d
.
.
.
.
6 15 0 0 0 2783527807 w init msg
6 14 0 0 0 2783544696 w init msg
102 0 0 2 0 2783546175 s init msg
6 12 0 0 0 2783561310 w init msg
4 1 0 0 0 2783570823 working
6 7 0 0 0 2783577774 w init msg
6 2 0 0 0 2783594067 w init msg
101 2 0 0 0 2783608861 r init msg
6 5 0 0 0 2783610683 w init msg
6 13 0 0 0 2783627479 w init msg
102 0 0 3 0 2783642790 s init msg
5 1 0 0 0 2783664655 done work
102 1 0 5 0 2783665466 row msg
Note that integer data and character data for an event are shown in popup data boxes, with the integer data formatted with the appropriate printf string.
Recent enhancements to upshot have been in the form of new windows that display the logfile in different ways.