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