(Originally posted 2012-09-13.)
This post is about unusual ways of using the SMF 30 Usage Data information, some of which you’re certain to want if you’re managing z/OS systems’ performance.
A long time ago I noticed character strings in SMF 30 records that looked like product names. (As is my wont I was looking at the raw Type 30 records for a different purpose and spotted them.)
Some time later I figured out these were Usage Data sections. And the strings were indeed product names, but there’s much more besides.
Here’s an example:
Suppose you wanted to know which address spaces were CICS regions. (I do, when conducting a study, but you may feel you already know.) Well, finding address spaces with a program name of "DFHSIP"1 gets you that far. But here’s a nice twist:
Suppose your installation was in transition from CICS 3.2.0 to CICS 4.1.0. Without asking anyone about progress you can use the Usage information: The string
IBM CORP CICS V3 R2.0 DFHSIP 5655-M15
tells you all you need to know.2
The same is true for DB2, Websphere MQ, Websphere Application Server, TSO and IMS3, amongst others.
Other companies’ products are represented in the data. In one case the Product Version is "**.**.**". As I mentioned in 3 I think it’s z/OS doing the formatting and in this case overflowing.
By parading IBM products and mentioning other companies’ products I don’t mean to suggest all products use the IFAUSAGE macro to REGISTER. Indeed, support has evolved a little in the products over time. The next example will illustrate this.
Suppose you wanted to know which DB2 subsystem a CICS region connected to, again without asking anyone4:
Recent levels of DB2 will – in their Product Qualifier field show you the subsystem name:
IBM CORP DB2 9.1.0 DB2T 5635-DB2
But I have at least one set of DB2 Version 8 data without the equivalent of "DB2T" in it. So DB2 has changed to provide more information.
So far my examples have been "online" rather than "batch". They happen to be taken from SMF 30 Interval records (Subtypes 2 and 3). There’s a nice use case for Batch, though:
The Step- and Job-End SMF 30 records (subtypes 4 and 5) also have the product information. If I know a jobstep is “TSO”5 and I want to know if it calls DB2 I can look in the Usage information. Here’s a real Version 8 example:
IBM CORP DB2 8.1.0 NONE 5625-DB2
Until I was armed with this information I assumed all TSO steps were DB2 steps. In reality they could be something like REXX execs (which most of my programs are). Now, you could use DB2 Accounting Trace (SMF 101) to sort this out – but why bother?
One thing is puzzling me with this data – and at first I thought it was a bug in my code:
I see in at least two cases6 duplicate Usage sections. These aren’t 100% duplicate – the 5 character fields are all the same but the numeric fields differ – but very similar. I saw a CICS region with many dozens of MQ Usage sections. Each had different numeric values. Further, the number of these varies from interval to interval for an address space. An oblique comment I read got me thinking: The comment included the term “TCB”. So I speculate that each of these quasi-duplicate sections represents a TCB or SRB7 or something like that. Can you, dear reader, clear this up?
So those are the things I’ve already figured out I can do with this information. My code at present just works with the Interval records but I can easily extend it to Subtypes 4 and 5. And it only records 4 sections per record. Again I can easily extend it. I pick up the section count, for the reasons outlined above. You might be wondering about the data’s original purpose:
Given that each Usage section includes TCB time and SRB time I would expect people would be using to charge back at two levels:
- Charging for using a product e.g. DB2 (but probably not down to the subsystem level as that’s a little more obscure).
- Charging for using a product based on TCB and SRB time.
But that’s just my expectation. I’d like to know what you use the Usage Data section information for, if you do.
- 1 I’ve already mentioned this in CICS and Batch, What’s In A Name? and He Picks On CICS.
- 2 This is in fact five adjacent fields in the record – Product Owner, Product Name, Product Version, Product Qualifier and Product Identifier.
- 3 For IMS Version 11 the Product Version string is an unexpected "V1R1" which leads me to suspect z/OS is doing the formatting.
- 4 As usual the maxim is "don’t ask people for information you can get from system instrumentation".
- 5 This would be if the program name was something like “IKJEFT1B”.
- 6 CICS / MQ and DB2 Stored Procedures.
- 7 Whether this is a case of “ever existed in the interval” or “existed at the end of the interval” I don’t know.