HPlogo Communicator e3000 MPE/iX Express 1 Based on Release 7.0 > Chapter 5 Technical Articles

BIGPIN Feature: Support Up To 12000 Concurrent Processes

MPE documents

Complete PDF
Table of Contents
Index

By Scott J. McClellan
MPE/iX System Architect
Commercial Systems Division

INTRODUCTION


The maximum number of concurrent processes (sometimes referred to as MAXPIN) has been a key constraint limiting MPE/iX in high-growth, high-end customer environments. Removing this constraint is one of the key ingredients in Hewlett-Packard's continuing strategy to evolve MPE/iX -- providing growth for our high-end customers.

The new MAXPIN limit in MPE/iX Release 7.0 Express 1 has been raised from 8190 to 12000. MPE/iX Release 7.0 Express 1 contains a new SYSGEN feature, which allows customers to enable support for greater than 8190 concurrent processes (referred to as BIGPIN).

Feature Base MPE/iX 7.0 Release MPE/iX Release 7.0 Express 1
Core OS support for > 8190 concurrent processes Yes (cannot be enabled)Yes (disabled by default - can be enabled with SYSGEN)
Maximum value for MAXPIN.(Actual value for a given system will be determined by the MAXPIN scaling algorithm) 819012000 (Requires > 2GB memory, BIGPIN enabled, and is restricted to N-Class systems).
Enhanced "Program File Event" LoggingYesYes
SYSGEN>misc>system bigpin=on featureNoYes
HPMAXPIN CI VariableYesYes
Improved MAXPIN scaling algorithmYesYes
All HP products and subsystem have been modified to support > 8190 concurrent processes.NoYes

WHO SHOULD READ THIS ARTICLE?

  • High-end customers

  • System Administrators for high-end systems

  • Third-party software developer (or customers) with privileged applications and/or applications that explicitly use Process Identification Numbers.

This article contains:

  • A very brief overview of internal changes to MPE/iX (and the relevant potential external impact).

  • Discussion of the BIGPIN feature

  • Description of new/enhanced "Program File Event" logging feature, which logs potential issues on a customer system.

  • Description of the new MAXPIN Scaling algorithm.

  • Discussion of 5-digit PIN numbers (and changes to :SHOWQ and :SHOWPROC commands).

OVERVIEW OF INTERNAL OS CHANGES


The MPE/iX concurrent process limit has historically been limited by one of Process Management data structures called the Process Control Block (PCB). The PCB data structure predates MPE/iX as the key process management data structure on older MPE/V-based operating systems. The PCB was ported to MPE/iX and has existed as a Compatibility Mode data structure. The PCB is very heavily referenced by various components of the Compatibility Mode Operating System.

Over the years, there have been many changes to the PCB data structure that have expanded its capacity. Starting with MPE/iX Release 7.0, the PCB has been rearchitected as Native Mode data structure.

The PCB changes have been designed for maximal backward compatibility. As a result, existing CM or NM code which accesses the PCB should function correctly, (without modification) provided there are less than 8190 processes on the system.

BIGPIN Concept

MPE/iX Release 7.0 introduced the concept of "BIGPIN." The term BIGPIN refers to a system's ability to support greater than 8190 concurrent processes. In MPE/iX Release 7.0 the CORE OS is BIGPIN capable; but the BIGPIN feature (which is Configurable) could not be enabled. In MPE/iX Release 7.0 Express 1 customers can enable the BIGPIN feature in sysgen. The "system" command, which is available in the "misc" area of sysgen, has been modified to enable/disable the BIGPIN feature.

To enable BIGPIN do the following:

  sysgen
  [snip ...] 
  sysgen> misc
  [snip ...]
     misc> system bigpin=on
     misc> show system
      SYSTEM command          parameter           VALUE
      -----------------      -----------          -----
      USER VERSION           userversion          C.38.07
      LOGON PROMPT           logonprompt          MPE/iX:
      CI PROMPT              ciprompt             :
      RELEASE                                     X.70.14
      ENFORCE LOGON UDCS     enforcelogonudcs     OFF
      > 8K PROCESSES         bigpin               ON

EVENT LOGGING


MPE/iX has been enhanced to log, at runtime, certain events where programs execute operations that will not function correctly if the BIGPIN feature is enabled. Customers are encouraged to make sure that this event logging facility is enabled (which it should be by default) when they upgrade to Release 7.0. In particular, high-end customers who are potential candidates for turning on the BIGPIN feature (in a future release of MPE/iX) are encouraged to examine their system log files -- looking specifically for the new BIGPIN related events (described below).

If any BIGPIN events are logged on a customer's system, the customer will need to contact the company responsible for the software in question. Hewlett-Packard will be making changes to some additional software products in future release of MPE/iX. There should be no BIGPIN related events logged by the MPE/iX operating system. If there are any events logged by MPE, please contact your HP support representative with all the details.

For software supported by third-party software vendors, contact the vendor directly. Hewlett-Packard will be working with our software vendors to ensure they can make any necessary changes to support greater than 8190 concurrent processes.


NOTE: The event logging facility is designed to catch specific runtime events that will cause a problem ON SYSTEMS WITH GREATER THAN 8190 PROCESSES. None of these events represents issues on systems with less than or equal to 8190 processes. Furthermore, these events are expected to be relatively rare. For the most part, the kinds of operations that can potentially cause problems are fairly obscure. It is not "common" for third-party or customer software to reference the PCB (or other OS internal data structures) directly. Such references are limited to lower-level privileged mode applications. This is not expected to be a significant issue for customers as we move forward with a plan to support greater than 8190 processes. The event-logging facility should be viewed as a "safety net," designed to give HP and our customer's "piece of mind" as we make this transition.

HOW TO MAKE SURE PROGRAM EVENT FILE LOGGING IS ENABLED

The "SYSGEN>log/show slog" command can be used to display the current setting for various system logging events. The "status" corresponding to the "Program File Event" (event number 116) must be "ON."

Example 5-1 SYSGEN>log/show slog

 :sysgen
 [snip ...]
 sysgen> log
 [snip ...]
     log>show slog
        system log events             event #       status
        -----------------             -------       ------
        System Logging                  100           ON
        System Up                       101           ON
 [snip...]
        Program File Event              116           ON
        Native Mode Spooling            120          OFF
 [snip...]

DISPLAYING PROGRAM FILE EVENTS

To display all "Program File Event" log records, use the "LOGTOOL>list" command. The list command allows the user to explicitly specify the logging event number in the "type=" parameter. To see only Program File Events, specify "type=116."


NOTE: On MPE/iX Release 7.0, the LOGTOOL program can be found in PUB.SYS. On some older versions of MPE/iX, LOGTOOL was in DIAG.SYS.

LOGTOOL will format Program File Events as shown in the example below. There are two important fields in this log record:
  • EVENT TYPE. The "event type" field is used to distinguish different Program File Events. Event types -101, -102, and -103 indicate that a program performed an action that will not work properly with greater than 8190 process (BIGPIN=true). These events are described in detail below.

  • PROGRAM FILE NAME. This field contains the name of the program file corresponding to the program that has the issue. See "When/How Are Events Logged" below.

Example 5-2 LOGTOOL

 LOGTOOL>list log=587 type=116
                              SYSTEM ERROR LOG REPORT
                              =======================
 Report Date/Time:  THU, DEC  7, 2000 -  6:47 PM
 =======================================================================
 THU, DEC  7, 2000    6:45 PM    LOG0587.PUB.SYS                 #S3 (PIN 74)
 PROGRAM FILE EVENT
 EVENT TYPE: BIGPIN:Get'My'PCB'Offset    DELTA P:            $0
 STATUS:             $0                  PROGRAM FILE NAME:
 PPINTEST.TESTPINS.SYS  
 NM OFFSET:          $0                  USER:               MANAGER
 GROUP:                TESTPINS          ACCOUNT:              SYS
 JSNAME:                                 USER:               MANAGER
 GROUP:              TESTPINS            ACCOUNT:            SYS
 JSNAME:
 =======================================================================
 THU, DEC  7, 2000    6:45 PM    LOG0587.PUB.SYS                 #S3 (PIN 74)
 PROGRAM FILE EVENT
 EVENT TYPE: BIGPIN:SST 3                DELTA P:            $0
 STATUS:             $0                  PROGRAM FILE NAME:
 PPINTEST.TESTPINS.SYS  
 NM OFFSET:          $0                  USER:               MANAGER
 GROUP:                TESTPINS          ACCOUNT:              SYS
 JSNAME:                                 USER:               MANAGER
 GROUP:              TESTPINS            ACCOUNT:            SYS
 JSNAME:
 =======================================================================
 THU, DEC  7, 2000    6:45 PM    LOG0587.PUB.SYS                 #S3 (PIN 74)
 PROGRAM FILE EVENT
 EVENT TYPE: BIGPIN: LST 3               DELTA P:            $0
 STATUS:             $0                  PROGRAM FILE NAME:
 PPINTEST.TESTPINS.SYS  
 NM OFFSET:          $0                  USER:               MANAGER
 GROUP:                TESTPINS          ACCOUNT:              SYS
 JSNAME:                                 USER:               MANAGER
 GROUP:              TESTPINS            ACCOUNT:            SYS
 JSNAME:
 =======================================================================
 TYPE       DESCRIPTION         COUNT
 ======  ====================  ==========
    116    PROGRAM FILE EVENT         3
 ======  ====================  ==========
 Total records checked = 117.   Records selected = 3.
 ***********************************************************************
 [Report Completed]

WHEN/HOW ARE EVENTS LOGGED?

At runtime, if a program executes an operation that is not BIGPIN compatible, MPE/iX will set a flag indicating that "event" occurred. When a process terminates, MPE/iX checks to see if any such flags are set; and, if so, it invokes the system logging facility to log the actual events (as Program File Event - type 116 - log records).

Any given event will only be logged once for any given process (after that process terminates). It does not matter how many times a given process performs a given operation, the event will only be logged once.

SPECIFIC BIGPIN EVENTS

The table below lists all of the "Program File Events" that can potentially be logged. The "text" field refers to the "text" displayed (by LOGTOOL) in the "Event Type" field (see example above). The "Number" field is the actual numeric value associated with that Event Type.

EVENT TYPE Description
Text Number
cm_tos_reg_fixup-1Not a BIGPIN related event. The CM instruction emulator has taken an action on behalf of the user to fix-up a correctable addressing problem. No action is required if this event is logged.
BIGPIN:LST 3-101Program executed a CM "LST 3" instruction.
BIGPIN:SST 3-102Program executed a CM "SST 3" instruction.
BIGPIN:Get'My'PCB'Offset-103Program called Get'My'PCB'Offset
BIGPIN:AWAKE-201Program called AWAKE
BIGPIN:UNIMPEDE-202Program called UNIMPED
BIGPIN:LABEL'IS'SL'SEG-203Program called LABEL'IS'SL'SEG
BIGPIN:MARKER'IS'SL'SEG-204Program called MARKER'IS'SL'SEG
BIGPIN:FREEZE-205Program called FREEZE
BIGPIN:UNFREEZE-206Program called UNFREEZE
BIGPIN:LOCKSEG-207Program called LOCKSEG
BIGPIN:UNLOCKSEG-208Program called UNLOCKSEG
BIGPIN:LOGICALCST'-209Program called LOGICALCST'
BIGPIN:SEG'FROM'RTMSL-210Program called SEG'FROM'RTMSL
BIGPIN:TIMEREQ-211Program called TIMEREQ

For Event Types -101 through -211, the program will NOT function correctly with the BIGPIN feature enabled. You will need to resolve this issue with the appropriate "owner" before your system can have greater than 8190 processes executing concurrently.


NOTE: These programs should work properly as long as the BIGPIN feature is not turned on. The BIGPIN feature cannot be enabled on Release 7.0, but will be available in a future Release of MPE/iX.

You will need to determine the correct "owner" for each program that logs a BIGPIN event. You can find the name of the program that triggered the Event by looking at "Program File" field in the log record (using LOGTOOL - see above). Based on the name of the program, try to determine the correct "owner."

Program "owner" Action
Third-party software vendor.Contact that vendor for more information.
In-house written program. Contact HP Support to get information on how to modify the program so that it will work correctly with BIGPIN enabled.
Unsure?Contact your Hewlett-Packard support representative for help.
Hewlett-PackardReport this to your Hewlett-Packard support representative. Currently there are no pieces of software where this is "expected."

MAXPIN SCALING CHANGES


MPE/iX is a "one size fits all" operating system. The same version of MPE/iX runs on a broad range of systems - ranging from very low-end systems to very high-end (Enterprise Class) systems.

MPE/iX has a feature known as "MAXPIN scaling." The purpose of MAXPIN scaling is to limit the MAXPIN value on low-end machines to a more appropriate number, and to scale the size of various OS data structures accordingly. The MAXPIN scaling algorithm improves resource utilization on low-end system (especially with respect to resident memory usage).

The MAXPIN scaling algorithm has been around for several MPE/iX releases (originally introduced when MAXPIN was increased from 1559 to 3119 - Release 2.0 timeframe). When this algorithm was originally introduced, we supported several systems with VERY small minimum memory requirements. Many of these systems are now obsolete. The original algorithm was not updated to reflect changes in the HP e3000 product line.

In Release 7.0, we have a new MAXPIN scaling algorithm that is much more appropriate, given today's low-end systems, and takes into account future enhancements to MPE/iX. These improvements will continue to increase the maximum MAXPIN value for future high-end systems.

The original MAXPIN-scaling adjusted MAXPIN based on the amount of physical memory on a system. This will continue to be the case for Release 7.0. However, the algorithm uses a different physical memory values and different MAXPIN values. In the future, additional criteria may be added to the algorithm.

In MPE/iX Release 7.0 Express 1, support for greater than 8190 processes will require > 2 GB of memory, the BIGPIN feature must be enabled, and the system must be an N-Class system.

Below is a table that compares the MAXPIN scaling values for Release 6.5 (and before) and to MPE/iX Release 7.0 Express 1 scaling values.

 Physical Memory (m)       <= MPE/iX Release 6.5     MPE/iX Release 7.0
 m < 32 MB                            200                           400 [2]
 32 MB <= m < 48 MB                   400                           400 [2]
 48 MB <= m < 64 MB                  3000                           400 [2]
 m = 64 MB                           5460                           400 [2]
 m > 64 MB                           8190                           400 [2]
 m <= 64 MB                            n/a [3]                      400
 64 MB < m <= 256 MB                 8190 [4]                      1000
 256 MB < m <= 512 MB                8190 [4]                      2000
 512 MB < m <= 1 GB                  8190 [4]                      4000
 1 GB < m <= 2 GB                    8190 [4]                      8190
 m > 2 GB                            8190 [4]                      8190/12000 [1]

  1. For MPE/iX Release 7.0 Express 1 the maximum MAXPIN value will be 12000 if the system has > 2GB of memory, is an N-Class system, and BIGPIN has been enabled in SYSGEN. Otherwise, the maximum MAXPIN value is 8190..

  2. All of these cases fall into the "m <= 64 MB" case on 7.0.

  3. The "m <= 64 MB" case was broken down into finer granularity for MPE/iX releases prior to 7.0.

  4. On MPE/iX 6.5 (and earlier), any system with greater than 64 MB of memory was allowed MAXPIN equal to the maximum MAXPIN value for that release. On 6.5, maximum MAXPIN was 8190.

HPMAXPIN VARIABLE


A new system variable, HPMAXPIN, has been defined in Release 7.0. HPMAXPIN will return the maximum number of concurrent processes supported on any given system. HPMAXPIN is a standard, pre-defined integer, read-only CI variable.

Example 5-3 HPMAXPIN VARIABLE

 :help hpmaxpin
 HPMAXPIN    The maximum number of concurrent processes supported on this
             system.
             Type= Read-only, Integer
 :showvar hpmaxpin
 HPMAXPIN = 1000

FIVE DIGIT PIN NUMBERS


Starting with MPE/iX Release 7.0, developers should ensure that their software is capable of handling PIN numbers greater than 8190. Once we support greater than 8190 processes, we will also be supporting > 9999. This means that PINs will require more than 4 ASCII digits to be represented in decimal. Third-party software developers and customers are encouraged to examine their software to ensure it is capable of handling 5-digit PIN numbers.

There are a variety of ways that code can be affected by the change from 4- to 5-digit PINs. An obvious example is code that displays PIN number, but does not reserve enough room for 5-digits. A subtler example is code that uses the PIN to construct a unique temporary file name. If that code appends a 5-digit PIN to a "prefix" that is 4 digits, the size of the file name will overflow the 8 character limit (for MPE filenames).

There are two MPE/iX CI commands that assume 4-digit PIN numbers in their command output. The two commands are :SHOWQ and :SHOWPROC. The MPE/iX development team worked with a set of key third-party software developers to determine the "best" way to change :SHOWQ and :SHOWPROC to accommodate 5-digit PIN numbers. In deciding the "best" approach, we had to evaluate two (somewhat) mutually exclusive objectives:
  • Backward compatibility. Minimal (or ideally zero) impact to existing programs and scripts that may parse output from :SHOWQ and/or :SHOWPROC.

  • Human readability. Making the output as easy to read as possible, on a terminal, by an end-user.

In the end we weighted the backward compatibility constraint higher, and selected the approach that minimized the risk of introducing compatibility issues. This resulted in slightly different approaches for the :SHOWQ command as opposed to the :SHOWPROC command.

:SHOWQ

The :SHOWQ command is a much older MPE command - existing long before MPE/iX. The output of :SHOWQ is also much more "column oriented" (compared to :SHOWPROC). In general, users are discouraged from making assumptions regarding specific column numbers in command output. Various CI functions have been added in MPE/iX to assist users in parsing output without relying on column (e.g. the "word" function). However, given the fact that :SHOWQ has been around for a very long time, its columnar output, and given older scripts (etc.) tend to make more assumptions about column, we opted not to change the columns for :SHOWQ output. As a result, 5-digit PIN numbers will "run together" with the field that follows the PIN in :SHOWQ output. Fortunately, the field following PIN in :SHOWQ is a Job/Session number. Job/Session numbers are displayed as #Jxxxxx or #Sxxxxx. As a result, the output from :SHOWQ is still fairly "readable" even if a 5-digit PIN runs together with a Job/Session number.

Example 5-4 :SHOWQ OUTPUT

  DORMANT                                   RUNNING
 Q  PIN   JOBNUM                           Q  PIN   JOBNUM
 A   1                                     C  M92   #S80
 B   2                                     D  U103  #J362
 B   3                                     D  U10951#J60
 A   4
 [output snipped for brevity]
 C  M59   #S81C  M60   #S49
 D  U10951#J60
                     ------QUANTUM-------
 QUEUE  BASE  LIMIT  MIN    MAX    ACTUAL  BOOST  TIMESLICE
 -----  ----  -----  ---    ---    ------  -----  ---------
  CQ    152    200   1      2000   4       DECAY    200
  DQ    202    238   2000   2000   2000    DECAY    200
  EQ    240    253   2000   2000   2000    DECAY    200
 
Example 5-5 COLUMN NUMBERS FOR :SHOWQ

 ---------------------------- Column Numbers -------------------------
 1         2         3         4         5         6         7
 12345678901234567890123456789012345678901234567890123456789012345689
  DORMANT                                   RUNNING
 Q  PIN   JOBNUM                           Q  PIN   JOBNUM
 L  Lddddd#Lddddd                          L  Lddddd#Lddddd

 Key:
 L = Letter
 d = Digit (decimal)
 # = # character

:SHOWPROC

The :SHOWPROC command is a fairly new MPE/iX command. In addition, the output from :SHOWPROC is not columnar by nature. In particular, for the :SHOWPROC ;TREE command, it would be very difficult to parse the output using column numbers. Given all these reasons, we decided to change :SHOWPROC output to display PIN numbers in a field wide enough for 5-digits followed by a space (separating the PIN number from the next field on the output line). On Release 7.0, PIN numbers are left justified within the 5-digit field (they are left justified today in a 4-digit field).

The :SHOWPROC command can be used in (essentially) three different ways:
  • show invoking process only (default);

  • show all process in a given job (using the ;JOB= keyword)

  • show all processes in a given tree (using the ;TREE option).

Example 5-6 :SHOWPROC OUTPUT

  :SHOWPROC (default)

  ---------------------------- Column Numbers -------------------------
  1         2         3         4         5         6         7
  123456789012345678901234567890123456789012345678901234567890123456789
  :showproc
  QPRI  CPUTIME   STATE  JOBNUM  PIN   (PROGRAM) STEP
  C152  0:02.377  READY  S9      xxxxx :SHOWPROC

  ---------------------------------------------------------------------

  SHOWPROC ;JOB=

  ---------------------------- Column Numbers -------------------------
  1         2         3         4         5         6         7
  123456789012345678901234567890123456789012345678901234567890123456789

  :showproc ;job=#j10
  QPRI  CPUTIME   STATE  JOBNUM  PIN   (PROGRAM) STEP
  D202  0:00.232  WAIT   J10     xxxxx :RUN SPFLSTNR.LASER
  D202  00:13:46  WAIT   J10       xxxxx (SPFLSTNR.LASER.LARC)
  ---------------------------------------------------------------------

  SHOWPROC ;TREE

  ---------------------------- Column Numbers -------------------------
  1         2         3         4         5         6         7
  123456789012345678901234567890123456789012345678901234567890123456789
  :showproc 46;system;tree
  QPRI  CPUTIME   STATE  JOBNUM  PIN   (PROGRAM) STEP
  B100* 0:28.653  WAIT           46    (JOB.PUB.SYS)
  B152  0:00.224  WAIT   J3        xxxxx (JSMAIN.PUB.SYS)
  D202  0:00.252  WAIT   J3          xxxxx :RUN control.trnspool
  D202  00:11:11  WAIT   J3            xxxxx (CONTROL.TRNSPOOL.NSD)
  D205  00:36:16  WAIT   J3              xxxxx (TSENDMXL.TRNSPOOL.NSD)
  D202  0:27.548  WAIT   J3                xxxxx (THREADM.TRNSPOOL.NSD)
  [snip]


NOTE: Column numbers are shown above for informational purposes only.
Users are encouraged NOT to use column numbers to parse command output. Column numbers are subject to change in future releases of MPE/iX.




Chapter 5 Technical Articles


HPCPUNAME Model Strings Supported With MPE/iX
Release 7.0 and Possible Bootup Failures