Using SMTMET To Extract SMT-2 Metrics From Monitor

With z/VM for z13, z/VM can now dispatch work on up to two threads of a z13 IFL core. With this support new SMT metrics were added to z/VM to help the z/VM system administrator understand how SMT is behaving in his environment.

This article describes the new SMTMET tool that extracts SMT metrics from monitor record Domain 0 Record 2. The article describes how to do the extraction and what the calculated metrics mean.


How to Collect the Data

To collect the data, run CP Monitor with samples enabled. The SMT performance information lands in the D0 R2 monitor records. To make a recording of the monitor records, run MONWRITE. If you need help running MONWRITE, refer to this article.


How to Reduce the Data

Once you have a MONWRITE file, you can use the SMTMET tool to obtain the SMT metrics in a human-readable format. The process amounts to this:

  • Start with a MONWRITE file that contains D0 R2 records.
  • Run the SMTMET tool against the MONWRITE file. The SMTMET takes the MONWRITE file as input and produces the report file as output. The report file will have CMS filetype $SMTMET.


Appearance of the $SMTMET Report

The SMT metrics describe the performance experience of the cores in the multithreading environment over time. This report consists of per-core-type metrics calculated across all cores for the core type and per-core metrics calculated across all threads of a specific core. The resulting tabular report bears a vague resemblance to a Perfkit report.

Here is an excerpt of a z13 multithreading report. The report is wide; on this web page, for page rendering purposes, we have broken the columns into groups.

The workload here was entirely contrived for internal lab purposes; the values in the report mean absolutely nothing as far as customer workload expectations are concerned.

The first half of the report consists of per-core-type metrics.

D0R2 Per-Core-type Report for file: VIODGLD2 MONDATA Interval Core Sampled Pct Core Pct Cap __Ended_ Type ___Secs___ ___Cores__ Prodctvity __Factor__ >>Mean>> IFL 120.0 4.0 89.2 115.8 20:11:48 IFL 120.0 4.0 88.5 121.1 20:12:18 IFL 120.0 4.0 89.3 117.3 20:12:48 IFL 120.0 4.0 86.1 126.1 20:13:18 IFL 120.0 4.0 87.8 123.5 20:13:48 IFL 120.0 4.0 87.6 120.0 20:14:18 IFL 119.6 4.0 86.7 123.1 20:14:48 IFL 120.0 4.0 89.2 117.4 20:15:18 IFL 120.0 4.0 89.2 117.9 20:15:48 IFL 120.0 4.0 89.3 115.3 20:16:18 IFL 120.0 4.0 88.4 118.1 20:16:48 IFL 120.0 4.0 89.1 115.4 20:17:18 IFL 120.0 4.0 89.5 118.8 20:17:48 IFL 120.0 4.0 88.5 118.3 20:18:18 IFL 120.0 4.0 90.2 113.8 20:18:48 IFL 120.0 4.0 89.5 116.2 20:19:18 IFL 120.0 4.0 88.1 118.5 (continued) Pct Max Pct MT Average _Cap Fct__ Utilztion_ Thread Den 130.2 56.6 1.54 136.8 45.7 1.57 131.4 60.9 1.55 146.2 53.6 1.56 140.6 56.0 1.58 137.0 59.1 1.54 141.9 55.6 1.55 131.5 57.7 1.55 132.2 57.2 1.56 129.1 58.2 1.53 133.6 59.2 1.54 129.6 59.2 1.52 132.6 56.5 1.57 133.7 58.6 1.54 126.2 60.9 1.53 129.9 61.3 1.54 134.5 56.5 1.54

The second half of the report consists of per-core metrics.

D0R2 Per-Core Report for file: VIODGLD2 MONDATA Interval Core Core Pct Core Pct MT __Ended_ _ID_ Type ___Secs___ Prodctvity Utilztion_ >>Mean>> 00 IFL 30.0 95.3 58.7 >>Mean>> 01 IFL 30.0 93.7 57.3 >>Mean>> 02 IFL 30.0 92.7 59.7 >>Mean>> 03 IFL 30.0 93.4 61.6 20:11:48 00 IFL 30.0 100.0 37.7 20:11:48 01 IFL 30.0 91.8 49.1 20:11:48 02 IFL 30.0 85.9 50.7 20:11:48 03 IFL 30.0 90.4 51.4 20:12:18 00 IFL 30.0 100.0 58.0 20:12:18 01 IFL 30.0 99.9 62.2 20:12:18 02 IFL 30.0 100.0 63.6 20:12:18 03 IFL 30.0 93.0 91.6 20:12:48 00 IFL 30.0 97.4 46.2 20:12:48 01 IFL 30.0 83.5 40.8 20:12:48 02 IFL 30.0 90.0 58.8 20:12:48 03 IFL 30.0 93.0 81.0 (continued) Average Pct Core Thread Den ___Busy___ 1.51 62.16 1.52 61.32 1.53 64.80 1.53 65.99 1.39 37.39 1.59 53.44 1.57 58.98 1.68 56.84 1.37 51.50 1.50 62.27 1.46 60.66 1.74 98.49 1.32 47.45 1.40 48.88 1.58 65.34 1.77 87.17

The table below gives definitions for each of the columns in the report.

Column Meaning
SMT Per-Core-Type Statistics
Interval Ended The hh:mm:ss of the CP Monitor interval-end time, in UTC.

The first block of rows is marked ">>Mean>>" to indicate that the rows are the mean experience of each core-type over the whole time range recorded in the MONWRITE file.

Core Type The core type: CP, IFL, etc.
Secs Time interval in seconds since the previous extraction of the metrics by core was made.
Sampled Cores Number of cores sampled that returned data for the calculation of the following per-core-type metrics.
Pct Core Prodctvity Percent Productivity by core type: Work completed while core was non-idle, compared to work that could have been completed if all non-idle time had been two-threads-busy time.
Pct Cap Factor Percent Capacity Factor by core type: Total work rate for the core while busy, compared to its work rate when it was running with one-thread-busy (the "SMT benefit").
Pct Max Cap Fac Percent Maximum Capacity Factor by core type: Work rate for two-threads-busy, compared to the work rate for one-thread-busy.
Pct MT Utilztion Percent MT Utilization by core type: How much of the maximum core capacity was used.
Average Thread Den Average Thread Density by core type: Average number of threads busy on the core, while the core was in use at all.
SMT Per-Core Statistics
Interval Ended The hh:mm:ss of the CP Monitor interval-end time, in UTC.

The first block of rows is marked ">>Mean>>" to indicate that the rows are the mean experience of each core over the whole time range recorded in the MONWRITE file.

Core ID Core ID of the core.
Core Type The core type: CP, IFL, etc.
Secs Time interval in seconds since the previous extraction of the metrics by core was made.
Pct Core Prodctvity Percent Productivity by core: Work completed while core was non-idle, compared to work that could have been completed if all non-idle time had been two-threads-busy time.
Pct MT Utilztion Percent MT Utilization by core: How much of the maximum core capacity was used.
Average Thread Den Core Average Thread Density: Average number of threads busy on the core, while the core was in use at all.
Pct Core Busy Percentage of time at least one thread of the core was busy. (aka core utilization)