MULTITHREADING Statement
Purpose
Use the MULTITHREADING statement to define the multithreading characteristics of the system. The statement also defines system options that can be customized if multithreading is enabled. Multithreading support is available on the system only if the simultaneous multithreading (SMT) facility is installed on the hardware.
How to Specify
The MULTITHREADING statement is optional. Only one statement is allowed. Subsequent MULTITHREADING statements cause an error message to be displayed and are not processed. If the MULTITHREADING statement is not specified, multithreading will be disabled on the system.
Operands
- DISAble
- ENAble
- specifies whether multithreading is enabled or disabled on the system.
Multithreading will be enabled only if z/VM® is configured to run with the HiperDispatch vertical polarization mode enabled and with the dispatcher work distribution mode set to reshuffle. For more information, see SRM Statement.
- MAX_THREADS MAX
- MAX_THREADS mm
- specifies the upper limit of the number of threads to activate on each core. The value
mm must be a decimal number 2 - 32.
If MAX_THREADS is not specified, or if MAX_THREADS MAX is specified, or if mm is greater than the number of threads per core supported by the hardware and z/VM, the maximum supported threads value is used. This value is the lesser of the highest number of threads per core available on the hardware and the highest number of threads per core supported by z/VM.
The value used for MAX_THREADS directly affects the processor numbers assigned to each thread. This value, rounded up to a power of 2, is the number of CPU addresses assigned to each core.
- TYPE ALL {nn|MAX}
- TYPE CP {nn|MAX}
- TYPE ICF {nn|MAX}
- TYPE IFL {nn|MAX}
- TYPE ZIIP {nn|MAX}
- specifies the CPU type and the number of threads for that type. If ALL is specified, no
individual CPU types may be specified.
The value specified by this operand, and the maximum supported threads as defined in the description of the MAX_THREADS operand, tell z/VM the number of threads to activate on each CPU type. The value nn must be a decimal number 1 - 32 and cannot be greater than the value specified for the MAX_THREADS operand. If ALL or an individual CPU type is not specified, or if MAX is specified, the maximum supported threads value for the CPU type is used.
Usage Notes
- The number of threads activated per core can be set only at system IPL, using this configuration statement, and modified after IPL using the SET MULTITHREAD command. However the SET MULTITHREAD command can be used only if multithreading is enabled using the MULTITHREADING statement.
- This level of z/VM supports up to 2 threads for IFL CPUs and 1 thread for all other CPU types.
- If MAX is specified or allowed to default for MAX_THREADS, or for ALL, or for any of the CPU type operands, the multithreading level might change when the system is migrated to a new machine or is upgraded to a new level of z/VM.
- When multithreading is enabled, each core in the configuration comprises multiple processors,
each with its own processor address. The processor address then consists of the bits comprising the
core ID, concatenated with bits comprising a thread ID that ranges from zero to MAX_THREADS minus 1.
The number of bits in the thread ID is the smallest number that can accommodate this range. For
example, when MAX_THREADS is 2, one bit is needed to represent thread IDs 0 and 1; thus core ID 0003
is shifted left one bit, so that core ID 0003 comprises processor addresses 0006 and 0007. In this
example, any processors defined above 0027 would, when multithreading is enabled,
become cores with processor addresses greater than 004F. z/VM supports up to 80 (address 004F) processors. The
processors with addresses above 004F will be offline at IPL.
For more information, see
CPU-Address Expansion
in z/Architecture Principles of Operation. - To display the system's multithreading status, use the QUERY MULTITHREAD command. To display processor core utilization information, use the INDICATE MULTITHREAD command. For more information, see QUERY MULTITHREAD and INDICATE MULTITHREAD.
Example
Multithreading Enable