Using -NL (No-Lock) with promon utility

Using -NL (No-Lock) with promon utility
Product: OpenEdge
Version: All supported versions
OS: All supported platforms
Should PROMON be used with -NL on a high transaction system?
Can PROMON be run with a no-lock option?
What does -NL do to a PROMON session
PROMON -NL is provided specifically when looking at Activity contention issues in shared memory. It should not be used by default and when running promon with -NL, crashes in the promon session need to be ignored.

PROMON by default does some locking on latches when obtaining Activity data.  The main areas are area, buffer pool and locking statistics. Buffers in general are locked for a very short period of time (milliseconds). Just long enough to either read or update the buffer. This behavior could can cause some contention on very busy systems and show an increase in latch counts when proactively monitoring a database.  It is recommended to start the promon utility with the -NL (No-Lock) option to negate this influence.

There are other places in promon where latching is not used (eg _Lock) and promon crashes or incomplete data are returned. Starting the promon session with -NL is no different to this existing behaviour, except that it now can happen in more places potentially.

For example:
  1. The  Storage Area's "Area Control Object" object block is only involved with all Activity screens.
  2. The only "Status" screen ACO locking applies to is the "1. Database" option, because it is trying to get the various block count statistics
PROMON reads the buffer associated with each Storage Area's “Area Control Object” object block to reload its statistics in order to obtain a consistent snapshot of the database activity status. In order to do so,  PROMON locks TXQ latch to read object blocks that belong to database Storage Areas.

When PROMON is started with -NL:
  • PROMON will attempt to look at the ACO's object block
  • If there is a conflict and -NL is specified, PROMON will not wait and continue on to the next Area without reporting statistics for the area in conflict (the "try lock" mechanism). 
  • When running promon with -NL these type of statistics (and probably others) will be less accurate, than running without no lock, but at least some results will be returned back in a timely manner.
  • Typically this contention is only apparent when extending the area , when the object block is being updated by another process during schema changes, or when the database is blocked during checkpoint processing, RLS-Q exhaustion, a quiet point or stall, the BI backup phase of an online PROBKUP
11/9/2020 1:26 PM