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)
8190
12000 (Requires > 2GB memory, BIGPIN enabled, and is
restricted to N-Class systems).
Enhanced "Program File Event" Logging
Yes
Yes
SYSGEN>misc>system bigpin=on feature
No
Yes
HPMAXPIN CI Variable
Yes
Yes
Improved MAXPIN scaling algorithm
Yes
Yes
All HP products and subsystem have been modified to support > 8190
concurrent processes.
No
Yes
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.
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
-1
Not 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
-101
Program executed a CM "LST 3" instruction.
BIGPIN:SST 3
-102
Program executed a CM "SST 3" instruction.
BIGPIN:Get'My'PCB'Offset
-103
Program called Get'My'PCB'Offset
BIGPIN:AWAKE
-201
Program called AWAKE
BIGPIN:UNIMPEDE
-202
Program called UNIMPED
BIGPIN:LABEL'IS'SL'SEG
-203
Program called LABEL'IS'SL'SEG
BIGPIN:MARKER'IS'SL'SEG
-204
Program called MARKER'IS'SL'SEG
BIGPIN:FREEZE
-205
Program called FREEZE
BIGPIN:UNFREEZE
-206
Program called UNFREEZE
BIGPIN:LOCKSEG
-207
Program called LOCKSEG
BIGPIN:UNLOCKSEG
-208
Program called UNLOCKSEG
BIGPIN:LOGICALCST'
-209
Program called LOGICALCST'
BIGPIN:SEG'FROM'RTMSL
-210
Program called SEG'FROM'RTMSL
BIGPIN:TIMEREQ
-211
Program 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-Packard
Report 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]
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..
All of these cases fall into the "m <= 64 MB" case on 7.0.
The "m <= 64 MB" case was broken down into finer granularity
for MPE/iX releases prior to 7.0.
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).
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