hyperSPI++

Version 3.1.0, 6th February 2018

Copyright © 1996-2018 Mark G. Daniel
Copyright © 2001-2018 Jean-François Piéronne
This program, comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under the
conditions of the GNU GENERAL PUBLIC LICENSE, version 3, or any later version.
http://www.gnu.org/licenses/gpl.txt

Contents




hyperSPI++  (pronounced "hyper-spy-plus")  generates VMS System Performance Information HTML documents. It can profile, complete with graphics, fundamental system performance indicators as CPU usage, memory usage, IO values. It works extremely well. Here are examples of its output; CPU Usage and Memory usage, along with information on its capabilities.

hyperSPI++ comprises two distinct elements.

  1. Data Collection Agent -  HYPERSPIXX$AGENT.C  This is the System Performance Information collection agent for the Hypertext SPI facility. It executes on selected nodes, writing selected system performance information into a data file, once every minute. Data collection has negligable impact on system performance. The data contains per-minute average and total values (depending on the datum), and peak values based on the granularity of whatever is the collection period (currently 2 seconds). These data files are kept on a per-day basis. This data may then be processed and displayed by the hypertext SPI facility. It utilizes the undocumented EXE$GETSPI interface. Interface details originally plagiarized (and extensively reworked) from a VMS X Window System utility named SPI.

  2. Data Presentation Application -  HYPERSPIXX.C  This application is executed as a CGI script. It operates in two distinct modes, text and graphic. In text mode it returns an HTML stream to the browser comprising a hypertext page, with selection menu, node performance presentation page, data listing or dump page. In graphic mode it returns a image to the browser, using the charting capabilities of the GDchart library.

Copyright

In addition to the joint copyright on hyperSPI++ other copyright exists on parts of the charting library and may have different distibution licenses. All are provided "as-is" and are freely available for unrestricted use.

Usage

Accessing the script (presentation application) provides a dialog where the various data may be selected and then processed.

<a href="/cgi-bin/hyperspixx">/cgi-bin/hyperspixx</a>

Quick links to selected reports also can be useful:

  Graphical
  <a href="/cgi-bin/hyperspi">performance information</a>
  for selected VMS compute servers.
  <br>Since 7am today:
  <a href="/cgi-bin/hyperspi?list_node=SYSTEM&period=until_now&cpu=yes&memory=yes&hard_faults=yes&do=page">SYSTEM</a>
  <br>Since yesterday:
  <a href="/cgi-bin/hyperspi?list_node=SYSTEM&period=since_yesterday&cpu=yes&memory=yes&hard_faults=yes&do=page">SYSTEM</a>
  <br>The last week:
  <a href="/cgi-bin/hyperspi?list_node=SYSTEM&period=7&cpu=yes&memory=yes&hard_faults=yes&do=page">SYSTEM</a>

Installation

NOTE:  Unlike most WASD software, on shared multiple architecture installations this application can only build one at a time. Use @CLEAN.COM after each build and before building on another platform.

FURTHER NOTE:  The GDCHART build is somewhat of a blunt instrument. It's a bit embarrassing but trying to get the MMS/MMK build to behave itself across platforms and versions eventually exhausted all patience. So the build procedure just alternately tries what is known to work. The occasional %MMS-F-ABORT may be seen during the GDCHART build but as long as an executable results at the end the purpose has been fulfilled.

This version of hyperSPI++ (v3.1) has not been extensively deployed and so in some respects the build should be considered field test! It does compile cleanly under "HP C V7.3-009 on OpenVMS Alpha V8.3" and "VSI C V7.4-001 on OpenVMS IA64 V8.4-2L1". Outside of these YMMV.

This version has been tested under WASD. It should also operate under OSU (DECthreads) and VMS Apache. Of course described script and other locations will need to be modified for the non-WASD server environment.

hyperSPI++ seems to be fairly sensitive to the EXE$GETSPI() system call (probably not unreasonably) and may need at-the-least relinking depending on the exact VMS version. It was originally developed and tested on V6.n systems, then with V7.1 and V7.2, and most recently (after a decade senescence) on Alpha VMS V8.3 and Itanium VMS V8.4.

Note that the startup and run-time procedures WILL require some modification.

The collection agent be must started up on all nodes for which information is required.

Update

After an operating system upgrade the HYPERSPIXX$AGENT may require a relink.

Stop the data collection agent, relink, and then restart the detached data collection agent.

$ pipe show system | search sys$input "hyperspi++"
$ stop /id=<pid>
$ @build_hyperspixx$agent link
$ @hyperspixx$agent startup

To update the hyperSPI++ release, stop the agent process.

$ pipe show system | search sys$input "hyperspi++"
$ stop /id=<pid>

Archive the existing directory.

Install and configure as per a new installation.

Configuration

A repository for the data files is required.

It should be located by a concealed device logical name and contain two directories. For example:

DSK$HYPERSPI:[DATA]
DSK$HYPERSPI:[REFRESH]

The logical name HYPERSPI$DATA locates the data.

It is important this data is cleaned-up occasionally. It uses approximately 394 blocks (~200kB) per day per system.

The HYPERSPIXX$STARTUP.COM procedure provides an example startup.

To access the on-line help a mapping rule such as the following is required.

pass /hyperspixx/-/* /wasd_root/src/hyperspixx/*

Problems?

Releases

v3.1.0  06-FEB-2018
•  update user interface
•  minor bugfixes
•  refine build procedure to support MMS as well as MMK
•  again, a minimum amount of effort has been invested in trying to drag this application forward
v3.0.0  29-MAY-2011
•  introduce Itanium
•  add network interface data
•  data format version 3 (shared with vanilla HyperSPI)
•  there is a lot of work that *could* be done to this older piece of code but I've spent the minimal time necessary just to make it work on modern platforms
v2.1.0  30-MAR-2001
•  update for later GD graphics library
v2.0.0  03-NOV-2000
•  initial hyperSPI++ (as a fork of hyperSPI)
v1.0.0  20-JUL-1995
•  initial (as hyperSPI)