.SBTTL INTRODUCTION .TITLE EVALU8 .IDENT "VOO3E" ; ; ; ; ; ; ; COPYRIGHT (C) 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS 01754. ; ; ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT, INCLUDING BUT NOT LIMITED TO, IN- ; STRUCTION EXECUTION TIMES AND OPERATING SPEEDS IS FOR INFORMATION PURPOSES ; ONLY. ALL SUCH MATERIAL IS SUBJECT TO CHANGE WITHOUT NOTICE. ; CONSEQUENTLY DIGITAL MAKES NO CLAIM AND SHALL NOT BE LIABLE FOR ITS ACCU- ; RACY. ; ; THE SOFTWARE DESCRIBED IS FURNISHED TO THE PURCHASER UNDER A LICENSE FOR ; USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH THE INCLUSION OF ; DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY ; OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; UNLESS SPECIFIED OTHERWISE, THE TERMS "RSX" AND "RSX-11" IN THIS DOCUMENT ; IMPLY "RSX-11D". ; ; ; ; ; VERSION: VOO3E ; AUTHOR: R. KLEINMAN ; DATE: 5 FEB 74 ; ; MODIFICATION: ; ; YCT001 DEC-18-78 YUNG-CHUN TSAU ; ; 1) ONLY MONITORING TASKS' ACTIVITIES ; 2) WRITE THE OUTPUT TO [1,4]EVALU8.DAT ; ; THIS MODULE CONTAINS ; 1-- CODE FOR EVALUATE ; ; .PAGE ;+ ;THIS TASK WILL MEASURE RSX-11D RESOURCE ALLOCATION ; ; ;IN THE AREA OF CORE, I/O AND POOL ALLOCATION IT WILL[VIA ASTS] ;MEASURE PARTITION "HOLES", POOL RESOURCES, AND TASK ACTIVITY ; ; ;IT IS CALLED VIA A "SEND/REQUEST" WITH THE FOLLOWING PARAMENTERS: ; WORD 0: # TICS BETWEEN EACH "SNAPSHOT" [<32K] ; WORD 1: 0 IF "RESUME" ENDS IT, ELSE = # SNAPSHOTS TO RUN [<32K] ; ; ; ;FINAL REPORTS ARE MADE TO [1,4]EVALU8.DAT, STACK = 0, ;YCT001 ; ;AS AN ALTERNATIVE, EVALU8 CAN BE TASK BUILT WITH 2 GLOBAL ;DEFINITIONS [SR.W0,SR.W1] COORESPONDING TO THE 2 WORDS ;ABOVE. IN THAT CASE, THE TASK WILL PERFORM CORRECTLY WHEN REQUESTED ;THRU MCR. THE PRIORITY SHOULD BE 250 [TO MEASURE RUNNING TASKS] ; ;IN CASE NO RESUME IS FORTHCOMING, THE ASTS WILL TERMINATE ON ;OVERFLOW [>32 K SNAPSHOTS]. THE FOLLOWING 2 GLOBALS THEN ARE CRUCIAL. ;- TPDNUM==10. ;NUMBER OF PARTITIONS MAX [ONLY THESE MRL'S WILL BE EXAMINED] TASNUM==100. ;NUMBER OF TASKS MAX [ONLY THESE WILL BE REPORTED] ;OVERLAY STRUCTURE:[EVALU8-(AST8,RPU8M-(RPU8A,RPU8B,RPU8C))] .PAGE .SBTTL CONSTANTS,MACROS AND DPBS LUNA=1 EFNA=5 .LIST MEB .MCALL WTSE$ ;WAIT FOR SINGLE EVENT FLAG .MCALL CALL ;CALL .MCALL RETURN ;RETURN .MCALL EXIT$ ;EXIT .MCALL QIO$,QIOW$S ;QI/O .MCALL RCVD$ ;RECEIVE .MCALL SPND$ ;SUSPEND .MCALL RSUM$ ;RESUME .MCALL ASTX$ ;AST EXIT .MCALL CMKT$ ;CANCEL MARK TIME REQUESTS .MCALL ENAR$ ;ENABLE AST RECOGNITION .MCALL IHAR$ ;INHIBIT AST RECOGNITION .MCALL MRKT$ ;MARK TIME .MCALL GTIM$ ;GET TIME PARAMETER .MCALL FSRSZ$,FDBDF$,FDAT$A,FDOP$A,FDBF$A ;YCT001 .=.+202 ;INITIAL STACK DPEX:: EXIT$ ;EXIT DPB ; DPRCV: RCVD$ ,BFCMD ;RECEIVE DIRECTIVE FROM ANYONE, DPB ;BUFFER IN BFCMD ; DPSND: SPND$ ;SUSPEND DPB ; DPASTX:: ASTX$ ;AST EXIT DPB ; DPCMT:: CMKT$ 0,AST ;CANCEL FURTHER AST REQUESTS FROM MARK TIME ;[DPB] ; DPASTM:: MRKT$ 0,0,1,AST ;MARK TIME FOR N TICS - DPB [FOR AST] ;OFFSET "M.KTMG" FOR TIC COUNT LOCATION ; DPRES:: RSUM$ EVALU8 ;RESUME OWN TASK ; DPGTM1:: GTIM$ BFTIM1 ;TIME PARA - START DPGTM2:: GTIM$ BFTIM2 ;TIME PARA - END DPWT4:: WTSE$ EFNA ;WAIT FOR EV FLAG DPB ; ;+ ; ; THE FOLLOWING ARE CHANGED TO WRITE THE OUTPUT TO A FILE, ; INSTEAD OF CL:[LUN1]. ; ; YCT001 ; ;- ;DPQATT:: QIO$ IO.ATT,LUNA,0,0,0,0 ;QI/O ATTACH CL ; ; ; ; ;DPQDET:: QIO$ IO.DET,LUNA,EFNA,0,0,0 ;QI/O DETACH CL ; ; ; ;QI/O WRITE VIRTUAL ;DPQWTV:: QIO$ IO.WVB,LUNA,EFNA,0,0,0,<0,0,0> ; ; ; ;"Q.IOPL" IS OFFSET TO START OF PARA ; ; ;LIST FDBOUT:: FDBDF$ FDAT$A R.VAR FDOP$A LUNA,DSPT,,FO.WRT FDBF$A 10,,2 FSRSZ$ 1 DSPT: .WORD DEVLEN,DEVNAM .WORD DIRLEN,DIRNAM .WORD FILEN,FILNAM DEVNAM: .ASCII /SY0:/ DEVLEN=.-DEVNAM DIRNAM: .ASCII /[1,4]/ DIRLEN=.-DIRNAM FILNAM: .ASCII /EVALU8.DAT/ FILEN=.-FILNAM .EVEN .PAGE .SBTTL STORAGE TABLES-AST ;+ ;AST [NON-TIME CRITICAL TABLES] TAKE SEVERAL FORMS: ;POOL AL.FS==0 ;DP SUM OF ALL FREE POOL NODES AL.LG==4 ;LARGEST NUMBER OF FREE NODES AL.SM==6 ;SMALLEST NUMBER OF FREE NODES [* MUST BE LAST] AL.SZ==10 ;SIZE OF POOL TABLE ;TPDS: AP.ST==0 ;START OF TPD ENTRY [MUST BE FIRST] ;[IF=0,NO PARTITION IN USE AP.LM==2 ;DP SUM OF LARGEST HOLE IN 32 WORD CHUNKS AP.HM==6 ;DP SUM OF ALL 32 WORD CHUNKS OF FREE CORE AP.LG==12 ;LARGEST FREE AREA IN TPD AP.SM==14 ;*SMALLEST FREE AREA IN TPD* MUST BE LAST AP.SZ==16 ;SIZE OF TPD ENTRY ; ;TASKS: ;[ENTIRE TABLE MUST BE IN FIXED ORDER FOR OUTPUT] AT.NM==0 ;2 WORD RAD50 NAME OF TASK [MUST BE FIRST] ;[*NOT STD PTR IN CASE TASK REMOVED] ; AT.AC==4 ;NUMBER OF SNAPSHOTS WHEN ACTIVE AT.LC==6 ;NUMBER OF SNAPSHOTS WHEN CHECKPOINTED/LOADING AT.W4==10 ;NUMBER OF SNAPSHOTS WHEN WAITING FOR EV AT.RT==12 ;NUMBER OF SNAPSHOTS WHEN RUNDOWN/TERMINATED AT.SP==14 ;NUMBER OF SNAPSHOTS WHEN SUSPENDED AT.RA==16 ;NUMBER OF SNAPSHOTS WHEN RUNNABLE AT.RN==20 ;NUMBER OF SNAPSHOTS WHEN RUNNING AT.SZ==22 ;SIZE OF TASK TABLE ENTRY ; AT.NUM==6 ;# OF STATUS SUBDIVISIONS .MACRO TPDTAB N .NLIST ;NEXT TASK PARTITION TABLE .REPT AP.SZ-2 .BYTE 0 .ENDR .WORD 77777 ;SMALLEST HOLE SEEN [SET INITIALLY HIGH] .LIST .ENDM .MACRO TASTAB M .NLIST ;NEXT TASK TABLE .REPT AT.SZ .BYTE 0 .ENDR .LIST .ENDM .PAGE ;GENERATE TPD AND TASK TABLES ;MAXIMUM OF "TPDNUM" TPD'S, AND "TASNUM" TASKS TPDTBS:: ;TPD TABLES A=0 B=0 .REPT TPDNUM B=B+1 TPDTAB B .ENDR .WORD 0 ;INDICATES END OF TPD'S TASTBS:: ;TASK TABLES .REPT TASNUM A=A+1 TASTAB A .ENDR .WORD 0 ;INDICATES END OF TASK TABLE PLTBS:: ;POOL TABLE .REPT AL.SZ-2 .BYTE 0 .ENDR .WORD 77777 ;[SET SMALLEST # OF NODES TO INITIAL MAX] ; TASTBN:: ;NULL ENTRY FOR TASK TABLE .RAD50 / NULL/ .REPT AT.SZ-4 .BYTE 0 .ENDR .PAGE .SBTTL CONSTANTS, BUFFERS, MACROS TTIME:: 0 ;TOTAL TIME [IN SNAPSHOTS] THAT TASK RUNS MXMTVL==77770 ;VALUE AT WHICH MT CONSIDERED "MAX" PSW ==177776 ;PSW ADDRESS ASR3F ==177406 ;4K READ WRITE BFTIM1:: .REPT 8. ;BUFFER FOR TIME PARARMETER - START .WORD 0 .ENDR BFTIM2:: .REPT 8. ;BUFFER FOR TIME PARAMETER - END .WORD 0 .ENDR BFCMD: ;RECEIVE BUFFER .WORD 0,0 ;TASK NAME OF SENDER BFNTC:: .WORD SR.W0 ;# TICS BETWEEN EACH "SNAPSHOT" BFNSS:: .WORD SR.W1 ;# SNAPSHOTS [0-32K] .REPT 11. .WORD 0 .ENDR .MACRO DPADD A,B ;ADDITION OF A TO DOUBLE PRECISION B ADD A,B+2 ADC B .ENDM .PAGE .SBTTL ROOT SEGMENT CODE ;AWAKE!! ;DO RECEIVE [IF ANY] INIT: MOV #200,SP ;INITIATE STACK MOV #DPRCV,-(SP) EMT 377 ;WHETHER RECEIVE FAILED OR ;SUCCEEDED, ASSUME # TICS, TOTAL# ;SNAPSHOTS ARE CORRECT MOV BFNTC,R0 MOV R0,DPASTM+M.KTMG;SET # TICS FOR MARK TIME AST BLE IEXIT ;IF=0, FATAL ERROR MOV BFNSS,R2 ;GET # SNAPAHOTS BLT IEXIT ;IF > 32K, ERROR BNE 12$ MOV #77777,R2 ;IF=0,SET TO MAXIMUM [AWAIT "RESUME"] 12$: MOV R2,BFNSS ;SET TO INITIAL # OF SNAPSHOTS ; CALL SETUP ;SET UP TPD, TASK TABLES ;YCT001 MOV #DPGTM1,-(SP) ;GET START TIME ;YCT001 EMT 377 ;YCT001 CALL ASTBR ;CALL IN AST OVERLAY MOV #DPASTM,-(SP) ;SET UP FIRST MARK TIME EMT 377 MOV #DPSND,-(SP) ;SUSPEND FOR DURATION OF SAMPLING EMT 377 MOV #DPCMT,-(SP) ;AWAKE! KILL ALL FUTURE MARK TIME EMT 377 MOV #DPGTM2,-(SP) ;GET END TIME EMT 377 JMP REPORT ;OVERLAY POINT A - GO DO REPORTING ; IEXIT:: QIOW$S #IO.WVB,#5,#5,,,,<#ENDMSG,#ENDLEN,#40> MOV #DPEX,-(SP) ;IF BAD PARAMETER -- EXIT SYSTEM EMT 377 ENDMSG: .ASCII /<...EV8> --- EXIT/ .BYTE 012,015 ENDLEN=.-ENDMSG .EVEN .PAGE ;+ ;SUBROUTINE TO INITIALIZE DATA TABLES ; ;IT WILL PLACE THE STARTING POINTERS OF ALL TPD ENTRIES IN THE ;APPROPRIATE TABLES SLOTS UNTIL EITHER ALL TABLE SLOTS ARE FILLED ;OR THE SYSTEM HAS NO MORE PARTITIONS ;- ; ;***YCT001 ;SETUP: ; MOV @#.TPDBA,R5 ;GET START OF TPD ENTRIES IN EXEC ; MOV #TPDNUM,R3 ;GET # ENTRIES IN TABLE ; MOV #TPDTBS,R2 ;GET START OF TABLE ;20$: CMP @#.TPDEA,R5 ;IS NEXT TPD ENTRY THE END? ; BEQ 25$ ;YES, GET OUT ; MOV R5,(R2) ;NO. INSERT ADDRESS IN TABLE ; BIT #TF.UC,T.FW(R5) ;IS IT A USER PARTITION? ; BEQ 30$ ;NO GO ON ; CLR AP.SM(R2) ;YES. CLEAR OUT MIN VALUE ;30$: ; ADD #AP.SZ,R2 ;ADVANCE TPD AND TABLE POINTERS ; ADD #T.SZ,R5 ; SOB R3,20$ ;IF MORE ROOM IN TABLES, GO ON ;25$: RETURN ;ELSE RETURN TO CALLER .END INIT .PAGE