Number: 2225

Date: 21-Sep-84 16':31':52

Submitter: masinter

Source: masinter

Subject: Want better indication of system status/performance monitoring

Assigned To: 

Attn: masinter

Status: Open


Problem Type: Performance

Impact: Annoying



Priority: Perhaps

System: Programming Environment

Subsystem: Performance Tools

Machine: 1108


Lisp Version: 20-Sep-84 18':32':04

Source Files: 

Microcode Version: 5124

Memory Size: 7167

File Server: 

Server Software Version: 

Disposition: '
["Sannella.PA" "24-Sep-84 14':22':11" Attn': Problem% Type':(->Performance) Impact':(->Annoying) Priority':(->Perhaps) System':(->Programming% Environment) Subsystem':(->Performance% Tools)]

Description: There''s a Mesa program that does what I want in Interlisp':'
Date': 20 Sep 84 09':26':26 PDT (Thursday)'
Subject': [Igor]<Hacks>11.0>Tools ← Activity.bcd'
To': MesaHacks↑.pa'
cc': Bill Gegenheimer <Gegenheimer.ES>'
From': Bill Gegenheimer <Gegenheimer.ES>'
Reply-To': Gegenheimer.ES'
The Activity hack has been modified slightly.  There is no functionality change, but I had noticed that the 10-second averaging algorithm in the old version was incorrect (see below if you are interested in a description of what was done).  The new version keeps a more accurate average, which shows up a lot more on the DiskIO section than the CPU section (again, see below).  You won''t notice a whole lot of difference, but there is some.'
p.s.  The df file has been updated to grab the latest versions of the 11.0 interfaces.'
Here''s the algorithm of the old version -'
Take the current value, add nine times the current average, and divide the entire thing by 10.'
The problem with that is once the current average hits 0, the current value could be some number greater than 0 but less than 10 ad infinitum, and the average would still be 0, due to integer arithmetic.  The reason you don''t notice this on the cpu average is that the average rarely, if ever, dips to 0, and the current value more often rises above 10 (the magic number to raise the average to > 0), so things look ok.  But with DiskIO''s or Faults, the current value is quite often < 10 and the average often dips to 0.  Obviously, this makes the problem more noticeable.'
What I have done is a fairly "brute-force" method.  Keep a (circular) array of the last 10 values, keep a running total, and each time subtract the value from 10 seconds ago from the running total, add the current value, and substitute the current value for the old one in the array.  It seems to work just fine.'


Test Case: 

Edit-By: Sannella.PA

Edit-Date: 24-Sep-84 14':22':12