Channel Busy: Widely Misunderstood

Last revised: 2023-02-06, BKW

Perfkit FCX107 CHANNEL and FCX215 FCHANNEL report a quantity called "channel utilization". The value is often misinterpreted. This article gives a definition and especially explains the values found on FCX215 FCHANNEL.

FCX107 CHANNEL reports "channel busy", sometimes also called "channel utilization". However, many people do not understand what "channel busy" or "channel utilization" is. The pervasive and incorrect understanding is that the phrase "channel utilization" refers to the percent of the fiber's ability to carry data that is in use. For example, if the FICON Express adapter were an 8 Gb/sec card and it were moving 4 Gb/sec, there are a lot of people out there who would say "channel utilization is 50%" and would expect to find that number on FCX107. All those people are wrong. Rather FCX107 "channel busy" or "channel utilization" or "chpid utilization" is the percent-CPU-busy of the microprocessor on the channel card. It has nothing to do with the percent of the chpid's data-carrying capability that's in use.

The FICON (OSA, etc.) cards don't really report percent-microprocessor-busy into the Channel Path Measurement Facility (CPMF). Rather they report three metrics: "bus cycles", "work units", and "data units". For each metric, the card reports both the capability /sec and the total usage. Let's look at these metrics individually.

On modern adapters, "bus cycles" is best understood as percent of data-carrying capability in use. If the FICON adapter is Express16S+ running at a negotiated speed of 1600 Mb/sec, the maximum amount of data the chpid can move per second is 1600 Mb read/sec and 1600 Mb write/sec, and so if the card is actually moving 400 Mb read/sec and 600 Mb write/sec, the bus cycles busy would show 100*(400+600)/3200 = 31.3 bus cycles percent-busy aka 31.3 percent of the card's total data-carrying capability in use.

Regarding "work units", this is best understood as percent-CPU-busy of the microprocessor on the chpid card. It runs in the range 0-100 and lines up with your personal classic understanding of CPU-busy.

Regarding "data units", for each of read and write, the card reports data unit capacity /sec and total data units moved, so "data units" reported values are expressions of data movement rate and distinguish between reads and writes.

FCX107 CHANNEL calculates "channel busy" based on the CPMF work unit numbers, which come out in monitor in D0 R20 MRSYTEPM. So FCX107 is a comment on CPU utilizations on the channel cards.

FCX215 FCHANNEL displays all three metrics: bus-cycles busy, work-unit busy, and data-unit busy, the last broken out by read and write, and all derived from the data in D0 R20. It also breaks them out by whole-CEC and due-to-reporting-LPAR, again, because CPMF and therefore D0 R20 break them out that way.

Below find an example of FCX215 FCHANNEL. The "<- Total for System ->" spanner points out which columns show measurements for the whole CPC. The "<- Own Partition ->" spanner points out columns showing measurements for the partition that sourced the MONWRITE data.

1FCX215 Run 2022/10/01 21:58:14 FCHANNEL FICON Channel Load From 2022/09/25 03:05:27 To 2022/09/25 03:11:27 For 360 Secs 00:06:00 Result of YELBACK Run _____________________________________________________________________________________________ . . . . . . . . _______ . . . <------ FICON Channel Utilization % -------> <-- Total for System --> <-Own Partition--> Channel Bus Work <Data Units> Work <Data Units> <--- Transfer rate, byte/s ---> Path Cycle Units Write Read Units Write Read <--Total Data--> <--Maximum---> ID Shrd T_BCy T_WUn T_DUW T_DUR L_WUn L_DUW L_DUR Write/s Read/s M_Write M_Read 4C Yes 17 62 17 0 0 0 0 136477K 0 763M 763M 4D Yes 17 62 17 0 0 0 0 136237K 0 763M 763M 5C Yes 17 59 17 0 33 9 0 129885K 0 763M 763M 5D Yes 17 59 17 0 33 9 0 129843K 0 763M 763M CC Yes 8 24 0 8 0 0 0 1420205 60780K 763M 763M CE Yes 8 25 0 8 0 0 0 1420117 61362K 763M 763M CF Yes 8 24 0 8 0 0 0 1135189 61096K 763M 763M CD Yes 8 25 0 8 0 0 0 1088263 62406K 763M 763M BF Yes 9 31 0 9 14 0 4 5585 73123K 763M 763M BD Yes 9 31 0 9 14 0 4 5504 73075K 763M 763M BE Yes 9 31 0 9 14 0 4 5385 72955K 763M 763M BC Yes 9 31 0 9 14 0 4 5376 73095K 763M 763M

Sometimes questions arise about the columns found under the "<- Transfer rate ->" spanner. The Write/s and Read/s columns are the chpid's total (whole-CPC) read and write rates in bytes, with power-of-two scale suffixes if needed. The values are calculated from T_DUW and T_DUR and from what the chpid reports as the size of a data unit in bytes and the maximum data units per second. The M_Write and M_Read columns are the card's read and write capabilities in bytes/sec, again, suffixed as needed. The values are calculated from what the chpid reports as the size of a data unit in bytes and the maximum data units per second for each direction.

It is easy to drive up chpid utilization without driving up data rate. The host just needs to send lots of little channel programs. It is also easy to drive up data rate without driving up chpid utilization. The host just needs to send gigantic channel programs.

I hope this article clears up the confusion about chpid utilization.