gridglview: A Grid Visualization Application


gridglview - An OpenGL based Grid Visualization Application


Written by Neill Miller under the guidance of Jennifer Schopf.

Warning: This information is only a draft and is currently unofficial. The code, and all of the information may change in the future.

Current Release: gridglview 0.1.0

Download Win32 binary here. (win32gridglview-0.1.0.zip)

Download source code here. (gridglview-0.1.0.tar.gz)

Known Limitations: Flat rendering mode in Win32 does not work properly (Flat-Random and Depth Circle rendering modes are OK).

Screenshots:

Screenshot 1 (Depth Circle Render Mode)
Screenshot 2 (Flat-Random Render Mode)
Screenshot 3 (Depth Circle Render Mode)


The purpose of gridglview is to help visualize pieces of the "grid".


Online Support

What is the Grid?
What does the Grid Infrastructure look like?
What's the point of a Grid visualization application?
Ok, I buy it. How do I run this?
GNU/Linux Instructions
Win32 Instructions
Understanding the GNU/Linux commands
Understanding the Win32 command line arguments
Generating Input Files for gridglview
Understanding the provided Run-time options
What is the HUD?
What are the available render modes?
What are the viewports?
How does gridglview color nodes by CPU/MEM/Disk/OS?



What is the Grid?


According to http://globus.org/about/faq/general.html#grid

"The Grid refers to an infrastructure that enables the integrated, collaborative use of high-end computers, networks, databases, and scientific instruments owned and managed by multiple organizations. Grid applications often involve large amounts of data and/or computing and often require secure resource sharing across organizational boundaries, and are thus not easily handled by today's Internet and Web infrastructures."

What does the Grid infrastructure look like?


This is the purpose of gridglview. This program gives a user a graphical representation of what the Grid looks like at a particular point in time. It shows a representation of the Grid's shape, hierarchy, and possibly some specific characteristics of each of the nodes in the Grid (such as CPU Free, MEM Free, Disk space Free, or OS type). Seeing a representation of the Grid infrastructure can provide a data point with which to compare and contrast other system or network based infrastructures.

What's the point of a Grid visualization application?


At an arbitrary time, it may be beneficial to view certain characteristics of a grid. gridglview can provide much information about a grid. For example: Which nodes are currently responding? Which nodes are "sub nodes" of node A? Which nodes are "super nodes" of node "B"? Across the entire grid, how many nodes are running Operating system "X"? Across the entire grid, how many nodes have more than 50% of un-utilized CPU?

While it's true that this information can be gathered with direct queries against the MDS, gridglview provides the information in such a way that a quick glance can give you a good idea of exactly the information that you may be looking for.

A graphical application may also be useful for live demonstrations or grid-related presentations.

Ok, I buy it. How do I run this?


Currently, the application has been tested on GNU/Linux and Win32 based systems.

NOTE: You are required to have OpenGL support on your system as well as the GLUT libraries. Currently, gridglview uses GLUT for windowing and basic architecture operation. This may be changed at a later date as I believe that a more stream-lined 'game loop' will lead to better overall application performance.

GNU/Linux instructions:

To run the application, first you must download and compile the source tarball release as follows:
tar -xvzf gridglview-X.X.X.tar.gz
cd gridglview/
./configure
make
make install [optional, may require root priviledge]
A binary file called "gridglview" will be generated if these steps do not encounter any problems on your system. To run the application, change directories to where the binary is located and type "./gridglview".

Win32 instructions:

Download the
binary release and run it!

Then read about the Win32 command line arguments.

Understanding the GNU/Linux Command Line Arguments


When you run gridglview with no arguments, you will see information similar to the following:
Usage: gridglview -f  [OPTIONS]

Available command line options:
-f, --file       : (required) used to specify an input file
-v, --version    : prints the version to stdout and exits
-h, --help       : prints this help message and exits
--viewmode [0-3] : start the program with the specified window dimensions
                   0 (320,240) | 1 (640,480) | 2 (800,600) | 3 (1024,768)
The only required argument for getting gridglview to run is an input file. The input file format is that of a grid-info-search query. This means that the saved LDIF that is the output of grid-info-search is the input for gridglview. See the section titled "Generating Input Files" for examples on how to create simple and advanced input files. To specify an input file, use either the "-f" or the "--file" option. For example:
./gridglview -f input.ldif
OR
./gridglview --file input.ldif
The "-v" and "--version" options are provided for determining which version of gridglview is available on your system.

The "-h" and "--help" options are provided for displaying the help information for your particular version of gridglview. You can run this to view which command line arguments are accepted. These may differ with later versions.

The "--viewmode" argument is provided to allow you to specify a window size on startup of gridglview. If you use the "--viewmode" option, a number between 0 and 3 must follow it to specify which resolution to use.

Understanding the Win32 Command Line Arguments


Under Win32 based system, you have much fewer command line arguments to deal with. If no command line arguments are specified, the application will run normally and monitor an input file called "input.ldif" which must be in the same directory as the binary.

Alternatively, you may specify an input file by using the "-f" option which requires a filename to follow it.

Generating Input Files for gridglview


To generate a file suitable for input to gridglview, you must have a GIIS or GRIS available for querying as well as the "grid-info-search" utility provided by the Globus Toolkit. For the examples, I will use the publicly available Globus provided GIIS server: giis.globus.org

A Simple Input File example:

The following command will query giis.globus.org and return all of the host names of each of the nodes in the grid. This will allow gridglview to show what the grid looks like (according to giis.globus.org) and will associate the host name with each node that is drawn.
grid-info-search -c -h giis.globus.org -p 2135 -b "mds-vo-name=vo-index,o=grid" "(objectclass=mdshost)" mds-host-hn -LLL
> input.ldif
A Complex Input File example:

The following command will query giis.globus.org and return all of the host names, cpu-total-free, cpu-total-counts, memory-ram-total-free, memory-ram-total-size, filesystem-freemb, filesystem-size in mb, and OS names of each of the nodes in the grid. This is similar to the simple example, except a lot more data for each node is associated with each node drawn. The extra data is useful for some of the different characteristics which can be seen at run-time. See the section "Understanding the provided Run-time options" for mode information.
grid-info-search -x -h giis.globus.org -p 2135 -b
"mds-vo-name=vo-index,o=grid" "(objectclass=mdshost)" mds-host-hn
mds-cpu-total-free-15minx100 mds-cpu-total-count
mds-memory-ram-total-freemb mds-memory-ram-total-sizemb
mds-fs-total-freemb mds-fs-total-sizemb mds-os-name -LLL > input.ldif
Understanding the provided Run-time options


gridglview contains many run-time options for viewing the Grid as gathered by the LDIF data provided as input. Each run-time option is triggered by pressing a single key on the keyboard, or left or right clicking the mouse button at a certain time. Here is a list of what the run-time options are:

Keyboard run-time options:

'q' : will terminate the application ESC : will terminate the application 'a' : will translate the camera in the negative Z direction 'z' : will translate the camera in the positive Z direction 'd' : will translate the camera in the negative X direction 's' : will translate the camera in the positive X direction 'y' : will translate the camera in the negative Y direction 'h' : will translate the camera in the positive Y direction 'r' : will reset the camera to the initial position 'm' : will switch to the next render mode '1' : will color each node by amount of CPU Free '2' : will color each node by amount of Memory Free '3' : will color each node by amount of Disk space free '4' : will color each node by Operating System type '+' : will cycle through available viewports (window sizes) '-' : will cycle through available viewports (window sizes) 'f' : will toggle fullscreen mode LEFT ARROW : will rotate the camera in the negative Y direction RIGHT ARROW: will rotate the camera in the positive Y direction UP ARROW : will rotate the camera in the negative X direction DOWN ARROW : will rotate the camera in the positive X direction PAGE UP : will scroll the data shown in the HUD by one page up PAGE DOWN : will scroll the data shown in the HUD by one page down

Mouse run-time options:

Left-click : will select the node under the mouse and display the associated LDIF information in the HUD. will also cause any children of the selected node to be displayed. If a selected node is clicked on, it will be hidden in a recursive manner. (All children will be hidden as well as their children, etc) Right-click: will recursively perform the action of the 'left-click'.


What is the HUD?


The hud is the area between the red bounding box near the bottom of the screen. This terminology is taken from Game Programming where the HUD stands for the "Heads Up Display". The textual data shown in the HUD is LDIF data associated with each node (as gathered from the input LDIF file). If there are too many lines to display on the screen at one time, you can use the page-up and page-down keys to scroll through the text. It is possible to page-down many times past the text, so be sure to page back up if you'd like to continue viewing the textual information in the HUD.

What are the available render modes?


There are currently three ways to represent the data based on the same input data. Each of these three are called "render modes". They are as follows:

Flat: Shows all grid nodes in a flat hierarchy, where all nodes are at the same depth level.

Flat Random: Shows all grid nodes at random positions on the screen, all at the same depth level.

Depth Circles (default): Shows all grid nodes in a 3D circular hierarchy where Z-values for the parent nodes are less than the Z-values for their children (i.e. parents are towards the back of the screen and children are towards the front of the screen). Each child of the parent is arranged in a circle around the parent at a higher Z value. This happens to be the most interesting of the three displays. All siblings are at the same depth level.

What are the viewports?


The viewports are different sized windows. There are several viewports available such as 320x240, 640x480, 800x600, and 1024x768. These viewports can be cycled through with the '+' and '-' keys at run-time, meaning that the entire window can be resized dynamically. The '+' key always moves to the next largest viewport unless it is already the largest (in which case it wraps around to the smallest viewport). Similarly, the '-' always moves to the next smallest viewport unless it is already the smallest (in which case it wraps around to the largest viewport). Optionally, the application be be run fullscreen by pressing the 'f' key at run-time. Pressing 'f' while the application is in fullscreen mode will cause the viewport to be changed back to the first available one. (i.e. 320x240)

How does gridglview color nodes by CPU/MEM/Disk/OS?


gridglview has built in code to look for specific attributes of each node if they are provided by the LDIF input file. If you used the complex query (shown above) to generate an input file, each node contains all of the information required to display nodes differently based on CPU free, MEM free, Disk free, or Operating System type. These colorings can be enabled at run-time by using the '1', '2', '3', or '4' key as listed above.

If this information is not available in the input LDIF file (as is the case for the simple query shown above), then these colorings cannot work properly. Pressing the keys for coloring by different attributes will have no effect on the current visualization.