I had been making some efficiency tweaks to a few things, particularly GLXLIB, the Galaxy Object Time System when I began to notice that programs sometimes appeared to not be using any processor time at all. I found that the normal JSYS that returns fork run time (RUNTM%) only gives millisecond resolution.
Tops-20 exposes a 100 Khz interface via the HPTIM%
JSYS. 'High precision' in this case meant the maximum internal
clock rate of the DK10 real time clock. So, although the KL10 had
a megahertz clock, Tops-20 lops off a decimal order of magnitude,
presumably to remain compatible with TENEX. The maximum
resolution is thus 10 microseconds, a hundred times the RUNTM% resolution.
Unfortunately, the HPTIM% JSYS
only works for your own process, not others. So, I modified the
monitor code to be able to get high precision run times for any
forks in the job. I then modified the EXEC to display the high
precision times if requested. What I also found out was that, by
default, the EXEC will only display a tenth of a second, whereas RUNTM% will return two decimal orders of
magnitude more.
The comparisons below are perhaps of interest. About the
shortest I've seen is 1.5 ms (0.00015). Given the increasing
speed of simulations, one assumes that DK10 resolution will be
exceeded at some point.
$i fork
ORION (1): Background, SLEEP at 767721, 0:00:00.1
QUASAR (2): Background, SLEEP at 767721, 0:00:00.0
MOUNTR (3): Background, SLEEP at 2420, 0:00:00.0
BATCON (4): Background, SLEEP at 767723, 0:00:00.1
NMLT20 (5): Background, SLEEP at US%DES+165, 0:00:00.0
=> FAL (6): Background, SLEEP at 767721, 0:00:00.0
Fork 13: SLEEP at 767723, 0:00:00.0
Fork 12: SLEEP at 767723, 0:00:00.0
Fork 11: SLEEP at 767723, 0:00:00.0
Fork 10: SLEEP at 767723, 0:00:00.0
Fork 7: SLEEP at 767723, 0:00:00.0
$
$i fork /high-precision
ORION (1): Background, SLEEP at 767721, 0:00:00.12459
QUASAR (2): Background, SLEEP at 767721, 0:00:00.05135
MOUNTR (3): Background, SLEEP at 2420, 0:00:00.06751
BATCON (4): Background, SLEEP at 767723, 0:00:00.19957
NMLT20 (5): Background, SLEEP at US%DES+165, 0:00:00.09560
=> FAL (6): Background, SLEEP at 767721, 0:00:00.08322
Fork 13: SLEEP at 767723, 0:00:00.01310
Fork 12: SLEEP at 767723, 0:00:00.01577
Fork 11: SLEEP at 767723, 0:00:00.00381
Fork 10: SLEEP at 767723, 0:00:00.00362
Fork 7: SLEEP at 767723, 0:00:00.00320