  Accessing MONITOR per-CPU Information 
 The Question is:
 
How can I determine the CPU-usage of a system by using
C-functions.
 
I want the same information as I get with the
'monitor system' command (CPU busy)
 
 
 The Answer is :
 
  There is no documented interface to MONITOR, but with access to the
  OpenVMS source listings CD-ROM set (Order QB-MT1AB-E8 for OpenVMS Alpha,
  QB-001AB-E8 for OpenVMS VAX) and look at the facility [MONTOR] (yes,
  "MONTOR", not "MONITOR"), and specifically look at the (undocumented,
  unsupported, and subject to change without notice) exe$getspi interface
  used within MONITOR.  (You will need to LINK against a MONITOR shareable
  image to resolve your references to the exe$getspi interface.)
 
  Alternatively, you will want to acquire and read through the Internals
  and Data Structures Manual (editions for OpenVMS VAX and OpenVMS Alpha)
  from Digital Press (www.bh.com) and create a small kernel-mode routine
  to acquire the information from the vector that is the source of the
  information reported by MONITOR and other utilities
 
  In the per-CPU database referenced by the SMP$GL_CPU_DATA address, look
  at the CPU$Q_NULLCPU cell for each CPU.
 
  Additionally, the SNMP MIB for OpenVMS containing performance data may
  be of interest.
 
  The OpenVMS Wizard would not be surprised to learn there are various
  programs available from the Encompass (formerly DECUS) library and
  from other sources that could be used as examples of the exe$getspi
  and/or the kernel per-CPU database.  One such example of calling the
  MONITOR interface exe$getspi is included on various of the OpenVMS
  Freeware: [SRH_EXAMPLES]I_SPI.* and related.
 
  Also potentially of interest will be the OpenVMS Galaxy GCU processor
  load-balancing and SMP process/processor (re)scheduling example,
  provided on V7.2 and later releases: sys$example:GCU$BALANCER.C.  A
  related class scheduler example is available in sys$examples:class.c
 
  With OpenVMS V7.3 and later, the (undocumented and unsupported)
  exe$getspi interface was replaced with the (documented and supported)
  sys$getrmi interface.
 
  Related topics in Ask The Wizard include (2), (697), (1639), (3398),
  (3687), (4059), (4626), (5235), (5702), (7054), (7155), and likely
  others.
 
 Answer written or last revised on  11-JAN-2002 
