Misunderstood Coupling Facility Commands

(Originally posted 2008-05-03.)

I wonder how many of you recognise the terms “READ_COCLASS”, “WARM”, “RFCOM”,”WRITE_DATALIST” and “CASTOUT_DATALIST”.

Granted that in that list are two pairs of terms that I believe to be synonymous, but all five are relatively recent enhancements to Parallel Sysplex infrastructure that have a positive impact on DB2 Data Sharing performance (or at least the management of Performance).

As I mentioned in a previous post I’m going to Poughkeepsie soon to work on a Parallel Sysplex Performance Redbook – which will deal with topics such as “Data Sharing at a Distance” and “New Parallel Sysplex Technologies”. In preparation for this (not that I do much preparation for such things) I read through the various sections on Data Sharing Performance in the various DB2 Performance Topics Redbooks, starting at the beginning – with Version 4.

It might be significant that I don’t really understand these Coupling Facility commands. But then again it might not be… given that there are (without being self-deprecating) far better proponents of DB2 Data Sharing performance. In any case I feel the material that’s out there falls short in terms of describing when these commands are used and what benefit they bring (and what the downsides, if any, might be. So I hope to write some material in this area and ask (what I hope to be) searching questions of Development.

Now, these commands were first exploited by DB2 Versions 6 and 8. So the material might end up on the cutting-room floor. After all we’re all interested in System z10, CFLEVEL 15 and DB2 Version 9. Right? 🙂 What I’m hoping to do – in any case – is to share some of that material through this blog. If I succeed in doing that I hope you’ll help me by feeding back on the blog entries. Corrections, additional questions, etc.

And the fun really begins on May 22nd. Just after UKCMG.

System z Technical Conference – Dresden

(Originally posted 2008-05-03.)

Tomorrow I fly to Dresden for the annual European System z Technical Conference. It’s at just the time of year when I can decide in my head that Spring has sprung and that Summer won’t be long coming. 🙂

This is a great conference and I always enjoy attending it (and presenting at it). Talking of which, I have three sessions this year:

  • Much Ado About CPU which has a fair modicum of new stuff, including material on System z10.
  • Memory Matters in 2008 for which the updates are mainly in the System memory area, particularly the 1MB Pages support in System z10
  • DB2 Data Sharing Performance For Beginners which actually isn’t much changed. (As I will be spending late May and much of June in Poughkeepsie working on a Parallel Sysplex Performance Redbook maybe the next iteration will be substantially changed.)

I’m also looking forward to a number of other sessions. No doubt I’ll get to say a few words in those as well. 🙂 In particular Kevin Keller’s session on “Web 2.0 and z/OS” has caught my fancy. (As you probably know I really do feel we in the mainframe community ought to pay attention to things like Web 2.0 and bid for z/OS to run the infrastructure.)

So I hope to see lots of you in Dresden.

My HackDay 5 Project – z/OS System Logger Analysis

(Originally posted 2008-04-27.)

As some of you will know IBM has a twice-yearly “HackDay” programming fest. And the latest – HackDay5 – was last Friday. Couched as a competition it isn’t really… It’s a heck of a sight more cooperative than that. (Else I wouldn’t have got involved.) I’ve participated in all five we’ve had over the past two years. And it’s been great fun. This time – for the second time – I’ve physically gone to Hursley to take part in the local event.

New for HackDay5 was the “zHackDay” initiative – which I take “responsibility” 🙂 for…

The idea was that mainframe-related hacks were labelled as such. Partly to goad mainframe folks into participating, and partly to point out to non-mainframers that we’re just as capable of doing fun hacks as everyone else.

So, was my project exciting?

Probably not – but then I wasn’t personally aiming to set the world alight. I’m more interested in getting useful stuff done that I wouldn’t ordinarily get around to. So my project is basically to map the SMF 88 System Logger records.

This has been done before – and indeed there’s a z/OS-supplied utility to report on System Logger from Type 88 data.

So why would I “reinvent the wheel”?

The main reason is that it allows me to put the data together with other things. Such as SMF 74 Subtype 4 Coupling Facility data. If a logstream uses a coupling facility structure the SMF 88 record tells you the structure’s name. (This is similar to a recent trick where the 74-2 XCF data tells you the structure name and my code looks up the 74-4 view of the structure.)

Actually I know relatively little about System Logger – but I’m learning fast. And that’s the other reason I did this hack… To enable me to learn.

Finally, if I discover something’s missing from the data I can use real customer situations to discuss with Development what’s needed.

So, how far did I actually get? I got the Type 88 Subtype 1 (Logstream Activity) data mapped and summarised at the (e.g.) hourly level. And some very simple reporting. I haven’t (yet) done the same for the Type 88 Subtype 11 (Coupling Facility Structure) data. But that should be easy and straightforward.

So, if you’re sending me data I’m going to be asking you to send me your Type 88 data as well. I hope you’ll find what I do with it to be useful.

Moron SPAM :-)

(Originally posted 2008-01-28.)

We’ve been issued new guidance:

  • Delete SPAM rather than mark it invisible.
  • Disallow posting comments after, say, 30 days.

The latter appears to work at the individual entry level. Three of my entries have become particularly troublesome (for some unknown reason). So I’ve set them to “no more comments”. If you find a comment of yours bounced then please do let me know. I’m sure we can fix it.

Deleting all the SPAM comments that have arrived so far for these three posts has been a right pain in the neck. I’m sure a little Firefox Extension programming could make it easier. 🙂

And now back to some real content. I hope.

ERBSCAN / ERBSHOW – A Parameter You Might Not Know

(Originally posted 2008-01-11.)

Very few people spend as much time as I do down in the guts of individual SMF records. But for those who do ERBSCAN / ERBSHOW is an invaluable tool…

  • ERBSCAN, issued in ISPF 3.4 against an SMF data set, presents you with a list of SMF records and some VERY high level information. Such as the date and time the record was cut, the SMF ID and the record type and subtype.
  • ERBSHOW nnnn, issued from the ERBSCAN record list, formats the record. For “non-RMF” records it basically formats the header and presents the record sections – with little additional information. With “RMF” records (equivalently those from BMC’s CMF) it does a fair amount more. This is because it knows the layouts of such records.

(Actually ERBSHOW knows about a few other record types.)

If, instead of typing “ERBSHOW nnnn” you type “ERBSHOW nnnn X” you get a better layout and more formatting…

Some key fields in the Product Section are translated.

SMF Type 70 Subtype 1 (CPU) records have two section types for PR/SM. One per LPAR (whether active or inactive) and one per logical engine. It’s a nuisance to work out which logical engine section belongs to which LPAR. The extra “X” parameter resequences things so that the logical engine sections for an LPAR immediately follow the section for the LPAR itself. Neat!

Thanks to Matthias Gubitz of RMF Development for sharing this with me. He mentioned it when I started going “wouldn’t it be nice if ERBSCAN and ERBSHOW…”

Actually, I took a look at the ERBSCAN / ERBSHOW code. They are a pair of REXX execs that sit in SYS1.SERBCLS. So I copied them into a CLIST library ahead of SYS1.SERBCLS for my TSO / ISPF userid. Then I started to fiddle with the code. It was VERY easy to understand it to the point where I could straightforwardly format an additional field in the record – the Sysplex name.

Modifying the code is, of course, completely unsupported. So I’m not sure I can recommend it. But I do hope to modify it some more – to make my job easier. And if I do I may try and give my changes back to RMF Development.

So, while I’m in the code, are there any enhancements to ERBSCAN / ERBSHOW that you would like to see? I can’t promise anything, of course. But I’m motivated to work on useful enhancements.

And, no, I don’t use ERBSCAN / ERBSHOW instead of serious performance analysis tools. But as the developer of some of these I often need to dump raw records, particularly if I’m trying to trouble shoot or extend our code to map additional fields. I appreciate not a lot of people are in this position. 🙂

An Unexpected Benefit of Pornospam

(Originally posted 2007-12-21.)

As I’ve mentioned before I’m using Roller’s “Referer URL” page – for my developerWorks blog – to analyse where my blog hits are coming from. (It’s an informal exercise because I can only really work with hits that involve a search engine of some sort – and some 80% of my hits are said to be “direct”.)

Recently I’ve had a rash of “pornospam” comments to my blog. (As previously noted I’ve a way of hiding these entries from you, dear reader.) This has, in turn, caused search engines to index my blog with various porno terms.

So far so bad. 🙂 But this does have a positive side effect…

It causes a whole bunch of search engines to show up on my radar that wouldn’t have before. For example today’s “new search engine” roster is:

So when “genuine” searches from these engines take people to my (or other developerWorks bloggers’) blogs my analysis code will recognise them.

I suppose there’s an analogy in terms of virology, along the lines of “what doesn’t kill you makes you stronger”. 🙂

So, thanks pornospammers! But don’t try too hard to help me out. 🙂

I’ve A Little Button To Banish SPAMmers

(Originally posted 2007-12-14.)

Occasionally you’ll (hopefully briefly) see SPAM comments on this blog. I’m grown up about this sort of thing and just remove the comments when I see them. I hope you’re grown up enough to cope with this irritating phenomenon as well.

But I’ve gotten fed up with having to mark these comments as SPAM. So I added some code to my Firefox extension to create a little button on my “Comment Management” page. Press this button and all the comments at the end of the list of comments for a blog entry get marked as SPAM. And hence disappear from under YOUR nose. 🙂

Of course I do get genuine comments. So there’s an easy mechanism to mark them as NOT SPAM. And I’ll use that. But there are MANY more SPAM comments than genuine ones. It just requires me to scan the list of comments once in a while and mark the genuine ones as not SPAM.

Unfortunately this is part of an IBM Internal Firefox extension – as MOST of its function is of little use to non-IBMers. But I might soon be getting to the point where I want to re-engineer to surface some stuff. In the meantime any other IBM with a developerWorks blog who happens to pass by should feel free to contact me to get a copy of “Commentator” as it’s called.

(As to the name “Commentator” it arose from the original function – more than 2 years ago – to spruce up Internal Blog COMMENTing by making it easy to add links and to do various text effects. It’s come a long way since then.)

WPS and MXG

(Originally posted 2007-12-12.)

Thanks to Oliver Robinson for pointing this out to me: In MXG Newsletters Numbers 50 and 51 Barry Merrill discusses MXG / WPS support in what I think is a detailed and fair way. (Oliver, for the record, works for WPC who develop WPS.)

Barry and I discussed WPS and MXG over a year ago. I think WPS has come a long way in this time and is now a very credible alternative to SAS for many applications, having a very high degree of programming language compatibility. As Barry notes, it’s available for both z/OS and Windows.

Perhaps I’ll even get round to learning SAS one day. I have the blue book already, of course.

Mashinations

(Originally posted 2007-12-10.)

Nowadays – actually thenadays 🙂 but more so nowadays – the value of a web page is related to how well structured it is. Well structured from a mashup programmer’s point of view…

As I often say you have to assume that people will want to take your web pages and mash them up in ways you never thought likely. If your web page is hard to navigate, extract material from, etc then people will use other pages and sites as the basis of their mashups. And you will lose traffic / business / kudos or whatever other metric of success you choose to use . Unless it’s obscurity you seek. 🙂

Here are two simple rules I’ve become sensitised to as a Firefox extension author…

Use id Attributes On “Structural” Elements

Motivation: To reliably navigate to a particular portion of a page javascript programmers use the getElementById() method. It takes the a string parameter and returns one element whose id attribute matches.

Not having this attribute gets you into “I want the third entryfield on the page. No wait, it’s moved to be the fourth” territory. Nasty.

But should you apply this to every element on the page? Not necessarily. But you should think about the structure of the page from the mashup perspective. So a major element like the edit field on your page should probably have an id attribute. (This is a real-world example for me as my Firefox extension parses and injects stuff in a suitable entryfield – for a wide variety of pages. All the “not plain text” in this post was injected programmatically by my extension.)

Use name Attributes on Forms And Form Elements

Motivation: In javascript the document element has an array property “forms”. So you can refer to an individual form as e.g. myDoc.forms[“postForm”] or even simply myDoc.postForm rather than having to hunt through the forms array for a somehow matching form. But only if you give the form a name attribute. What’s more you can refer to the elements in the form directly (e.g. myDoc.postForm.textField) but again only if the element in question has a name attribute.

(In fact the value of using the name attribute extends (in part) to images (<img> tags) and java applets (<applet> tags) but the value is rather less. (Navigating to an image and, especially, to an applet is relatively rare.)

One minor Firefox disappointment: I use the Built-in DOM inspector a lot and it doesn’t either show the “formname” property or enumerate the forms property by form name. I wonder why it doesn’t when there are perfectly good javascript ways of doing it.

These are simple examples of how to make life easy (or difficult). I’m sure there are many more. The bottom line, though, is to make web pages easy to mash up with other sources of data.

A Note On Javascript And Other Languages

I keep mentioning Javascript, don’t I? That’s simply because it’s the language in this space I’m most familiar with. (It’s typically seen in Firefox extensions and in AJAX, particularly in frameworks such as the dojo toolkit (which I’ve just installed.)) An increasing number of web servers are going to be doing their own aggregation or mashing up. I suspect they’ll rely on other languages such as PHP.

But it doesn’t matter… The guidelines above apply in just the same way to these server-side mashup languages. (I’ve just installed PHP on Apache and intend to play around with such mashing up at some point.)