Communicator e3000 MPE/iX Release 7.0 (Software Release C.70.00): HP e3000 MPE/iX Computer Systems
> Chapter 5 Technical ArticlesFuture Support For Greater Than 8190 Concurrent Processes |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MPE/iX System Architect Commercial Systems Division INTRODUCTIONThe maximum number of concurrent processes (sometimes refereed to as MAXPIN) is 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 maximum number of concurrent processes supported by MPE/iX is 8190. This limit has not been changed in the last several MPE/iX Releases, and is not changed in Release 7.0. However, MPE/iX Release 7.0 contains many of the changes necessary to support greater than 8190 concurrent processes in a future release of MPE/iX. By incorporating these changes into Release 7.0, Hewlett-Packard has ensured that Release 7.0 has an adequate foundation to allow MPE/ix to support greater than 8190 concurrent processes in a 7.0-based Express Release. WHO SHOULD READ THIS ARTICLE?
This article contains:
OVERVIEW OF INTERNAL OS CHANGESThe 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. The current MAXPIN limit is a function of PCB capacity, and is limited by 16-bit CM addressing restrictions. In 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 ConceptRelease 7.0 introduces the concept of "BIGPIN." The term BIGPIN refers to a system's ability to support greater than 8190 concurrent processes. In Release 7.0, the CORE OS is BIGPIN capable; but the BIGPIN feature (which is Configurable) will not be enabled. In a future release of MPE/iX, customers will be notified how to turn on the BIGPIN feature.EVENT LOGGINGMPE/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.
HOW TO MAKE SURE PROGRAM EVENT FILE LOGGING IS ENABLEDThe "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 EVENTSTo 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."
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 EVENTSThe 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.
MAXPIN SCALING CHANGESMPE/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 particular, in a future release of MPE/iX, support for greater than 8190 processes will require > 2 GB of memory AND the BIGPIN feature will need to be enabled. Below is a table that compares the MAXPIN scaling values for Release 6.5 (and before) and to Release 7.0 scaling values. Physical Memory (m) <= Release 6.5 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 [1]
HPMAXPIN VARIABLEA 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 NUMBERSStarting 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:
:SHOWQThe :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 OUTPUTDORMANT 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 #S81 C 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 200Example 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 :SHOWPROCThe :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:
: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]
|