UEA VAX Demand Control System

Installation Notes


K.Worvill
May 1990





Version 1.1 Cost £0.00

 

---------------©University of East Anglia 1990 ---------------

This material may not be used in part or whole for financial gain without prior permission. It may otherwise be freely copied provided that due acknowledgement is given to the Computing Centre, UEA Norwich, and that the wording of this statement of copyright is reproduced.


UEA VAX Demand Control Installation

CPC Note xx

 

 

 

 

Images

UEA$SYSTEM:SYSLOGIN.EXE ! System wide login
UEA$SYSROOT:[LABCLASS] ! Student class control
UEA$SYSROOT:[JOB_MONITOR] ! JOB_MONITOR system
UEA$SYSROOT:[LOAD_MONITOR] ! LOAD_MONITOR system
UEA$SYSROOT:[BUDGET] ! Budget control

UEA$DISK:[JOBBER]JOBBER.EXE ! General task scheduler

Command Procedures

SYS$MANAGER:RUNJOB.COM ! General purpose runjob
SYS$MANAGER:MONITOR_STARTUP.COM ! Start JOB_MONITOR
SYS$MANAGER:MONITOR_SWITCH.COM ! Switch JOB_MONITOR
SYS$MANAGER:MONITOR_STOP.COM ! Stop JOB_MONITOR
SYS$MANAGER:JOB_MONITOR.COM ! JOB_MONITOR job
SYS$MANAGER:LOAD_MONITOR.COM ! LOAD_MONITOR job
SYS$MANAGER:UEA_JOBBER.COM ! UEA_JOBBER job
UEA$SYSTEM:TIMETABLE.COM ! Timetable display

Global symbol commands

TIM*ETABLE :== @UEA$SYSTEM:TIMETABLE.COM

 

SYSTARTUP.COM / SYLOGICALS.COM

$ASSIGN/SYSTEM/EXEC/TRAN=(CONCEALED,TERMINAL) 'F$LOG("SYS$SYSDEVICE")'

UEA$DISK

$ASSIGN/SYSTEM/EXEC/TRAN=(CONCEALED,TERMINAL)

'F$LOG("SYS$SYSDEVICE")'[UEASYSTEM.] UEA$SYSROOT

$ASSIGN/SYSTEM UEA$DISK:[UEASYSTEM] UEA$SYSTEM

$

$ASSIGN/SYSTEM "''F$LOG("SYS$ANNOUNCE")'" MON$ANNOUNCE
$ASSIGN/SYSTEM TRUE TEACHING_NODE ! For class counts on SYS$ANNOUNCE
$@SYS$MANAGER:MONITOR_STARTUP.COM ! The Job Monitor
$@SYS$MANAGER:RUNJOB LOAD_MONITOR ! The Load Monitor
$@SYS$MANAGER:RUNJOB UEA_JOBBER ! Task scheduler

 

Installed images

! Essential to all operations

ADD/OPEN/HEAD/PRIV=(CMEXEC,SYSPRV) UEA$SYSTEM:SYSLOGIN.EXE

! Only needed for unprivileged user access to class scheduling data

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[LABCLASS]WHATCLASS.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[LABCLASS]CLASS_RIGHTS.EXE

! Only needed for Budget/Demand control system

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]BUDGET_QUERY.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]QUOTA_TRANSFER.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]CREDIT_TRANSFER.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]CREDIT_UPDATE.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]CREDIT_REPORT.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]SET_QUOTA.EXE

ADD/OPEN/HEADER/PRIV=(SYSPRV) UEA$SYSROOT:[BUDGET]SET_CREDIT.EXE

Command definitions

UEA$SYSROOT:[COMMANDS]

BUDGET.CLD;3 ! Budget control & display

STUDENT.CLD;12 ! Class switch control & display

JSWITCH.CLD;4 ! ON/OFF/TOGGLE JOB_MONITOR function switches

 

Installation:

0)

Check the compile time configuration parameters at the end of this list are ok , particularly the maximum process count ( MAXPROCS >= SYSGEN MAXPROCESSCNT ) & the maximum UIC group/member value MAXUIC . The UIC is used as an index into the user budget mapped file sections . A higher UIC range means the section files will need to be expanded. Also check that the preset rights identifiers don't clash with any local ones in name or value.

1)

Unpack the save set UEA_DEMAND_CONTROL.BCK to UEA$DISK:[*]

2)

Check global pages available for memory mapped file sections

UEA$SYSROOT:[JOB_MONITOR]LOGINDATA.DAT 12

UEA$SYSROOT:[JOB_MONITOR]PROCDATA.DAT 84

UEA$SYSROOT:[JOB_MONITOR]USER_CREDIT.DAT 512

UEA$SYSROOT:[JOB_MONITOR]USER_DEBIT.DAT 512

UEA$SYSROOT:[JOB_MONITOR]USER_USAGE.DAT 1024

 

 

3)

Set up the global section files as above .These are needed even if the budgeting system is switched off.

$ SET DEF UEA$SYSROOT:[JOB_MONITOR]

$ RUN INITSECT_CREDIT

$ RUN INITSECT_DEBIT

$ RUN INITSECT_USAGE

$ RUN INITSECT_PROCDATA ! also installs as permanent

$ RUN INITSECT_LOGINDATA ! " " " "

4)

Check file protections are set as :

 

Directory UEA$SYSROOT:[JOB_MONITOR]

USER_CREDIT.DAT;1 (RWED,RWED,,)

USER_DEBIT.DAT;1 (RWED,RWED,,)

USER_USAGE.DAT;1 (RWED,RWED,,)

PROCDATA.DAT;1 (RWED,RWED,,)
LOGINDATA.DAT;1 (RWED,RWED,,)

 

 

5)

Add the system startup information + installed image list to SYSTARTUP.COM/SYLOGICALS.COM .

Add the following commands to SYSTARTUP.COM to install the permanent global sections UEA_PROCDATA & UEA_LOGINDATA .

$ SET DEF UEA$SYSROOT:[JOB_MONITOR]

$ RUN INSTALL_PROCDATA

$ RUN INSTALL_LOGINDATA

6)

Define the system wide logicals now

7)

Install the images now

8)

Add the commands to your local tables

 

9)

Set the required JOB_MONITOR switches

SYSANNOUNCE = T for appending extra login info. to SYS$ANNOUNCE & making student login checks

LOGOUT = T to allow JOB_MONITOR forced logouts

BUDGET_LOGOUT = T to allow budget/demand control

TERMINAL_TIMEOUT = T to allow idle terminal timeout

LAB_PRIORITY = T to give student scheduled class priority

 

For example:

$ JSWITCH ! to read status T=true F=false

$ JSWITCH/ON/BUDGET_LOGOUT

/OFF

/TOGGLE

10)

Define the following rights identifiers + class idents. required.

Class control identifiers:

STUDENT 800A0001

EXAMPLE_CLASS 800A0002

NEXT_CLASS 800A0003

As required in sequence

 

 

General purpose JOB_MONITOR recognised identifiers:

 

NO_SUB_TIMEOUT 800B0028 ! No subprocess timeout

NO_TIMEOUT 800B0029 ! No idle timeout

MULTIPLE_LOGIN 800B0030 ! Allows multiple login

OVERDRAFT 800B0031 ! Allows overdrawn login

ALT_TIMEOUT 800B0032 ! Alternative timeout

eg.

UAF> ADD/IDENT/VALUE=IDENT:%XA0001 STUDENT

Note that VMS adds the high bit to make %X800A0002 to distinguish rights identifiers from UIC's in the rights database. The high word value 800A is used as a key to distinguish student class identifiers from others. The low word value is then used as an index. The index part must be unique in the combined A & B set & can be in the range 1 to MAXRIGHTS ( 64 hex ).

 

 

11)

Set up the timetable file UEA$DISK:[JOBBER]LABCLASS.DAT as

!!! Comment lines start !!!

!!! Format of entries is: DAY@HOUR CLASSNAME SWITCH

!!! ( single space between items )

!!! DAY = MON,TUE,WED ...

!!! HOUR = 0000 ... 2300

!!! CLASSNAME is the rights identifier name of the class

!!! or the Username of [n,0] if a UIC group class

!!! SWITCH = ON,OFF,EXCLUDE,INCLUDE to allow class control or

!!! group login exclusion.

!!! Examples:

!!!

MON@1000 SYSFOR ON

MON@1100 SYSFOR OFF

TUE@1400 SYS1B ON

TUE@1500 SYS1B OFF

 

12)

Arrange to run LABCLASS.COM hourly ( eg. using UEA_JOBBER see HOURLY.COM )

 

13)

Add a $RUN for SYSLOGIN.EXE at a suitable point in the system wide login

 

14)

Arrange to switch JOB_MONITOR & LOAD_MONITOR at eg. day intervals ( eg. using UEA_JOBBER see example file DAY.HOUR )

15)

Arrange to do budget updates/reports as required ( eg. using UEA_JOBBER see example file DAY.HOUR )

 

16)

Start the JOB_MONITOR as from SYSTARTUP.COM

 

17)

Start the LOAD_MONITOR " " if required for budget/demand control.

LOAD_MONITOR defines a system logical UEA$LOAD which is read by the JOB_MONITOR in FORTRAN I5 format. The demand factor is displayed as UEA$LOAD/10.0 .

 

18)

Grant the STUDENT identifier + class scheduling identifiers to the appropriate users.

 

 

A) Required files list:

UEA$SYSTEM:SYSLOGIN.EXE

UEA$SYSTEM:TIMETABLE.COM

UEA$SYSROOT:[LABCLASS]CLASS_RIGHTS.EXE

UEA$SYSROOT:[LABCLASS]LABCLASS.COM

UEA$SYSROOT:[LABCLASS]LABCLASS.EXE

UEA$SYSROOT:[LABCLASS]SET_CASUAL.EXE

UEA$SYSROOT:[LABCLASS]SET_CLASS.EXE

UEA$SYSROOT:[LABCLASS]WHATCLASS.EXE

UEA$SYSROOT:[LOAD_MONITOR]LOADING.EXE

UEA$SYSROOT:[JOB_MONITOR]CLEARSECT_CREDIT.EXE

UEA$SYSROOT:[JOB_MONITOR]CLEARSECT_DEBIT.EXE

UEA$SYSROOT:[JOB_MONITOR]CLEARSECT_USAGE.EXE

UEA$SYSROOT:[JOB_MONITOR]INITSECT_CREDIT.EXE

UEA$SYSROOT:[JOB_MONITOR]INITSECT_DEBIT.EXE

UEA$SYSROOT:[JOB_MONITOR]INITSECT_USAGE.EXE
UEA$SYSROOT:[JOB_MONITOR]INITSECT_PROCDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]INITSECT_LOGINDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]INSTALL_PROCDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]INSTALL_LOGINDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]DELESECT_PROCDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]DELESECT_LOGINDATA.EXE

UEA$SYSROOT:[JOB_MONITOR]JOB_MONITOR_SWITCHES.EXE

UEA$SYSROOT:[JOB_MONITOR]MONITOR.EXE

Section files created with the INITSECT_ programs.

UEA$SYSROOT:[JOB_MONITOR]LOGINDATA.DAT as permanent section

UEA$SYSROOT:[JOB_MONITOR]PROCDATA.DAT " " "

UEA$SYSROOT:[JOB_MONITOR]USER_CREDIT.DAT as temporary section

UEA$SYSROOT:[JOB_MONITOR]USER_DEBIT.DAT " " "

UEA$SYSROOT:[JOB_MONITOR]USER_USAGE.DAT " " "

SYS$COMMON:[SYSMGR]JOB_MONITOR.COM

SYS$COMMON:[SYSMGR]LOAD_MONITOR.COM

SYS$COMMON:[SYSMGR]UEA_JOBBER.COM

SYS$COMMON:[SYSMGR]RUNJOB.COM

SYS$COMMON:[SYSMGR]MONITOR_STARTUP.COM

SYS$COMMON:[SYSMGR]MONITOR_SWITCH.COM

SYS$COMMON:[SYSMGR]MONITOR_STOP.COM

UEA$DISK:[JOBBER]JOBBER.EXE

UEA$DISK:[JOBBER]HOURLY.COM

UEA$DISK:[JOBBER]LABCLASS.DAT

UEA$DISK:[JOBBER]DAY.HOUR

UEA$DISK:[JOBBER]I_CREDIT_UPDATE.COM

UEA$DISK:[JOBBER]B_CREDIT_UPDATE.COM

 

 

UEA$SYSROOT:[BUDGET]BUDGET_CONTROL.HLB

UEA$SYSROOT:[BUDGET]BUDGET_QUERY.EXE

UEA$SYSROOT:[BUDGET]CREDIT_REPORT.EXE

UEA$SYSROOT:[BUDGET]CREDIT_TRANSFER.EXE

UEA$SYSROOT:[BUDGET]CREDIT_UPDATE.EXE

UEA$SYSROOT:[BUDGET]QUOTA_TRANSFER.EXE

UEA$SYSROOT:[BUDGET]SET_CREDIT.EXE

UEA$SYSROOT:[BUDGET]SET_QUOTA.EXE

 

 

B) JOB_MONITOR/$BUDGET configuration parameters:

 

C [UEA_SOFTWARE.MONITOR]MAXPROCS.CMN

C

C Maximum processes & Maximum UIC ( group or member )

INTEGER*4 MAXPROCS,MAXUIC

PARAMETER(MAXPROCS=200,MAXUIC='377'O)

C

C If MAXUIC is changed then the USER_CREDIT.DAT/USER_USAGE.DAT/

C USER_DEBIT.DAT section creation/mapping code system service

C calls will need to be reviewed.

C [UEA_SOFTWARE.MONITOR]UEAPARAMS.CMN

 

C Idle process timeout/logout parameters ( minutes )

C

C Processes are defined as idle if no CPU,no buffered i/o,

C & no direct i/o in specified interval.

C JOB_MONITOR broadcasts a warning at one minute intervals after

C TWARNING up to TLOGOUT. The broadcasts are in category USER1

C except for the logout pending message in URGENT.

C

C ALT_TWARNING/ALT_TLOGOUT may be used for an alternative interval

C for processes holding the ALT_TIMEOUT rights identifier. This

C also clears the screen on logout.

INTEGER*4 TWARNING,TLOGOUT

INTEGER*4 ALT_TWARNING,ALT_TLOGOUT

PARAMETER(TWARNING=10,TLOGOUT=15)

PARAMETER(ALT_TWARNING=10,ALT_TLOGOUT=15)

C UIC group control parameters ... JOB_MONITOR & $BUDGET utilities

INTEGER*4 MINACT

PARAMETER(MINACT='30'O) ! minimum UIC group for

JOB_MONITOR actions

INTEGER*4 MIN_CHARGED_GROUP

PARAMETER(MIN_CHARGED_GROUP='41'O) ! for JOB_MONITOR charging

 

 

INTEGER*4 SYS_REPORT_GROUP

PARAMETER(SYS_REPORT_GROUP='15'O) ! max. group allowed 'system'

reports from $BUDGET/GROUP

INTEGER*4 SYS_UIC

PARAMETER(SYS_UIC='10'O) ! system UIC limit

C Limits on JOB_MONITOR/BUDGET field values

INTEGER*4 QUOTA_LIMIT

PARAMETER(QUOTA_LIMIT=30000) ! UAF 16 bit

INTEGER*4 CREDIT_LIMIT

PARAMETER(CREDIT_LIMIT=-30000) ! Credit section 16 bit

INTEGER*4 DEBIT_LIMIT

PARAMETER (DEBIT_LIMIT=30000) ! Debit section 16 bit

INTEGER*4 USAGE_LIMIT

PARAMETER (USAGE_LIMIT=9999999) ! Usage section 32 bit

INTEGER*4 USER_MAX_CREDIT

PARAMETER(USER_MAX_CREDIT=10000) ! $BUDGET/CREDIT_TRANSFER

 

C Job cost coefficients

INTEGER*4 C_CPU,C_BUFIO,C_DIRIO,C_PFLTS

PARAMETER(C_CPU=100,C_BUFIO=100,C_DIRIO=100,C_PFLTS=200)

C ie. 1 unit per 200 page faults etc.


C C_CPU may be changed according to processor .

C Rights identifiers

INTEGER*4 MAXRIGHTS

PARAMETER( MAXRIGHTS = 100 ) ! total of type CLASS_ID

INTEGER*4 MAX_USER_RIGHTS

PARAMETER( MAX_USER_RIGHTS = 10 ) ! max held per user proc.

INTEGER*2 CLASS_ID ! Mask on high order word defines

CLASS id

PARAMETER(CLASS_ID='800A'X)

INTEGER*2 MONITOR_ID ! JOB_MONITOR usage id. mask

PARAMETER(MONITOR_ID='800B'X)

INTEGER*4 STUDENT_ID ! Rights id for 'STUDENT' status

PARAMETER(STUDENT_ID='800A0001'X)

INTEGER*4 ALT_TIMEOUT_ID ! Rights id for ALTernative idle

timeout

PARAMETER(ALT_TIMEOUT_ID='800B0032'X)

INTEGER*4 OVERDRAFT_ID ! Rights id for no overdrawn budget

action

PARAMETER(OVERDRAFT_ID='800B0031'X)

INTEGER*4 MULTIPLE_LOGIN_ID ! Rights id to allow multiple logins

PARAMETER(MULTIPLE_LOGIN_ID='800B0030'X)

 

INTEGER*4 NO_TIMEOUT_ID ! Rights id for no idle timeout (

main or sub process )

PARAMETER(NO_TIMEOUT_ID='800B0029'X)

 

INTEGER*4 NO_SUB_TIMEOUT_ID ! Rights id for no subprocess timeout

PARAMETER(NO_SUB_TIMEOUT_ID='800B0028'X)

C Demand broadcast control .. USER2 to USER3 switch

REAL*4 MODERATE_DEMAND

PARAMETER(MODERATE_DEMAND=0.5)

C All JOB_MONITOR broadcasts are in USER1 category with the

following exceptions.

C Any broadcast which precedes a forced logout is sent in URGENT.

C The demand factor broadcasts are in USER2 ( demand < 0.5 ) &

C USER3 ( demand > 0.5 ).

 

C) JOB_MONITOR Broadcast Message texts & location in source.

DISKB:[UEA_SOFTWARE.MONITOR]DEBIT.FOR;1

WRITE(MESS,'(''You have become overdrawn'')')

WRITE(MESS,'(''Demand factor now'',F5.1,'' (change ='',SP,

* F5.1'') your credit'',SS,I6)')

DISKB:[UEA_SOFTWARE.MONITOR]IDLE_TIMEOUT.FOR;1

WRITE(MESS,'(''Inactive image exit forced'')')

WRITE(MESS,'(''Your idle '',A4,'' process '',Z8.8,'' will be logged

out in'',

* I2,'' mins'')')PTYPE,PID_L(J),TLEFT

WRITE(MESS,'(''Your idle '',A4,

* '' process '',Z8.8,'' is being logged out'')')PTYPE,PID_L(J)

DISKB:[UEA_SOFTWARE.MONITOR]MONITOR.FOR;1

WRITE(MESS,'(''Your '',A4,'' process '',Z8.8,

* '' is now at class priority 5'')')PTYPE,PID_L(J)

WRITE(MESS,'(''Your '',A4,'' process '',Z8.8,

* is now at normal priority 4'')')PTYPE,PID_L(J)

WRITE(MESS,'(''You are being logged out'')')

WRITE(MESS,'(''You have been excluded from this node'')')

WRITE(MESS,'(''You will be logged out one minute from now!'')')

DISKB:[UEA_SOFTWARE.MONITOR]STUDENT_CHECK.FOR;1

WRITE(MESS,'(''Warning: You are not in a class & casual use is

restricted'')')

DISKB:[UEA_SOFTWARE.MONITOR]UEALOGIN_CHECK.FOR;1

WRITE(MESS,'('' Your Username/UIC is now in multiple use !'')')

 

 

THE END