Programming Interface Information:
The Monitor Records are intended Programming Interfaces that
allow the customer to write programs to obtain services of z/VM.
Control Block Contents
DSECT NAME - PRCSMT FUNCTION - Map a Monitor record. LOCATED BY - Through the Monitor Control Area REFERENCED CONTROL BLOCKS - MRRECHDR Monitor Record Header NAME - MRPRCSMT DESCRIPTIVE NAME - Monitor Event Record Domain 5 - Processor Domain Record 21 - Multithreading config change event DESCRIPTION - Records parameters of a successful SET MULTITHREAD command and the resulting configuration settings. This record will be generated only if multithreading is enabled. For each multithreading Configuration change, this record is generated once at the start of the change and again at the end of the change. Both the start and end records describe the new configuration details. Values for use with PRCSMT_CAL_STATUS: x'80' - Multithreading config change processing has started. Another record of this type with PRCSMT_CAL_END set will indicate the end of the transition. x'40' - Multithreading config change processing has finished. An earlier record of this type with PRCSMT_CAL_START set indicates the start of the transition. IMPLICATIONS OF MULTITHREADING CONFIGURATION CHANGES. The SET MULTITHREAD command allows the requested number of threads per core to be changed. Changes to the requested number of threads do not necessarily cause changes to the number of activated threads per core of any CPU type for several reasons: - The SET MULTITHREAD command was successful but it did not cause an actual change to any of the requested thread counts. For example, SET MULTITHREAD INITIAL was issued but the multithreading configuration had never been modified by a previous SET MULTITHREAD command. - The requested thread counts changed, but did not cause a change in activated thread counts for one of the following reasons: - A change between MAX and a number, but both of the values result in the same effective requested thread count. - The previous and new requested thread counts are greater than the supported thread count for the CPU type so the resulting activated thread count does not change. - At this time, z/VM only supports IFLs for multithreading so activated thread count changes can only occur for the IFL CPU type. When the activated thread count per core of a CPU type changes, each online core of the CPU type will have threads either activated or deactivated. If there are no online cores of the CPU type then the change will not result in a processor configuration change. Activation and deactivation of threads cause processors associated with those threads to be logically varied on or off, respectively. Processors associated with thread 0 are never activated or deactivated as a result of a multithreading configuration change. Monitor is notified about each thread activation or deactivation by event records MRPRCVON and MRPRCVOF which will indicate that the reason is because of thread activation or deactivation. Those event records are generated between the start and end copies of this record as indicated by the value in PRCSMT_CAL_STATUS. After threads are activated or deactivated: - The total number of logical processors is increased or decreased accordingly. Therefore more or fewer per processor Monitor records will be generated per sample interval. - The number of threads/logical processors per core changes. Therefore any data that is sensitive to threading levels will be affected. Sample intervals that end or start between the start and end of the multithreading transition reported by the start and end versions of this record will contain data that spans different configurations. The times of the start and end records can be used to bound the interval affected. Sample records that contain data related to multithreading contain additional flags and indicators to describe the implications of the configuration change on the data. - MRPRCMFM - These are per processor records so the number of records generated will change due to thread activations/deactivations. However, the metrics are repeated in records for the same core. - PRCMFM_CORTHRDS increases or decreases due to activations/deactivations. - PRCMFM_CORTLSEQ provides information on the number of times the core threading level changed. - MRSYTPRP - These are per processor records so the number of records generated will change due to thread activations/deactivations. - SYTPRP_CAL_MTSFLGS.SYTPRP_CAL_HISSFCC will be set when a multithreading configuration change occurs during the interval. - Cores that had a threading level change during the interval will report SYTPRP_KNODATA_TRANSITION in data values affected by the transition. - SYTPRP_CAL_MTSFLGS.SYTPRP_CAL_HISSFCC will be set when a multithreading configuration change occurs during the interval. - Several fields report the time of the threading level change for the core, the amount of time at each threading level, as well as SYTPRP_CORTHRDS and SYTPRP_CORTLSEQ. Sample records that are generated during the transition for different cores of a CPU type may report different CORTHRDS values. Per processor records are generated at different times, and it is possible that when a record for one thread of a core is generated the threading level was different than when the record for the other processor is generated. It is possible that the core threading level changed and returned to the original value during the interval. Although the prior and final configurations look the same, there were multithreading configuration changes that would affect the reported data. Any of the processors that were deactivated and then activated again would appear as having been brought online during the interval. CORTHRDS would report the same value before and after the transition. Therefore it is recommended that the CORTLSEQ field in records should be used to determine whether a multithreading configuration change has occurred. If the value is odd then a core threading-level transition is in progress. The value is incremented back to an even number at the completion of the threading-level change. If it is even and unchanged from the previous record then there have been no changes to the multithreading configuration for the core reported in the record. For these and other reasons, caution should be used in interpreting data from Monitor records during the transition if there is an actual change in threading level. It would be reasonable to treat the periods prior to and after the multithreading configuration change as completely different configurations for analysis purposes and completely exclude the period of the transition.
MRPRCSMT Control Block Contents
Offsets Dec Hex Type Len Name (Dim) Description 0 0 Structure 36+ PRCSMT Start of monitor record. 0 0 Character 0 PRCSMT_MRHDR Record header. 0 0 Character 20 MRHDR 0 0 Unsigned 2 MRHDRLEN 2 2 Unsigned 2 MRHDRZER 4 4 Unsigned 1 MRHDRDM 5 5 Unsigned 1 * 6 6 Unsigned 2 MRHDRRC 8 8 Character 8 MRHDRTOD 16 10 Character 4 * 20 14 Character 0 MRHDR_END
The multithreading configuration change sequence number is incremented twice per configuration change. Therefore, (PRCSMT_RCCSMTSQ+1)/2 is the number of configuration changes since IPL.
20 14 Unsigned 4 PRCSMT_RCCSMTSQ Multithreading config change sequence number. Odd when a SET MT command is in progress and even otherwise. When 0, the multithreading config has not been modified by SET MT. Always odd and the same value in the start and end records for the same transition.
Information describing the MULTITHREADING configuration change. These records are issued as a start/end pair to bound the multithreading config transition interval. During that interval, logical processors may be added or removed as a result of thread activation or deactivation, respectively. Unless fields state otherwise, the content of the start and end records will match, describing the target configuration.
24 18 Unsigned 1 PRCSMT_CAL_STATUS Status codes. Different flags may be set in the start and end records.
Fields and arrays that contain thread counts might have values from 0 to the configured max threads value (PRCSMT_CALMAXTC) or the value 255 (x'FF) to indicate that MAX was specified for that CPU type or for ALL. Multithreading enablement setting which limit possible config changes. - When multithreading is enabled, the maximum thread count is set. The SET MULTITHREAD command cannot allow requests for activated thread counts larger than that value.
25 19 Unsigned 1 PRCSMT_CALMAXTC Configured maximum thread count.
Parameters from MULTITHREADING configuration statement and most recent completed SET MULTITHREAD command along with the resulting activated thread counts. See the CPUTINFO description for a detailed description of array entry contents.
26 1A Unsigned 1 PRCSMT_RCCCOALL Thread count specified on ALL parameter of the Multithreading Statement. 27 1B Unsigned 1 PRCSMT_RCCSMALL Thread count specified for ALL parameter of SET MULTITHREAD command. 28 1C Bitstring 1 PRCSMT_RCCSMSET SET MULTITHREAD flags. 1... .... PRCSMT_RCCSMINI SET MULTITHREAD INITIAL was specified. .1.. .... * ..1. .... * ...1 .... * .... 1... * .... .1.. * .... ..1. * .... ...1 * 29 1D Unsigned 1 PRCSMT_CAL_CPUTACNT Number of entries in PRCSMT_CPUTINFO array. 30 1E Unsigned 2 PRCSMT_CAL_CPUTAESZ Size of an entry in the PRCSMT_CPUTINFO array. 32 20 Unsigned 2 PRCSMT_CAL_CPUTAOFF Offset to array PRCSMT_CPUTINFO of numbers for threads per core by CPU type. 34 22 Unsigned 2 * Reserved for IBM use. 36 24 Character 0 PRCSMT_END End of record
Array of per-CPU-type data. Each CPU type entry includes number of threads per core as specified on SET MULTITHREAD command and MULTITHREADING statement, resulting requested values, hardware and z/VM supported thread counts, and activated thread counts given the requested multithreading configuration. This is a variable length array with one entry per CPU type. The entries are ordered by the numeric CPU type ID but are not indexed by that value because entries are note included for unused numeric CPU type IDs. Therefore the CPU type ID is included in each array entry. PRCSMT_CPUTINFO describes the structure of one array entry. Use PRCSMT_CAL_CPUTAOFF to determine the offset within this monitor record to the beginning of the PRCSMT_CPUTINFO array. Use PRCSMT_CAL_CPUTACNT to determine the number of entries present in the array. Use PRCSMT_CPUTAESZ to determine the size of each entry. The most recent successful SET MULTITHREAD command overrides setting from the MULTITHREADING statement and any previous SET MULTITHREAD Command. For the SET MULTITHREAD Command parms in _RCCSMMNT: - If MAX is specified for any operand, the operand value will be set to X'FF'. - If ALL was not specified, any unspecified CPU type will have a value of x'00'. - If INITIAL was specified, the ALL and all CPU type values will be x'00'. The results of the multithreading config change are described by _RCCCRMNT - current requested values. These are from the most recent SET MULTITHREAD command (_RCCSMxxx) if issued, otherwise from the Multithreading statement (_RCCCOxxx). For SET MULTITITHREAD without ALL specified, any unspecified CPU types retain the previous requested value. _RCCACMNT - actual activated thread counts given current requested values (RCCCRMNT), and the supported threading level for hardware (_RCCHWMNT) and z/VM (_RCCSYMNT).
Offsets Dec Hex Type Len Name (Dim) Description 0 0 Structure 8 PRCSMT_CPUTINFO 0 0 Unsigned 1 PRCSMT_CAL_CPUTYPE CPU Type for this entry. 1 1 Unsigned 1 PRCSMT_CAL_RCCCOMNT Requested threads for this CPU type on the Multithreading Statement. 2 2 Unsigned 1 PRCSMT_CAL_RCCHWMNT Maximum number of threads supported by hardware for this CPU type. 3 3 Unsigned 1 PRCSMT_CAL_RCCSYMNT Maximum number of threads supported by z/VM for this CPU type. 4 4 Unsigned 1 PRCSMT_CAL_RCCACMNT Number of activated threads for this CPU type. The start record contains the values from before the change and the end record contains the new values. 5 5 Unsigned 1 PRCSMT_CAL_RCCSMMNT Specified threads for this CPU type requested on the most recent SET MULTITHREAD command. 6 6 Unsigned 1 PRCSMT_CAL_RCCCRMNT The current requested threads for this CPU type. The values are from the most recent SET MULTITHREAD command if issued, or the Multithreading statement. The start record contains the values from before the change and the end record contains the new values. 7 7 Unsigned 1 * Reserved for IBM use. 8 8 Character 0 PRCSMT_CPUTINFO_END End of CPUTINFO entry
MRPRCSMT Cross Reference
Hex Hex Name Offset Length Value MRHDR 0 20 MRHDR_END 14 0 MRHDRDM 4 1 MRHDRLEN 0 2 MRHDRRC 6 2 MRHDRTOD 8 8 MRHDRZER 2 2 PRCSMT 0 36+ PRCSMT_CAL_CPUTACNT 1D 1 PRCSMT_CAL_CPUTAESZ 1E 2 PRCSMT_CAL_CPUTAOFF 20 2 PRCSMT_CAL_CPUTYPE 0 1 PRCSMT_CAL_RCCACMNT 4 1 PRCSMT_CAL_RCCCOMNT 1 1 PRCSMT_CAL_RCCCRMNT 6 1 PRCSMT_CAL_RCCHWMNT 2 1 PRCSMT_CAL_RCCSMMNT 5 1 PRCSMT_CAL_RCCSYMNT 3 1 PRCSMT_CAL_STATUS 18 1 PRCSMT_CALMAXTC 19 1 PRCSMT_CPUTINFO 0 8 PRCSMT_CPUTINFO_END 8 0 PRCSMT_END 24 0 PRCSMT_MRHDR 0 0 PRCSMT_RCCCOALL 1A 1 PRCSMT_RCCSMALL 1B 1 PRCSMT_RCCSMINI 1C 80 PRCSMT_RCCSMSET 1C 1 PRCSMT_RCCSMTSQ 14 4
This information is based on z/VM V6R4.0.
Last updated on 5 Oct 2016 at 13:56:20.
Copyright IBM Corporation, 1990, 2016