Simultaneous multithreading (SMT)

Simultaneous multithreading (SMT) technology, available on the IBM® z13® and later and IBM LinuxONE servers, offers intelligently implemented 2-way simultaneous multithreading. SMT allows two active instruction streams per core, each dynamically sharing the core's execution resources. SMT is available for workloads running on IFL and zIIP.

z/VM provides host exploitation support for SMT, which enables z/VM to dispatch work on up to two threads (logical CPUs) of an IFL processor core. z/VM multithreading support is enabled only for IFL processors in a LINUX only mode or z/VM® mode logical partition.

z/VM exploitation of SMT enables z/VM to dispatch work on an individual thread of an IFL core, allowing a core to be shared by multiple guest CPUs or z/VM Control Program tasks. This can result in increased work throughput per core from more efficient use of shared core resources.

Multithreading support is available on a z/VM system only if the facility is available on the hardware and enabled on the z/VM system with the MULTITHREADING system configuration statement. The MULTITHREADING statement is optional, and multithreading is disabled if the statement is omitted.

If multithreading is enabled, the SET MULTITHREAD command can be used to nondisruptively switch between one and two activated threads per IFL core. Performance of a system and workload with one active thread per core is comparable to that of the same system and workload with multithreading disabled. Thus, the dynamic SMT level capability allows the benefit of multithreading to be evaluated for a workload without requiring an outage to enable or disable SMT.

z/VM enablement of multithreading requires that z/VM is configured to run with the HiperDispatch vertical polarization mode enabled and with the dispatcher work distribution mode set for reshuffle. Once enabled, multithreading cannot be disabled without a re-IPL. Dedication of virtual CPUs to z/VM processors is not supported with multithreading because it is not allowed when HiperDispatch vertical polarization mode is active.

When multithreading is enabled, prorated core time is used in the pool limiting calculation for all resource pools and in the consumption limiting calculation for a virtual machine being consumption limited. If multithreading is not enabled, raw CPU time is used instead. For an explanation of the three measures of CPU time, see z/VM: Performance.

z/VM host multithreading exploitation support does not virtualize threads for guest exploitation. However, Linux® guests might benefit from the host support because the first level z/VM system is able to get higher throughput from the multithreaded IFL cores.