Gr_monitor, a 3D process monitor


2007-10-07 - added a -tcp hostname:port option to allow the gr_monitor program to read XML input from a socket. This was at the request of Paul Millar, so that the gr_monitor front end could accept input from the MonAMI universal sensor framework.

This new version is available as a tarball here.

Note the procfs reading gr_gather backend doesn't work with the latest kernels. So Paul's MonAMI or my own script based backends are the only ones that work on newer kernels. It should be possible to extract the procfs reading code from the procps code and use it to update gr_gather - but I haven't time to do this just now.

This version has been modified to build with the glx libraries.

I'm not doing any active development on gr_monitor - if anyone wants to pick it up and run with it, drop me a line.

Gr_Monitor displays a series of datasets as animated 3D bar charts. The latest 0.8x version of Gr_monitor uses XML as for the gather-view interface. SGI IRIX support has been dropped - I no longer have easy access to an SGI box (donations welcome).

By default gr_monitor displays information about processes resident on a UNIX system. For each process it displays a 3D bar graph of CPU consumed, memory consumed, resident set size, and elapsed time. The processes are grouped by username. Each username grouping sits on its own little plinth.

There are controls for translating, rotating, scaling, lighting and fog effects.

Gr_monitor receives info via an input stream and displays it in a X11 Mesa or X11 OpenGL window. The input is expected to be an XML document with a DTD that defines the data to be plotted.

Gr_gather is a default implementation of a data gatherer. It obtains data from the Linux process file system and reformats it as a suitable XML document. If you wish to record data for later playback, you can run a gather process stand alone and redirect its output to a file.

In all I've included three gather implementations (with links to sample screen dumps):

  • Gr_gather: CPU/RSS/Memory/Elapsed-time by process by user;
  • Gr_rup: local network load averages;
  • Gr_free: free disk and memory statistics;
  • The last two are implemented in easy to read python, so anyone should be able to use these examples to roll their own gatherer.

    Here are the man pages for each of the modules: gr_monitor (1), gr_gather (1), gr_rup (1), gr_free (1).

    Gr_monitor may optionally use rsh to run gr_gather on a remote host.

    The gr_monitor XML input requirements are easily understood and could be used to display new kinds of data without any modification.

    The whole thing was developed under Linux using the Mesa, OpenGL look-a-like, library.

    If anyone wants to port the my SGI process file-system version of process info gatherer, I can supply the old gather code (if you can't find it at an archive).

    Gr_monitor version 0.8 is available for anonymous ftp from where it normally resides in /pub/Linux/system/status.

    Last modified: Fri Oct 26 22:34:22 NZDT 2007