! FILE 'SYS_CPUTS' ! CPUT CPU UTILISATION MODULE ! W.S.C. 21ST MARCH ! LAST UPDATED 30TH MARCH 1977 10:40 ! THIS MODULE RUNS AT THE LOWEST PRIORITY,MAINTAINING A !COUNT.ON A TIME INTERRUPT IT COMPARES THE COUNT WITH A !PREDETERMINED TOTALY IDLE VALUE TO CALCULATE THE APPROX. ! % CPU IDLE TIME. ! INT T FOR 10SEC INTERVAL ! INT H FOR 30SEC INTERVAL ! INT M FOR 60SEC INTERVAL %BEGIN %SYSTEMROUTINESPEC ALARM(%INTEGER TICKS) %PERMINTEGERFNSPEC SVC(%INTEGER EP,P1,P2) %RECORDFORMAT PF(%BYTEINTEGER SER,REPLY,%INTEGER A1,A2,A3) %RECORD(PF) P %CONSTINTEGER MINT=278; ! 100% IDLE FIGURE %CONSTINTEGER HINT=139 %CONSTINTEGER TINT=46 %CONSTBYTEINTEGERNAME ID=K'160030' %CONSTBYTEINTEGERNAME INT=K'160060' %INTEGER C1,C2,I,PERC,TIC,DIV TIC=500; !10SEC INTERVAL DIV=MINT//6 I=SVC(18,0,0); !PRIORITY 0 ALARM(TIC) C1=0;C2=0 %CYCLE %EXIT %IF INT='A' %CYCLE I=1,1,1000 C2=C2+1 %IF C2=10000 %THEN C1=C1+1 %AND C2=0 %REPEAT I=SVC(20,0,0) %IF I#0 %START; !CLOCK INT P_SER=0 POFF(P) %IF INT#0 %START PERC=(C1*100)//DIV PRINTSTRING('$IDLE ') WRITE(PERC,2) PRINTSYMBOL('%') NEWLINE %FINISH %IF INT='M' %THEN DIV=MINT %AND TIC=3000 %IF INT='H' %THEN DIV=HINT %AND TIC=1500 %IF INT='T' %THEN DIV=TINT %AND TIC=500 C1=0;C2=0 ALARM(TIC) %FINISH %REPEAT %ENDOFPROGRAM