Trailing-Edge
-
PDP-10 Archives
-
tops10_tools_bb-fp64a-sb
-
10,7/cpu/cpu.for
There are 5 other files named cpu.for in the archive. Click here to see a list.
IMPLICIT INTEGER (A-Z)
PARAMETER TOPCPU=4
DIMENSION UPTIME(TOPCPU),IDLTIM(TOPCPU)
DIMENSION DOORBL(TOPCPU),OVRHED(TOPCPU),L1(2)
DIMENSION UUOS(TOPCPU),CTXS(TOPCPU),SAWIT(TOPCPU)
DIMENSION SWEEPS(TOPCPU),CSHLST(TOPCPU),LSTTIM(TOPCPU)
DOUBLE PRECISION DUMMY
REAL F1
COMMON /DPY/SCREEN(16),GRFSUP,CPUOFS,ARROW,TRKING,SAVED(1000)
DATA WAIT/5/
CALL ERRSET(0)
TTTYPE = DPYINI(7,'VT52 ')
CPUOFS=48
ARROW=39
IF (TTTYPE .NE. 'VT52 '.AND.TTTYPE .NE. 'VT61 ') GOTO 8001
CPUOFS=116
ARROW=107
CALL ENGRAP
8001 CALL NECHO
CALL PGRAPH
CALL DPYZAP
ENCODE(80,200,SCREEN(1))
200 FORMAT(' UPTIME IDLE CACHE OVER',
1 ' UUOS DBLS CTXS CSWP PAGS FRECOR')
CALL DPYRSC(SCREEN,1,1,80,1)
ENCODE(80,201,SCREEN(1))
201 FORMAT(26X,'HIT HEAD SEC SEC SEC SEC SEC USED')
CALL DPYRSC(SCREEN,1,2,80,2)
DO 202 I=1,TOPCPU
CALL MTRINI(I-1)
SAWIT(I)=-1
202 UPTIME(I)=0
SWPBLK=0
INDEX=0
TRKING=0
1 CALL NEWPNT
SWPTHS=0
DO 100 I=1,100
CALL SWPDAT(INDEX,DUMMY,DUMMY,I1,I2,DUMMY,DUMMY)
IF (INDEX.EQ.0) GOTO 101
SWPTHS=SWPTHS+I1+I2
100 CONTINUE
101 LINE=4
CALL FREUSD(PERUSD)
DO 10 I=1,TOPCPU
FLAG=CPUDAT(I-1,UP,LOST,NUL,OHT,DBLS,UUO,
1 CTX,SWEEP,CSHHIT,CLT)
IF(FLAG.NE.0) GOTO 11
IF(GRFSUP.NE.0.AND.
1 (LINE.GT.9.OR.(UP-UPTIME(I).EQ.0.AND.SAWIT(I).EQ.0))) FLAG=-1
SAWIT(I)=0
IDLE=NUL-LOST
LOST=LOST-CLT
CSHHIT=100000-CSHHIT
IF(FLAG.EQ.0)
1 CALL DOOUT(I-1,LINE,UP,IDLE,CSHHIT,DBLS,OHT,UUO,CTX,SWEEP)
IF(UPTIME(I).EQ.0) GOTO 12
UPTIME(I)=UP-UPTIME(I)
IF(UPTIME(I).EQ.0) GOTO 12
SAWIT(I)=-1
IDLTIM(I)=IDLE-IDLTIM(I)
IF(IDLTIM(I).LT.0)IDLTIM(I)=0
DOORBL(I)=DBLS-DOORBL(I)
CSHLST(I)=CLT-CSHLST(I)
LSTTIM(I)=LOST-LSTTIM(I)
OVRHED(I)=OHT-OVRHED(I)
UUOS(I)=UUO-UUOS(I)
CTXS(I)=CTX-CTXS(I)
SWEEPS(I)=SWEEP-SWEEPS(I)
CALL COLECT(0,I-1,(UPTIME(I)/60))
CALL COLECT(1,I-1,UUOS(I)/(UPTIME(I)/60))
CALL COLECT(2,I-1,(OVRHED(I)*100)/UPTIME(I))
CALL COLECT(3,I-1,CTXS(I)/(UPTIME(I)/60))
CALL COLECT(4,I-1,CSHHIT/1000)
CALL COLECT(5,I-1,(IDLTIM(I)*100)/UPTIME(I))
CALL COLECT(7,I-1,SWEEPS(I)/(UPTIME(I)/60))
CALL COLECT(9,I-1,DOORBL(I)/(UPTIME(I)/60))
CALL COLECT(10,I-1,(CSHLST(I)*100)/UPTIME(I))
CALL COLECT(11,I-1,(LSTTIM(I)*100)/UPTIME(I))
12 IF(FLAG.NE.0) GOTO 13
CALL DOOUT(-1,LINE+1,UPTIME(I),IDLTIM(I),CSHHIT,
1 DOORBL(I),OVRHED(I),UUOS(I),CTXS(I),SWEEPS(I))
IF(I.NE.1) GOTO 14
F1=PERUSD/100.
ENCODE(10,103,L1) F1
103 FORMAT(F5.2,'%')
CALL DPYRSC(L1,64,LINE,69,LINE)
I1=F1
IF (UPTIME(1).NE.0) CALL COLECT(8,0,I1)
I1=SWPTHS/(UP/15)
ENCODE(10,102,L1) I1
102 FORMAT(I5)
SWPBLK=SWPTHS-SWPBLK
IF(UPTIME(1).EQ.0) GOTO 15
I1=SWPBLK/(UPTIME(1)/15)
ENCODE(5,102,L1(2)) I1
CALL COLECT(6,0,I1)
15 SWPBLK=SWPTHS
CALL DPYRSC(L1,58,LINE,62,LINE+1)
14 LINE=LINE+3
13 UPTIME(I)=UP
IDLTIM(I)=IDLE
DOORBL(I)=DBLS
CSHLST(I)=CLT
LSTTIM(I)=LOST
OVRHED(I)=OHT
UUOS(I)=UUO
CTXS(I)=CTX
SWEEPS(I)=SWEEP
10 CONTINUE
11 CALL GRFOUT
1100 CHAR=CHAR1(0)
IF(CHAR.EQ.0) GOTO 1101
IF(CHAR.EQ.'R') CALL DPYREF
IF(CHAR.EQ.'W') CALL SAVEIT
IF(CHAR.EQ.'T') CALL TRACK
IF(WAIT.GT.1 .AND. CHAR.EQ.'F') WAIT=WAIT-1
IF(WAIT.LT.60 .AND. CHAR.EQ.'S') WAIT=WAIT+1
IF(CHAR.NE.'+') GOTO 1102
CALL ADGRAP
GOTO 11
1102 IF(CHAR.NE.'-') GOTO 1103
CALL RMGRAP
GOTO 11
1103 IF(CHAR.NE.'H') GOTO 1104
CALL DPYSAV(SAVED)
CALL DPYROL(3)
CALL CPUHLP
CALL DPYWAT(10)
CALL DPYCLR
CALL DPYRST(SAVED)
1104 IF(CHAR.NE.'E' .AND. CHAR.NE."151004020100) GOTO 1105
CALL DPYROL(1)
CALL ECHO
1105 GOTO 1100
1101 CALL DPYCRM(-1,1,1)
CALL DPYWAT(WAIT)
GOTO 1
END
SUBROUTINE DOOUT
1 (ICPU,LINE,IUP,IDLE,ICSH,IDBLS,IOVH,IUUO,ICTX,ISWP)
DIMENSION ITIM(5)
COMMON /DPY/SCREEN(16),GRFSUP,CPUOFS,ARROW,TRKING,SAVED(400)
ITIM(1)=IUP/(3600*60)
ITIM(3)=(IUP-(ITIM(1)*3600*60))/(60*60)
ITIM(5)=(IUP-(ITIM(1)*3600*60)-(ITIM(3)*60*60))/60
ITIM(2)=ITIM(3)/10
ITIM(4)=ITIM(5)/10
ITIM(3)=ITIM(3)-(ITIM(2)*10)
ITIM(5)=ITIM(5)-(ITIM(4)*10)
IF(IUP.LT.60) GOTO 600
F1=(IDLE*100.0)/IUP
F4=(IOVH*100.0)/IUP
I5=IUUO/(IUP/60)
I6=ICTX/(IUP/60)
I7=ISWP/(IUP/60)
I8=IDBLS/(IUP/60)
IF(ICPU.LT.0) GOTO 500
ENCODE(80,100,SCREEN(1))ICPU,ITIM,F1,F4,I5,I8,I6,I7
100 FORMAT(' CPU',I1,I4,':',2I1,':',2I1,
1 F6.1,'%',8X,F6.1,'%',4I5)
GOTO 501
500 F2=ICSH/1000.0
ENCODE(80,101,SCREEN(1))ITIM,F1,F2,F4,I5,I8,I6,I7
101 FORMAT(I9,':',2I1,':',2I1,F6.1,'%',F7.2,
1 '%',F6.1,'%',4I5)
501 CALL DPYRSC(SCREEN,1,LINE,57,LINE)
RETURN
600 IF(ICPU.LT.0) GOTO 601
ENCODE(80,102,SCREEN(1))ICPU,ITIM
102 FORMAT(' CPU',I1,I4,':',2I1,':',2I1)
GOTO 501
601 ENCODE(80,103,SCREEN(1))ITIM
103 FORMAT(I9,':',2I1,':',2I1)
GOTO 501
END
SUBROUTINE SAVEIT
IMPLICIT INTEGER (A-Z)
DOUBLE PRECISION FILENA
COMMON /DPY/SCREEN(16),GRFSUP,CPUOFS,ARROW,TRKING,SAVED(400)
DATA FILNUM/1/
CALL DPYSAV(SAVED)
ENCODE(10,201,FILENA)FILNUM
201 FORMAT('SCREEN.',O3)
OPEN(UNIT=20,DEVICE='DSK',
1 ACCESS='SEQOUT',MODE='ASCII',FILE=FILENA)
DO 20 I=1,400,16
WRITE(20,200)(SAVED(J),J=I,I+15)
200 FORMAT(16A5)
20 CONTINUE
CLOSE(UNIT=20)
FILNUM=FILNUM+1
RETURN
END
SUBROUTINE COLECT(GN,CPUN,ITEM)
IMPLICIT INTEGER (A-Z)
PARAMETER NUMGRA=11
DOUBLE PRECISION TRKLIT
DIMENSION CPUSIG(6),CPUCOL(6)
DIMENSION GRPHS(8,16,NUMGRA),SIGNAL(NUMGRA),BOTTOM(NUMGRA)
DIMENSION SCALE(NUMGRA),TAKEN(NUMGRA)
COMMON /DPY/SCREEN(16),GRFSUP,CPUOFS,ARROW,TRKING,SAVED(400)
DATA TRKLIT/'*TRACKING*'/
DATA UPLIT/'UP'/
DATA CPUSIG/'0','1','2','3','4','5'/
DATA CPUCOL/-1,-1,-1,-1,-1,-1/
DATA SIGNAL/'U','O','C','H','I','S','J','F','D','Z','L'/
DATA SCALE/25,4,10,3,8,15,15,8,15,2,2/
DATA TAKEN/0,1,0,0,-1,0,0,0,0,0,0/
DATA BOTTOM/0,0,0,60,0,0,0,0,0,0,0/
IF(TRKING.EQ.0) GOTO 4000
IF(GN.EQ.0) WRITE(21,8999)UPLIT,CPUN,ITEM
IF(GN.NE.0) WRITE(21,8999)SIGNAL(GN),CPUN,ITEM
8999 FORMAT(A2,I1,I7)
4000 IF(GN.EQ.0 .OR. CPUCOL(CPUN+1).EQ.0) RETURN
ITEMP=15-(ITEM-BOTTOM(GN)+(SCALE(GN)/2))/SCALE(GN)
IF (ITEMP.LT.2) ITEMP=2
IF (ITEMP.GT.15) ITEMP=15
CALL PUTC(CPUOFS+CPUN,CURPNT,ITEMP,GRPHS(1,1,GN),40)
RETURN
ENTRY PGRAPH
CURPNT=5
CLRPNT=CURPNT+3
GRFSUP=0
DO 5001 II=1,NUMGRA
IF(TAKEN(II).NE.0) GRFSUP=GRFSUP+1
DO 5000 I=2,15
N=((15-I)*SCALE(II))+BOTTOM(II)
GOTO (100,200,100,200,200,100,100,200,100,200,200),II
100 ENCODE(40,9999,GRPHS(1,I,II))N
9999 FORMAT(I3)
GOTO 5000
200 ENCODE(40,9998,GRPHS(1,I,II))N
9998 FORMAT(I2,'%')
5000 CONTINUE
GOTO (101,201,301,401,501,601,701,801,901,1001,1101),II
101 ENCODE(40,9997,GRPHS(1,16,1))
9997 FORMAT(14X,'UUOS/SECOND')
GOTO 5001
201 ENCODE(40,9996,GRPHS(1,16,2))
9996 FORMAT(16X,'OVERHEAD')
GOTO 5001
301 ENCODE(40,9995,GRPHS(1,16,3))
9995 FORMAT(8X,'CONTEXT SWITCHES/SECOND')
GOTO 5001
401 ENCODE(40,9994,GRPHS(1,16,4))
9994 FORMAT(12X,'CACHE HIT RATIO')
GOTO 5001
501 ENCODE(40,9993,GRPHS(1,16,5))
9993 FORMAT(16X,'IDLE TIME')
GOTO 5001
601 ENCODE(40,9992,GRPHS(1,16,6))
9992 FORMAT(9X,'SWAPPING PAGES/SECOND')
GOTO 5001
701 ENCODE(40,9991,GRPHS(1,16,7))
9991 FORMAT(10X,'CACHE SWEEPS/SECOND')
GOTO 5001
801 ENCODE(40,9990,GRPHS(1,16,8))
9990 FORMAT(9X,'MONITOR FREE CORE USED')
GOTO 5001
901 ENCODE(40,9989,GRPHS(1,16,9))
9989 FORMAT(9X,'DOOR BELL RINGS/SECOND')
GOTO 5001
1001 ENCODE(40,9988,GRPHS(1,16,10))
9988 FORMAT(12X,'CACHE LOST TIME')
GOTO 5001
1101 ENCODE(40,9987,GRPHS(1,16,11))
9987 FORMAT(13X,'SWAP LOST TIME')
5001 CONTINUE
RETURN
ENTRY NEWPNT
OLDPNT=CURPNT
CURPNT=CURPNT+1
IF(CURPNT.GT.38) CURPNT=6
CLRPNT=CLRPNT+1
IF(CLRPNT.GT.38) CLRPNT=6
DO 5002 II=1,NUMGRA
CALL PUTC(0,OLDPNT,1,GRPHS(1,1,II),40)
CALL PUTC(ARROW,CURPNT,1,GRPHS(1,1,II),40)
DO 5002 I=2,15
III=I
5002 CALL PUTC(0,CLRPNT,III,GRPHS(1,1,II),40)
RETURN
ENTRY GRFOUT
LEFT=0
RIGHT=0
DO 5003 II=1,NUMGRA
IF (TAKEN(II)) 5004,5003,5005
5004 IF(RIGHT.NE.0) GOTO 5003
RIGHT=1
CALL DPYRSC(GRPHS(1,1,II),41,9,80,24)
GOTO 5003
5005 IF(LEFT.NE.0) GOTO 5003
LEFT=1
CALL DPYRSC(GRPHS(1,1,II),1,9,40,24)
5003 CONTINUE
RETURN
ENTRY RMGRAP
CHAR=CHAR2(ITEMP)
DO 5006 II=1,NUMGRA
IF(CHAR.NE.SIGNAL(II)) GOTO 5006
IF(TAKEN(II).EQ.0) RETURN
IF (TAKEN(II).LT.0) CALL DPYCSC(41,9,80,24)
IF (TAKEN(II).GT.0) CALL DPYCSC(1,9,40,24)
GRFSUP=GRFSUP-1
TAKEN(II)=0
RETURN
5006 CONTINUE
DO 5021 II=1,6
IF (CHAR.NE.CPUSIG(II)) GOTO 5021
CPUCOL(II)=0
RETURN
5021 CONTINUE
RETURN
ENTRY ADGRAP
CHAR=CHAR2(ITEMP)
LEFT=0
RIGHT=0
I=0
DO 5009 II=1,NUMGRA
IF(TAKEN(II)) 5010,5011,5012
5010 RIGHT=1
GOTO 5011
5012 LEFT=1
5011 IF(CHAR.EQ.SIGNAL(II)) I=II
5009 CONTINUE
IF(I.EQ.0) GOTO 5022
IF(TAKEN(I).NE.0) RETURN
IF(LEFT.NE.0) GOTO 5013
TAKEN(I)=1
GOTO 5014
5013 IF(RIGHT.EQ.0) TAKEN(I)=-1
5014 IF(TAKEN(I).NE.0) GRFSUP=GRFSUP+1
IF (GRFSUP.EQ.1) CALL DPYCSC(41,9,80,24)
RETURN
5022 DO 5023 II=1,6
IF (CHAR.NE.CPUSIG(II)) GOTO 5023
CPUCOL(II)=-1
RETURN
5023 CONTINUE
RETURN
ENTRY TRACK
IF(TRKING.EQ.0) GOTO 5024
CLOSE(UNIT=21)
TRKING=0
CALL DPYCSC(7,2,16,2)
RETURN
5024 OPEN(UNIT=21,DEVICE='DSK',
1 ACCESS='SEQOUT',MODE='ASCII',FILE='TRKOUT.CPU')
TRKING=1
CALL DPYRSC(TRKLIT,7,2,16,2)
RETURN
END