[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>More of HyperSPI</title>

<style type="text/css">
body {
  margin:1em;
  font-family: arial, helvetica, sans-serif,
               "DejaVu Sans Mono", "Everson Mono", FreeMono, "Lucida Console";
  font-size:14px;
}

h1 {
  font-size:150%; font-weight:bold; text-decoration:underline;
}

h2 {
  font-size:130%; font-weight:bold; text-decoration:underline;
  letter-spacing:1px;
  padding-top:1.2em;
}

h3 {
  font-size:120%; font-weight:bold;
  padding-top:0.8em;
}

tt { font-family:monospace; padding:0 4px 0 4px; }

hr { color:#888888; background-color:#888888; height:1px; border:0; }

.code {
  font-family:monospace;
  border-style:solid; border-color:#888888; border-left-width:1px;
  border-top-width:0; border-right-width:0; border-bottom-width:0;
  background-color:#eeeeee;
  margin-left:2em;
  margin-right:5em;
  padding:0.3em;
  padding-left:1em;
}

.quote {
  border-style:dotted; border-color:#888888; border-width:1px;
  font-size:90%;
  background-color:#eeeeee;
  margin-left:2em;
  margin-right:5em;
  padding:0.3em;
  padding-left:1em;
}

.refer {
  font-size:90%; width:90%; text-align:right;
}

.variable table, .variable th, .variable td {
  border-style:none;
  border-width:0;
  vertical-align:top;
  text-align:left;
  background-color:#eeeeee;
}

.variable th { vertical-align: bottom; }

.variable th { text-decoration:underline; margin:0; padding:5px; }
.variable td { margin:0; padding:1px 5px 1px 5px; }

.hyperspi {
  font-family: futura, \"Tw Cen MT\", helvetica, arial, sans;
  font-size:105%; letter-spacing:-1px;
}

.button
{
   border:1px solid slategray;
   padding:0 4px 0 4px;
   border-radius: .2em;
}
</style>

</head>
<body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#0000cc">

<center>

<h1 class="hyperspi" style="font-size:200%; margin-bottom:-10px;">HyperSPI</h1>
<h3>Version 2.1.0, 14th October 2014</h3>

<p><b>Copyright &copy; 1996-2014 Mark G. Daniel</b>
<br>This program, comes with ABSOLUTELY NO WARRANTY.
<br>This is free software, and you are welcome to redistribute it under the
<br>conditions of the GNU GENERAL PUBLIC LICENSE, version 3, or any later version.
<br><a href="http://www.gnu.org/licenses/gpl.txt">http://www.gnu.org/licenses/gpl.txt</a>

</center>

<h2 style="margin-left:1.5em;">Contents</h2>

<ul>
<li><a href="#install">Installation</a>
<li><a href="#config">Configuration</a>
<li><a href="#release">Releases</a>
</ul>

<br><hr align=left size=1 noshade><br>

<p><span class="hyperspi">HyperSPI</span>
generates <b>VMS System Performance Information</b> 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.

<p> This is
<a target="_blank" href="hyperspi_example.png">an example of the output</a> and some
<a target="_blank" href="hyperspi.html">information on its capabilities</a>.

<p> <span class="hyperspi">HyperSPI</span> comprises two distinct applications.

<ol>

<li> <b>Data Collection Agent &nbsp;&mdash;&nbsp;</b>
<tt>HYPERSPI$AGENT.C</tt>&nbsp;
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. 

<p>
<li> <b>Data Presentation Application &nbsp;&mdash;&nbsp;</b>
<tt>HYPERSPI.C</tt>&nbsp;
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. 

</ol>

<a name="install">
<h2>Installation</h2>
</a>

<p> The source and build directory (containing this document) is located at

<a target="_blank" href="/wasd_root/src/hyperspi/"><tt>WASD_ROOT:[SRC.HYPERSPI]</tt></a>&nbsp;

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

<pre class="code">
$ COPY WASD_EXE:HYPERSPI.EXE CGI_EXE:
</pre>

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

<pre class="code">
$ DEFINE /NOLOG /SYSTEM /EXEC HYPERSPI$DATA device:[directory]
$ @WASD_ROOT:[SRC.HYPERSPI]HYPERSPI$AGENT STARTUP
</pre>

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

<p> By default any required resources are located in the WASD runtime directory
<a target="_blank" href="/wasd_root/runtime/hyperspi/"><tt>WASD_ROOT:[RUNTIME.HYPERSPI]</tt></a>&nbsp;

<p> <span class="hyperspi">HyperSPI</span> seems to be fairly sensitive to the
<tt>EXE$GETSPI</tt> and/or <tt>$GETSPI</tt>
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.<i>n</i>
systems, and later was reworked on V8.3.&nbsp; After operating system upgrades
the <tt>HYPERSPI$AGENT.C</tt> may required relinking.

<pre class="code">
$ SET DEFAULT WASD_ROOT:[SRC.HYPERPSI]
$ @BUILD_HYPERSPI$AGENT LINK
$ COPY WASD_EXE:HYPERSPI.EXE CGI_EXE:
</pre>

<a name="config">
<h2>Configuration</h2>
</a>

<p> A mapping rule <i>may</i> be included in the WASD_CONFIG_MAP configuration
file.

<pre class="code">
script /hyperspi* /cgi-bin/hyperspi*
</pre>

or the script accessed using the default <tt>/cgi-bin/hyperspi</tt> path.

<p> Accessing the processing script
<a target="_blank" href="/cgi-bin/hyperspi">/cgi-bin/hyperspi</a>
(may open <span class="hyperspi">HyperSPI</span> on this system)
provides a summary selection menu.

<p> Quick links to selected reports also can be useful.

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

<a name="releases">
<h2>Releases</h2>
</a>

<p> <span class="hyperspi">HyperSPI</span> doesn't receive a great deal of
attention.

<p>2014:&nbsp; <span class="hyperspi">HyperSPI</span> 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.

<p>2011:&nbsp; <span class="hyperspi">HyperSPI</span>  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.

<p>Prehistory:&nbsp; Originating in the nineties,
<span class="hyperspi">HyperSPI</span> receives no major functionality
increments, only the occasional bug fix, behaviour or build refinement. 

<br><br><hr align=left size=1 noshade><br>

</body>
</html>