Google
 

Trailing-Edge - PDP-10 Archives - bb-j710b-bm_tops20_v41_tools - tools/sysdpy/sysdpy.mem
There are 12 other files named sysdpy.mem in the archive. Click here to see a list.
	                  The SYSDPY Program	  


DESCRIPTION

	SYSDPY  shows the  status  of the  system.  The  status  is
continually  updated  on video terminals.  You can select a variety
of  displays  for  items such as  jobs,  forks,  JFN's, queues, and 
system  statistics.   You  can type  commands  while the program is
running to change the display parameters.


                                 NOTE
                    SYSDPY   is   an   unsupported
                    product.   However,  you   may
                    submit   SPRs   pertaining  to
                    the program. All SPRs received
                    will be  examined, but not all
                    will be answered.


MONITOR MODIFICATIONS BY SYSDPY

    	In order to collect much of the information which is shown,
SYSDPY  modifies the  monitor to implement a new JSYS.  SYSDPY does
this  using the  SNOOP JSYS when the first privileged user runs the
program.  (Later  runs of SYSDPY  do not need to SNOOP again.)  The
SNOOP code allocates about 554 octal words of  swappable  free core 
and  inserts  JSYS  717, called  MONRD%, into  the running monitor. 
MONRD%  is  active  as  long  as  the  monitor  is   running.   The 
functions of MONRD% are  discussed in the file SYSDPY.MAC, near the 
label .MONRD.
             

WARNINGS
	
       .The reliability of MONRD% requires that the correct version 
        of SYSDPY be used for a particular monitor. If the versions
	of  SYSDPY  and the  monitor do not match, (such as running 
        Release 4  SYSDPY  under  a  Release 3A monitor) either the
	system may crash or you may obtain incorrect results.

       .Since ENQ/DEQ storage and IPCF data also use swappable free
        core,  running  SYSDPY  may cause applications to fail when 
	they would not normally.   This occurs if the free space is
	almost full during normal use.   In this situation,  either
	you cannot run  SYSDPY  or you must  increase the amount of 
	swappable free core in the monitor.

       .MONRD%  is  only  guaranteed  to  work  as  it  is written. 
        If you modify it, you take chances with  the  stability  of  
        the monitor.

       .The conditional FTPRIV is usually on in  SYSDPY.MAC.   This
        means  that unprivileged users cannot use  MONRD%.   SYSDPY 
	still runs, but  it only  gives the information returned by 
	the normal JSYS's.  If FTPRIV is off,  any user  can obtain 
	much  of  the information once a  privileged  user  inserts 
	MONRD%.  (Do  this  only  if  you  are  not concerned about 
	security.   MONRD%  can  return  the  data  that  users are 
	reading or writing.)


SYSDPY COMMANDS

	SYSDPY  commands are  generally  in single or double letter
format.   You terminate all commands when you press the RETURN key.  
The editing characters ^U and DELETE perform their usual functions. 
SYSDPY does not  prompt for  commands,  and they do not echo as you 
type them.  Instead,  SYSDPY  continues to update  the  page  until 
you finish  the  command  line,  then  it  processes  the  command.   
You can type  more than one command on a line.   In doing this,  it
may be necessary to insert a space or a comma between the  commands
to remove ambiguities.  For example, the "S" command  means  scroll
the page.   The "T" command means show titles.   However,  the "ST"
command  means  show  the  structure  status.   The  "S T"  command
scrolls the page and shows titles.

	If you run  SYSDPY  by typing its name to the EXEC, you can 
type  commands after the name.   For example,  to  show the  status  
of the structures, type the following line to the EXEC:

	@SYSDPY ST   <RET>

        SYSDPY  can also read commands from your  SYSDPY.INI  file,
which contains a list of commands or options.  SYSDPY.INI is always
read from your logged in  directory on PS:.   The  following  is an 
example of a SYSDPY.INI file:

	:SYSDPY		NT  O  W5
	:A		GSYSDPY  CCONNECT-TIME/6  BJOBS/2

	The file contains two sets of commands,  SYSDPY and A.  The 
colon before each command identifies it as a  label.  Commands  can 
be several lines long, in which case SYSDPY treats carriage returns
as  spaces.  To process one of the options, type the  name  of  the 
option as the argument to the "G" command.  Thus, in  the  previous
example, the  command  "GA"  processes the commands  in the  SYSDPY 
option, adds a new column to the display, and changes the number of
blanks in the display.  Options can call each other only to a depth 
of 5.

	When the program starts, it processes the  SYSDPY option in
your  SYSDPY.INI file.   The SYSDPY option  is  also  processed  if 
you use a null name as an argument to the "G" command.   Thus,  you
can  set  your  own  special defaults for SYSDPY by putting them in
the SYSDPY option.  If the SYSDPY option exists in your  SYSDPY.INI
file and you then type commands when you start the program,  SYSDPY
processes the commands in the file first.

Whenever  SYSDPY  encounters  an  error  in  command  handling,  it 
notifies you with a bell and does not process further commands from
that command level.


THE HELP COMMAND

	There is a help command in SYSDPY, the  "H"  command, which
you can use at any time without losing your current display.   This
command  reads the file  HLP:SYSDPY.HLP  and displays  it  on  your
terminal.  The file lists all SYSDPY command formats.  You can also
type  the  "HC"  command.   This shows all possible columns in  the
various  displays.   (These  names  are  used  by  the  "B" and "C"
commands.)  To return to your previous display, type "NH".

CHANGING COLUMNS OF A DISPLAY

	Some  displays have many  possible columns  of data.   Your 
terminal screen may not be wide enough to show all possible columns
for a particular display.  Therefore,  commands exist to change the
columns  of a  display.   You can  use the  "C"  command to  change
columns around.  To insert a column at the end of a display (to the
right of the current columns), type the "C" command followed by the
name of the column, which you can abbreviate.  To insert  a  column
at any desired  location, type  the name  of the column followed by 
a  slash and the column number.  SYSDPY inserts that column at that
column number, moving the remaining columns to the right.  You  can
use  the  "NC"  command  to  remove a column  from a  display.  For
example, the command  "CPRIVILEGES/3" shows  the fork's  privileges
in the third column of  the fork display.   The  command  "NCSTATE"
removes the STATE column from the job display.

	Some columns can be very wide.  For example, user names can
be  39  characters long.  To fit several wide columns on the screen 
at the same time,  SYSDPY restricts the width of all columns except
the last one.   Consequently,  data in  a wide  column is sometimes
cut off.  In this case, move the column to  the end of  the display   
to view all of the data.


TYPES OF DATA IN DISPLAYS

	This section describes the columns of  data that  appear in 	
various displays.  The obvious columns are not discussed.

Job Display:

	Job - This is the job number.  SYSDPY always flags your own
	      job with an asterisk.

	Terminal - This  is the terminal controlling  the job.   If 
              the terminal is the CTY, the number is  flagged  with
	      an asterisk.  If the terminal is a PTY, you also  see 
              the letter "J" followed by the controlling job number.

	CPU Percentage - This is the total percentage of  CPU  time 
              the  job used  in the last minute.   SYSDPY  computes  
    	      the data about every 20 seconds.  The column is blank
  	      for  the  first  minute because it takes  SYSDPY that
	      amount of time to compute the first percentage.

	Idle Time - This is the number of minutes that the job run-
	      time remained  stable.   If a  plus sign  follows the 
              number, this specifies a lower bound;  SYSDPY was not
              running long enough to know the actual idle time.

File Display:	

	OFN - This is the system-wide handle on an open disk  file.
              Dashes appear if it is not a disk file.  If the  file 
              is long,  you see two numbers separated  by  a slash.
              The first number is the  OFN  of  the last referenced            
              512 page section of the file.   The  second number is 
              the OFN of the super index block.

	Fork - This is the system fork number that did the original
              GTJFN for this JFN.

        File Status - This indicates the mode of  the  file when it 
	      was opened and the current  status of  the file.  The            
              variables in this column are the following:

              Nopen	File is not open yet.
              Parse	The JFN is parse-only.
	      Rd	The file is open for read access.
              Wrt	The file is open for write access.
	      App	The file is open for append access.			
              Xct	The file is open for execute access.
              Res	The JFN is restricted.  No other forks can
                        use it.
              Eof       The file is at end-of-file.
              Err	An error occurred reading  or writing  the
                        file.
              Inv	The JFN is not  currently  valid because a
                        GTJFN or a GNJFN is looking for  the  next 
                        file to return.                              
                         
Fork Display:

	Fork - This is the  system-wide  fork number for this fork.

	Superior - This is the system-wide  fork number that is the
              immediate superior to this fork.

	Monitor PC - This is the  EXEC mode PC of the fork if it is
	      executing in  the monitor,  such  as in  a JSYS.  You 
              see dashes in this column if the fork is in user mode.

       Mapped Pages - This is a  list  of  what the  various  pages
	      belong to in the fork's  core image (section 0 only).
	      SYSDPY orders the list by size, so the first value is 
              the most common, the second is next most common, etc.   
              The values are:

	      P - Private pages owned by the fork itself.
	      Fn - Indirect mapping to pages in system fork n.
	      n - Shared or indirect mapping to the file whose
		  OFN is n.

	Scheduler Test - This is only  meaningful if the fork is in 
 	      some kind of wait.  The  right half is the address of
	      the monitor routine.   It determines if the fork will 
	      be unblocked.  The left  half is data for the routine
	      to check.  There are many  different scheduler tests.
	      Some of the most common ones are:

	      BLOCKM, BLOCKW	A sleep for about one minute.
	      BLOCKT		A longer sleep.
	      FORCTM		The fork halted due to an error.
	      FRZWT		The fork is frozen.
              HALTT		The fork halted itself.
              JRET		Wait until interrupted.
	      TCITST		Wait for terminal input.
	      TCOTST		Wait for available space in the
                                output buffer.
	      TTIBET		Wait for an empty input buffer.
	      TTOBET		Wait for an empty output buffer.
	      TRMTST		Wait for a particular fork to
                                terminate.
	      TRMTS1		Wait for any inferior fork to
                                terminate.
	      PIDWAT		Wait for an IPCF packet to arrive.
	      ENQTST		Wait for an available ENQ lock.
	      MTAWAT		Wait for IO to finish for a unit.

	Privileges - These are enabled  and possible privileges of
              the fork.  Privileges following a slash are possible
	      privileges which are not  enabled by the fork.   The
	      various privileges are:

	      W	  Wheel
	      O	  Operator
	      M	  Maintainance
              +	  Any privilege other than the above

	Last Call - This is the last  instruction  that called the
              monitor.  It  is  usually a  JSYS, but it could also
              be  a  UUO  for  PA1050 or  an  illegal instruction.  
              When an asterisk preceeds the instruction, the PC is
	      in EXEC mode and the JSYS is being processed.  If an
	      asterisk does not preceed the instruction, the  fork
              is running in user mode  and  the JSYS  was the last
              one done.  Only  JSYS's  done  from  user  mode will 
              appear.  (Nested JSYS's do not appear.)    

	Fork Flags - These give some status of the fork.  They can
	      be any of the following:

	      E        The fork is execute-only.
	      V	       The fork is virgin (newly-created by CFORK).
	      G	       The fork is doing an execute-only GET.

        Page Traps - This is the total  number of  page traps that
	      the fork caused since its creation.

	Page Trap PC - This is the PC of the last page trap.  This 
              can be either a  user mode  or  EXEC  mode  PC.   An 
	      asterisk flags EXEC mode.

	Runtime - This is the  runtime of the  fork to the nearest
              tenth  of  a  second.

	Working Set Size - This consists of two numbers  separated
              by a slash.  The  first  number is the  real working
	      set  size  determined by  the monitor.  This  is the
	      number  of pages the monitor allows you to use with-
	      out page  faulting.  Some of the pages may belong to
	      the  swappable  monitor.  The  second  number is the
	      number of pages existing in the  fork's  core image.
	      (Pages  mapped  indirectly  to  other  forks are not
	      included.)   The  ratio  of  these two numbers is an
              approximation of how much of  the program is in core
	      at one time.

	Interrupt Defer Count - This is  the word  which indicates
              whether  or not a  process can be  stopped or inter-
	      rupted.  The value is the number of reasons why this
	      fork  cannot  be  interrupted,  minus 1.  A negative
              value  allows  a  fork to  be stopped.  Non-negative
	      values do not allow stopping.

IPCF Display:

	Flags - These are status  flags for this PID.   The  flags 
	      can be any of the following:

	      Job	The PID is job-wide; it stays even when
			the fork that created it disappears.
              Res	The PID is restricted; no other fork
			in the job can reference it.

	Quotas - These  are the  send and  receive  quotas for the 
              PID.  They are always separated by a slash.

	Packets - This is the number of IPCF packets waiting to be
	      read for this PID.

	Name - This  is  the  name  of  the  PID that was obtained  
              from <SYSTEM>INFO.

Structure Display:

	Structure - This is the name of the mounted structure.  It 
	      is usually the same name as the alias.

	Alias - This  is the real  name of the structure specified
	      in the HOME blocks.

	Units - These are two  numbers separated  by a slash.  The 
	      first  number  specifies  the  pack's  logical  unit 
	      number in a structure.   The second number specifies 
	      how many packs are in the structure.

	Swapping - This is the number of swapping  pages the  disk
              has.
 
	Status - This  is information  on the  status of the unit.  
              It is a combination of the following:

	      Mount	The structure is mounted.
	      Diag      The structure is being used by diagnostics.
              Offline	The drive is not accessible by the monitor.
	      Free	The drive is on-line; a pack is in the 
			drive but it is not mounted.
	      Err	Errors occurred while reading the pack.
	      BadBAT	The BAT blocks on the pack are incorrect.
	      BadHOM	The HOME blocks on the pack are incorrect.
	      Wrtlck	The structure is write-locked.

	Errors (Read, Write, and Seek) - These specify the  number  
              of various hard  and  soft errors  the unit has had.  
              Soft errors  are  in  the left column and preceeding  
	      the letter "S".  Hard errors are in the right column
	      preceeding  the letter "H".   Dashes  indicate  that 
	      there are no errors.

ENQ Display:

	Lock Number - This  is used  to  match  the locks with the
	      queues.  The  queues  belong  to  the  lock with the 
	      matching number.

	Type - This  is  the  type  of lock.   It  is  one  of the 
              following:

	      ENQ Jobs	  Lock  is  obtained  by any  job with ENQ 
                          privileges.
              WHEEL Jobs  Lock is obtained by any  job with  WHEEL
                          privileges.
              OFN n	  Lock  is  obtained  by  a  job using the 
                          specified file.
	      Job n	  Lock is obtained by any fork in the job.

	Resources - These are  two  numbers  separated by a slash.  
              The first number specifies how  many  resources  are
	      available for the lock.  The second number specifies
	      the  total  number  of  resources in the pool.  This 
	      second value also specifies the group number associ-
	      ated with this lock.

	Lock Time - This  is  the  time  of day when this lock was 
              last given to a fork.

	Lock Code - This is either the  ASCIZ string for this lock
	      or an octal number following a hash mark.

	ENQ Flags - This is the status of this queue block.  It is
              one of the following:

	      Owner	The lock is owned by this queue block.
	      Blocked	The fork is waiting for the lock.

Terminal Display:

	Input Count - This  is  the  number  of  characters in the 
              input buffer.

	Output Count - This is the  number  of  characters  in the 
              output buffer.

	Job - This is the job that owns the terminal.  It  is  one 
              of the following:

	      n		Job n has the terminal assigned or opened.
	      --	The terminal is not in use.
              Ass	A new job number is  being created  on the
                        terminal.

	Flags - This is the status of the terminal.   It is one of
              the following:

              Prm	The terminal data block is always  alloca-
                        ted.
	      Sht	The terminal block is short.
	      Msg	The terminal block sends system messages.
	      Sndal	A send-all is in progress.
	      Pag	The terminal is paged.
	      Out	Characters are being sent to the terminal.
	      In	A fork is in an input wait.
	      Rmt	The line is remote.
	      Car	Carrier is on.
	      Auto	The line is auto-baud.
	      Cty	The line is the CTY.
	      Pty	The line is a PTY.

DECNET Display:

	Fork - This  is  the  fork which owns  this logical  link.  
	       Dashes appear if	the  link  is no longer associated
               with a fork.

	Byte Count - This specifies  how many  bytes of data exist 
               in the current segment being filled.

	Counts (Input and Output) - These are the  segment numbers 
               for the link.  They are not related to any particu-
	       lar amount of data; they increase as data transfers
	       are done and wrap around after 7777 is reached.

	Type - This specifies the type of link.  The  byte size of 
	       the link appears in parentheses.  The  link type is 
               one of the following:

	       DCN      This is the active  half of a  link making
                        connections.
	       SRV	This is the passive half of a line waiting
                        for a connection.
	       INT	This is an internal monitor link.

	Flow Status - This  gives the  restraints  on  the flow of
	       data  across  the  link.  It  can  be  one  of  the 
               following:

	       None	 No flow control exists for the link.
	       Seg: n	 A  maximum  of  n more  segments  can  be
                         transmitted.
	       Msg: n	 A  maximum  of  n more  messages  can  be
                         transmitted.

	       In addition, the information above can be preceeded 
               by the following status bits:

	       T	Transmission back-pressure exists.
	       R	Receive back-pressure exists.