HP OpenVMS Systems

ask the wizard
Content starts here

Process Quota Displays (BYTLM)?

» close window

The Question is:

When the PQL_MBYTLM is set to 100000, why does a $GETJPI or F$GETJPI show the
 BYTLM for a process as being some value below 100000 ? (eg. 98000).

The Answer is :

  For all process quotas except BYTLM, there is a "xxxLM" value and a
  "xxxCNT" value. The xxxLM value is a constant determined from the
  system authorization file and/or the PQL SYSGEN parameters and/or
  the values specified when the process was created.  The corresponding
  "xxxCNT" value is debited and credited as the resource is consumed
  and released.
  BYTLM is different. For non-paged pool, the resource controlled by
  BYTLM, there are two classes of allocation: "permanent" and "transient".
  For "transient" allocations, like buffered I/Os, BYTCNT is debited when
  memory is allocated and credited when the I/O completes and the memory
  is released.
  For "permanent" (more precisely, "long term") allocations, like the
  creation of mailboxes, the allocation is debited from BOTH BYTCNT and
  BYTLM.  When the mailbox is deleted, both values are credited.
  There is a field in the JIB -- JIB$L_ORG_BYTLM -- which stores the
  original value of BYTLM for the process.  In your example case, the
  ORG_BYTLM value will be 100000.  If BYTLM is 98000, that indicates
  that the process has 2000 bytes of NPAGEDYN on long term allocation.
  There is no $GETJPI item to return JIB$L_ORG_BYTLM for a process. It
  can be examined from SDA by formatting the JIB. For example:
%SDA-I-READSYM, 9243 symbols read from SYS$COMMON:[SYS$LDR]SYSDEF.STB;1
FFFFFFFF.80EBB240   JIB$L_MTLFL                     80EBB240    JIB
FFFFFFFF.80EBB244   JIB$L_MTLBL                     80EBB240    JIB
FFFFFFFF.80EBB260   JIB$L_BYTCNT                    0001B880
FFFFFFFF.80EBB264   JIB$L_BYTLM                     0001BB00
FFFFFFFF.80EBB268   JIB$L_PBYTCNT                   00000000
FFFFFFFF.80EBB2B4   JIB$L_ODAYHOURS                 00000000
FFFFFFFF.80EBB2B8   JIB$L_JOBTYPE                   00000000
FFFFFFFF.80EBB2BC   JIB$L_FLAGS                     00000000
FFFFFFFF.80EBB2C0   JIB$L_ORG_BYTLM                 00020000
FFFFFFFF.80EBB2C4   JIB$L_ORG_PBYTLM                00000000
FFFFFFFF.80EBB2C8   JIB$L_JTQUOTA                   00000000
SDA> EVALUATE 00020000
Hex = 00000000.00020000   Decimal = 131072              CPU$M_IO_START_AFF
Hex = 00000000.0001BB00   Decimal = 113408              CSP+1BB00
Hex = 00000000.0001B880   Decimal = 112768              CSP+1B880
  In this case, the original BYTLM value is 131071, BYTLM is 113405, and
  BYTCNT is 112768.  This indicates that there are 640 bytes outstanding
  in "short term" allocations and 17664 bytes in "long term" allocations.

answer written or last revised on ( 4-OCT-2001 )

» close window