# HyperSPI

### Version 2.1.0, 14th October 2014

Copyright © 1996-2014 Mark G. Daniel
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

- Installation
- Configuration
- Releases

HyperSPI generates VMS System Performance Information reports based on collected data. It can profile, complete with graphics, fundamental system performance indicators such as CPU usage, memory usage, IO values. Considering it was first put together at the birth of web technologies (circa 1995) it continues to work suprisingly well (despite the elementary graphing). It was intended not as a rigorous system analysis tool but to give the user community a quick and easy mechanism for insight into why the system or their processing might be behaving in any particular way at the moment or recent past.

This is an example of the output and some information on its capabilities.

HyperSPI comprises two distinct applications.

1. Data Collection Agent — `HYPERSPI$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 plagiarized (and extensively reworked) from a VMS X Window System utility named SPI.

2. Data Presentation Application — `HYPERSPI.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 GIF image to the browser, first processing the specified data into an in-memory bitmap graph, then sending this image to the client via an internal GIF processor.

## Installation

The source and build directory (containing this document) is located at `WASD_ROOT:[SRC.HYPERSPI]`

Both the collection agent and processing script executables are built during WASD package builds. The processing script may require copying into the scripting directory.

    $ COPY WASD_EXE:HYPERSPI.EXE CGI_EXE:

The collection agent be must started up on all nodes for which information is required. The logical name `HYPERSPI$DATA` locates where the data is recorded and read from. It is important this data is cleaned-up occasionally. It uses approximately 140 blocks (70Kbytes) per day per system. There is an example startup for the data collection agent. To start the data collection agent up during system startup add

    $ DEFINE /NOLOG /SYSTEM /EXEC HYPERSPI$DATA device:[directory]
    $ @WASD_ROOT:[SRC.HYPERSPI]HYPERSPI$AGENT STARTUP

at an appropriate place in the system or HTTP server startup procedures.

By default any required resources are located in the WASD runtime directory `WASD_ROOT:[RUNTIME.HYPERSPI]`

HyperSPI seems to be fairly sensitive to the `EXE$GETSPI` and/or `$GETSPI` system call (probably not unreasonably) and may need at-the-least relinking depending on the exact VMS version. It was developed and tested on V6.n systems, and later was reworked on V8.3. After operating system upgrades the `HYPERSPI$AGENT.C` may required relinking.

    $ SET DEFAULT WASD_ROOT:[SRC.HYPERPSI]
    $ @BUILD_HYPERSPI$AGENT LINK
    $ COPY WASD_EXE:HYPERSPI.EXE CGI_EXE:

## Configuration

A mapping rule may be included in the WASD_CONFIG_MAP configuration file.

    script /hyperspi* /cgi-bin/hyperspi*

or the script accessed using the default `/cgi-bin/hyperspi` path.

Accessing the processing script /cgi-bin/hyperspi (may open HyperSPI on this system) provides a summary selection menu.

Quick links to selected reports also can be useful.

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

## Releases

HyperSPI doesn't receive a great deal of attention.

2014: HyperSPI has received further cursory attention. The generated HTML has been revised to make it a little more in keeping with the twenty-first century and the presentation adjusted to employ CSS. Perhaps a couple of hours all-told but (also perhaps) better than nothing at all.

2011: HyperSPI has received scant attention in the last decade. This note brings it up to building in more modern Alpha and in particular Itanium environments, and adds network interface data. It has not been extensively tested in any; YMMV.

Prehistory: Originating in the nineties, HyperSPI receives no major functionality increments, only the occasional bug fix, behaviour or build refinement.