| $!
$!****************************************************************************
$!* *
$!* COPYRIGHT (c) 1990 BY *
$!* DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS. *
$!* ALL RIGHTS RESERVED. *
$!* *
$!* THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED *
$!* ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE *
$!* INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER *
$!* COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY *
$!* OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY *
$!* TRANSFERRED. *
$!* *
$!* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE *
$!* AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT *
$!* CORPORATION. *
$!* *
$!* DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS *
$!* SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. *
$!* *
$!* *
$!****************************************************************************
$!
$!
$! Command Procedure: BASEGEN.COM
$!
$! Written 16-APR-1990 By SWS Engineering
$!
$! This command procedure will analyse a BASEstar system and propare a report
$! detailing any modifications that should be made to the system. The
$! results are written into BCC$SYSDATA:BASEGEN.REPORT
$!
$!
$ IF .NOT. F$PRIVILEGE ("SYSPRV")
$ THEN WRITE SYS$OUTPUT -
"BASEGEN-E-PRV, Insufficient privileges to run BASEgen facility."
$ EXIT
$ ENDIF
$ VER = F$VERIFY(0)
$ DEBUG = "FALSE"
$ IF F$TRNLNM ("BASEGEN$DEBUG") .NES. "" THEN DEBUG = "TRUE"
$ TRACE = "IF DEBUG THEN WRITE SYS$OUTPUT"
$!
$ SYS_NAME = F$EDIT(F$GETSYI("SCSNODE"),"TRIM")
$ IF SYS_NAME .EQS. "" THEN -
SYS_NAME = F$EDIT(F$TRNLMN("SYS$NODE")-"::","TRIM")
$!
$ UAF_PARAM_LIST = "ASTLM,BIOLM,BYTLM,DIOLM,ENQLM,FILLM,PGFLQUOTA,PRCLM,TQLM"
$ UAF_PARAM_LIST = UAF_PARAM_LIST + ",WSAUTH,WSAUTHEXT"
$!
$ PARAM_ELEMENT = 0
$!
$ GET_UAF_PARAM:
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",UAF_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT1
$ PARAM_'CUR_PARAM' = F$GETJPI ("",CUR_PARAM)
$ TRACE "PARAM_''CUR_PARAM' = " + F$STRING (PARAM_'CUR_PARAM')
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO GET_UAF_PARAM
$!
$ CONT1:
$ SYSGEN_PARAM_LIST = "VIRTUALPAGECNT,MAXPROCESSCNT,GBLPAGES,GBLSECTIONS"
$!
$ PARAM_ELEMENT = 0
$!
$ GET_SYSGEN_PARAM:
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",SYSGEN_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT2
$ PARAM_'CUR_PARAM' = F$GETSYI (CUR_PARAM)
$ TRACE "PARAM_''CUR_PARAM' = " + F$STRING (PARAM_'CUR_PARAM')
$ PARAM_ELEMENT = PARAM_ELEMENT +1
$ GOTO GET_SYSGEN_PARAM
$!
$ CONT2:
$ BCC_PARAM_LIST = SYSGEN_PARAM_LIST + "," + UAF_PARAM_LIST
$ BST SHOW PARAM */OUT=BCC$SYSDATA:BCC_PARAMS.LIS
$ PARAM_ELEMENT = 0
$!
$ GET_BCC_PARAM:
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",BCC_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CHECK_BCC_RUNNING
$ IF CUR_PARAM .EQS. "PGFLQUOTA" THEN CUR_PARAM = "PGFLQUO"
$ IF CUR_PARAM .EQS. "TQLM" THEN CUR_PARAM = "TQELM"
$ IF CUR_PARAM .EQS. "WSAUTH" THEN CUR_PARAM = "WSQUO"
$ IF CUR_PARAM .EQS. "WSAUTHEXT" THEN CUR_PARAM = "WSEXTENT"
$ SEARCH/WINDOW=(2)/OUT=BCC$SYSDATA:TEMP_PARAM.TMP BCC$SYSDATA:BCC_PARAMS.LIS 'CUR_PARAM
$ OPEN/ERROR=ERR/READ PARAM_FILE BCC$SYSDATA:TEMP_PARAM.TMP
$ READ/ERROR=ERR PARAM_FILE PARAM_REC
$ READ/ERROR=ERR PARAM_FILE PARAM_REC
$ CLOSE PARAM_FILE
$ PARAM_BCC$Q_'CUR_PARAM' = F$INTEGER (F$EXTRACT (21,-
F$LOCATE (",",PARAM_REC)-21,PARAM_REC))
$ TRACE "PARAM_BCC$Q_''CUR_PARAM' = " + F$STRING(PARAM_BCC$Q_'CUR_PARAM')
$ DELETE BCC$SYSDATA:TEMP_PARAM.TMP;*
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO GET_BCC_PARAM
$!
$ CHECK_BCC_RUNNING:
$ DELETE BCC$SYSDATA:BCC_PARAMS.LIS;*
$ BCC_RUNNING = 0
$ BCC_LIST = "BCC$MONITOR,BCC$DISPATCHER,BCC$LOGGER,BCC$NAMESERVER"
$ BCC_LIST = BCC_LIST + ",BCC$SERVER,BCC$DMGTSUP,BCC$EVALUATOR"
$ N = 0
$!
$ PROC_LOOP:
$ BCC_PROC = F$ELEMENT(N,",",BCC_LIST)
$ IF BCC_PROC .EQS. "," .OR. BCC_PROC .EQS. "" THEN GOTO CONT3
$ N = N + 1
$ CONTEXT = ""
$!
$ PID_LOOP:
$ PID = F$PID(CONTEXT)
$ IF PID .EQS. "" THEN GOTO PROC_LOOP
$ PRCNAM = F$EDIT (F$GETJPI(PID,"PRCNAM"),"TRIM,UPCASE")
$ IF PRCNAM .EQS. BCC_PROC THEN BCC_RUNNING = 1
$ GOTO PID_LOOP
$!
$ CONT3:
$ TRACE "BCC_RUNNING = " + F$STRING (BCC_RUNNING)
$ TOTAL_SEC_PAGES = 0
$ SEC_FILE = F$SEARCH ("BCC$SYSDATA:*SECTION*.DAT","STREAM")
$!
$ SEC_SIZE_LOOP:
$ IF SEC_FILE .EQS. "" THEN GOTO CONT4
$ TOTAL_SEC_PAGES = TOTAL_SEC_PAGES + -
F$FILE_ATTRIBUTES(SEC_FILE,"ALQ")
$ SEC_FILE = F$SEARCH ("BCC$SYSDATA:*SECTION*.DAT","STREAM")
$ GOTO SEC_SIZE_LOOP
$!
$ CONT4:
$ TRACE "TOTAL SECTION SIZE IS - " + F$STRING (TOTAL_SEC_PAGES)
$ FILE = "BCC$SYSDATA:BASEGEN.TMP"
$ DEFINE/USER SYS$OUTPUT 'FILE'
$ SHOW MEMORY/PHYSICAL_MEMORY
$ OPEN/READ/ERROR=ERR TEMPFILE 'FILE'
$ GETDATA20:
$ READ TEMPFILE RECORD
$ IF F$LOCATE("Main Memory",RECORD) .EQ. F$LENGTH(RECORD) -
THEN GOTO GETDATA20
$ TEMP = F$LOCATE(")",RECORD)
$ RECORD =F$EDIT(F$EXTRACT(temp+1,F$LENGTH(record)-temp-1,record),-
"TRIM,COMPRESS")
$ MEMSIZE = F$INTEGER (F$EXTRACT(0,F$LOCATE(" ",RECORD),RECORD))
$ CLOSE TEMPFILE
$ DELETE BCC$SYSDATA:BASEGEN.TMP;*
$!
$ TRACE "MEMORY SIZE IS " + F$STRING (MEMSIZE)
$ IF MEMSIZE .LT. 32768 THEN GOTO INIT_SYS_1
$ IF MEMSIZE .LT. 65536 THEN GOTO INIT_SYS_2
$ IF MEMSIZE .LT. 131072 THEN GOTO INIT_SYS_3
$ IF MEMSIZE .LT. 262144 THEN GOTO INIT_SYS_4
$ GOTO INIT_SYS_5
$!
$ INIT_SYS_1:
$ TRACE "0-15 MB INITIALIZATION"
$ ASTLM_GOAL = 50
$ BIOLM_GOAL = 40
$ BYTLM_GOAL = 16384
$ DIOLM_GOAL = 40
$ ENQLM_GOAL = 100
$ FILLM_GOAL = 20
$ PGFLQUOTA_GOAL = 10000
$ PRCLM_GOAL = 6
$ TQLM_GOAL = 10
$ WSDEF_GOAL = 300
$ WSAUTH_GOAL = 400
$ WSAUTHEXT_GOAL = 600
$ MAXPROCESSCNT_GOAL = 30
$ VIRTUALPAGECNT_GOAL = 17000
$ GOTO CONT5
$!
$ INIT_SYS_2:
$ TRACE "16-31 MB INITIALIZATION"
$ ASTLM_GOAL = 100
$ BIOLM_GOAL = 60
$ BYTLM_GOAL = 40000
$ DIOLM_GOAL = 60
$ ENQLM_GOAL = 200
$ FILLM_GOAL = 40
$ PGFLQUOTA_GOAL = 20000
$ PRCLM_GOAL = 10
$ TQLM_GOAL = 30
$ WSDEF_GOAL = 400
$ WSAUTH_GOAL = 800
$ WSAUTHEXT_GOAL = 1500
$ MAXPROCESSCNT_GOAL = 60
$ VIRTUALPAGECNT_GOAL = 40000
$ GOTO CONT5
$!
$ INIT_SYS_3:
$ TRACE "32-63 MB INITIALIZATION"
$ ASTLM_GOAL = 200
$ BIOLM_GOAL = 80
$ BYTLM_GOAL = 60000
$ DIOLM_GOAL = 80
$ ENQLM_GOAL = 400
$ FILLM_GOAL = 80
$ PGFLQUOTA_GOAL = 30000
$ PRCLM_GOAL = 12
$ TQLM_GOAL = 40
$ WSDEF_GOAL = 600
$ WSAUTH_GOAL = 1500
$ WSAUTHEXT_GOAL = 4000
$ MAXPROCESSCNT_GOAL = 60
$ VIRTUALPAGECNT_GOAL = 80000
$ GOTO CONT5
$!
$ INIT_SYS_4:
$ TRACE "64-127 MB INITIALIZATION"
$ ASTLM_GOAL = 400
$ BIOLM_GOAL = 100
$ BYTLM_GOAL = 80000
$ DIOLM_GOAL = 100
$ ENQLM_GOAL = 600
$ FILLM_GOAL = 100
$ PGFLQUOTA_GOAL = 40000
$ PRCLM_GOAL = 16
$ TQLM_GOAL = 60
$ WSDEF_GOAL = 800
$ WSAUTH_GOAL = 2000
$ WSAUTHEXT_GOAL = 6000
$ MAXPROCESSCNT_GOAL = 100
$ VIRTUALPAGECNT_GOAL = 150000
$ GOTO CONT5
$!
$ INIT_SYS_5:
$ TRACE "GT 127 MB INITIALIZATION"
$ ASTLM_GOAL = 400
$ BIOLM_GOAL = 120
$ BYTLM_GOAL = 100000
$ DIOLM_GOAL = 120
$ ENQLM_GOAL = 700
$ FILLM_GOAL = 120
$ PGFLQUOTA_GOAL = 60000
$ PRCLM_GOAL = 20
$ TQLM_GOAL = 80
$ WSDEF_GOAL = 1000
$ WSAUTH_GOAL = 4000
$ WSAUTHEXT_GOAL = 8000
$ MAXPROCESSCNT_GOAL = 150
$ VIRTUALPAGECNT_GOAL = 220000
$ GOTO CONT5
$!
$ CONT5:
$ IF BCC_RUNNING
$ THEN
$ USED_GBLPGS = -
PARAM_GBLPAGES - F$GETSYI("FREE_GBLPAGES")
$ ELSE USED_GBLPGS = -
PARAM_GBLPAGES - (F$GETSYI("FREE_GBLPAGES") + -
TOTAL_SEC_PAGES)
$ ENDIF
$!
$ TRACE "GLOBAL PAGES USED IS " + F$STRING (USED_GBLPGS)
$ IF PARAM_GBLPAGES .LT. 30000
$ THEN GBLPAGES_GOAL = USED_GBLPGS + (USED_GBLPGS * 50 / 100)
$ ELSE GBLPAGES_GOAL = USED_GBLPGS + (USED_GBLPGS * 25 / 100)
$ ENDIF
$!
$ TRACE "GBLPAGES GOAL IS " + F$STRING (GBLPAGES_GOAL)
$ USED_GBLSECT = PARAM_GBLSECTIONS - F$GETSYI ("FREE_GBLSECTS")
$ IF BCC_RUNNING
$ THEN GBLSECTIONS_GOAL = USED_GBLSECT + 50
$ ELSE GBLSECTIONS_GOAL = USED_GBLSECT + 60
$ ENDIF
$!
$ TRACE "GBLSECTIONS GOAL IS " + F$STRING (GBLSECTIONS_GOAL)
$ SYSGEN_REPORT_REQ = "FALSE"
$ PARAM_ELEMENT = 0
$!
$ CHECK_SYSGEN_PARAM:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",SYSGEN_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT6
$ IF PARAM_'CUR_PARAM' .LT. 'CUR_PARAM'_GOAL
$ THEN
$ 'CUR_PARAM'_FLAG = "TRUE"
$ SYSGEN_REPORT_REQ = "TRUE"
$ TRACE "''CUR_PARAM'_FLAG SET TO ON"
$ ELSE
$ 'CUR_PARAM'_FLAG = "FALSE"
$ ENDIF
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO CHECK_SYSGEN_PARAM
$!
$ CONT6:
$ UAF_REPORT_REQ = "FALSE"
$ PARAM_ELEMENT = 0
$!
$ CHECK_UAF_PARAM:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",UAF_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT7
$ IF PARAM_'CUR_PARAM' .LT. 'CUR_PARAM'_GOAL
$ THEN
$ 'CUR_PARAM'_FLAG = "TRUE"
$ UAF_REPORT_REQ = "TRUE"
$ TRACE "''CUR_PARAM'_FLAG SET TO ON"
$ ELSE
$ 'CUR_PARAM'_FLAG = "FALSE"
$ ENDIF
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO CHECK_UAF_PARAM
$!
$ CONT7:
$ BCC_REPORT_REQ = "FALSE"
$ PARAM_ELEMENT = 0
$!
$ CHECK_BCC_PARAM:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",BCC_PARAM_LIST)
$ TEMP_PARAM = CUR_PARAM
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT8
$ IF CUR_PARAM .EQS. "PGFLQUOTA" THEN CUR_PARAM = "PGFLQUO"
$ IF CUR_PARAM .EQS. "TQLM" THEN CUR_PARAM = "TQELM"
$ IF CUR_PARAM .EQS. "WSAUTH" THEN CUR_PARAM = "WSQUO"
$ IF CUR_PARAM .EQS. "WSAUTHEXT" THEN CUR_PARAM = "WSEXTENT"
$ IF PARAM_BCC$Q_'CUR_PARAM' .LT. 'TEMP_PARAM'_GOAL
$ THEN
$ BCC$Q_'CUR_PARAM'_FLAG = "TRUE"
$ BCC_REPORT_REQ = "TRUE"
$ TRACE "BCC$Q_''CUR_PARAM'_FLAG SET TO ON"
$ ELSE
$ BCC$Q_'CUR_PARAM'_FLAG = "FALSE"
$ ENDIF
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO CHECK_BCC_PARAM
$!
$ CONT8:
$ SAY := WRITE REPORT
$ OUTREC = -
" !20<!AS!> !10<!SL!> !10<!SL!> "
$ OPEN/WRITE REPORT BCC$SYSDATA:BASEGEN.REPORT
$ SAY " "
$ SAY " "
$ SAY " Analysis of BASEstar System ''SYS_NAME' "
$ SAY " ---------------------------------- "
$!
$ SAY " "
$ SAY " "
$ SAY " SYSGEN Parameter check: "
$!
$ IF SYSGEN_REPORT_REQ
$ THEN
$!
$ SAY " "
$ SAY " Parameter Current Value Suggested Min Value"
$!
$
$ PARAM_ELEMENT = 0
$!
$ SYSGEN_REPORT_LOOP:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",SYSGEN_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT9
$ IF 'CUR_PARAM'_FLAG THEN -
SAY F$FAO -
(OUTREC,CUR_PARAM, PARAM_'CUR_PARAM','CUR_PARAM'_GOAL)
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO SYSGEN_REPORT_LOOP
$!
$ ELSE
$ SAY " "
$ SAY " All related SYSGEN Parameters are within acceptable limits."
$ ENDIF
$!
$ CONT9:
$!
$ SAY " "
$ SAY " "
$ SAY " UAF Parameter check for account running this analysis: "
$!
$ IF UAF_REPORT_REQ
$ THEN
$!
$ SAY " "
$ SAY " Parameter Current Value Suggested Min Value"
$!
$
$ PARAM_ELEMENT = 0
$!
$ UAF_REPORT_LOOP:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",UAF_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT10
$ IF 'CUR_PARAM'_FLAG THEN -
SAY F$FAO -
(OUTREC,CUR_PARAM, PARAM_'CUR_PARAM','CUR_PARAM'_GOAL)
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO UAF_REPORT_LOOP
$!
$ ELSE
$ SAY " "
$ SAY " All UAF Parameters are within acceptable limits."
$ ENDIF
$!
$ CONT10:
$!
$ SAY " "
$ SAY " "
$ SAY " BASEstar minimum quota parameter check: "
$!
$ IF BCC_REPORT_REQ
$ THEN
$!
$ SAY " "
$ SAY " Parameter Current Value Suggested Min Value"
$!
$
$ PARAM_ELEMENT = 0
$!
$ BCC_REPORT_LOOP:
$!
$ CUR_PARAM = F$ELEMENT (PARAM_ELEMENT,",",BCC_PARAM_LIST)
$ IF CUR_PARAM .EQS. "," THEN GOTO CONT11
$ TEMP_PARAM = CUR_PARAM
$ IF CUR_PARAM .EQS. "PGFLQUOTA" THEN TEMP_PARAM = "PGFLQUO"
$ IF CUR_PARAM .EQS. "TQLM" THEN TEMP_PARAM = "TQELM"
$ IF CUR_PARAM .EQS. "WSAUTH" THEN TEMP_PARAM = "WSQUO"
$ IF CUR_PARAM .EQS. "WSAUTHEXT" THEN TEMP_PARAM = "WSEXTENT"
$ IF BCC$Q_'TEMP_PARAM'_FLAG THEN -
SAY F$FAO -
(OUTREC,"BCC$Q_''TEMP_PARAM'", -
PARAM_BCC$Q_'TEMP_PARAM', 'CUR_PARAM'_GOAL)
$ PARAM_ELEMENT = PARAM_ELEMENT + 1
$ GOTO BCC_REPORT_LOOP
$!
$ ELSE
$ SAY " "
$ SAY " All BASEstar Parameters are within acceptable limits."
$ ENDIF
$!
$ CONT11:
$ CLOSE REPORT
$ IF VER .EQ. 0 THEN SET NOVERIFY
$ EXIT
$ ERR:
$ ERR_MSG = $STATUS
$ WRITE SYS$OUTPUT "BASEGEN-E-INT, BASEgen failed due to internal error."
$ WRITE SYS$OUTPUT F$MESSAGE (ERR_MSG)
$ IF VER .EQ. 0 THEN SET NOVERIFY
$ EXIT
|