Customize HIS Batch job

 

The JCL dataset contains 4 sample Batch jobs:

Sample Job

What it does

When to use it

$$HISCP

Print for each time interval the SMF 113 statistics separated for the CP and the zIIP processor pool.

Example: If you have 20 CPs and 10 zIIPs you will get two lines with a processor count of 20 and 10 for each pool

For sub-capacity machines when CPs and zIIPs have different speed

If the dominating workload (for example CICS) doesn’t use zIIPs and a second workload (for example Websphere) uses zIIPs you might want to separate the result for the pools.

SSHISPRC

Same as above but combines the CP and zIIPs as processors

Example: If you have 20 CPs and 10 zIIPs you get one line with a processor count of 30

Don’t use this for sub-capacity machines.

Otherwise it is meaningful to report all processors as one set.

$$HISSUM

Allows to report on a time period. The time period can be specified in Step S113EXT.

Again this job reports on CPs and zIIPs separately.

Same as for $$HSICP

$$HISPRS

Same as above but reports all processor pools as one set of processors.

Same as for $$HISPRSS

 

The batch job $$HISCP is printed below. You must customize all red colored parts. For the other jobs the same customization is required:

Then you can run the job. At the end of the execution the job deletes all temporary datasets including the raw HIS dataset. If you want to keep the intermediate datasets or some of them you must delete these job contral statements.

The job consists of five steps:

  1. Processes the input SMF dataset, extracts the SMF 113 subtype 2 records and prints all basic, problem state, crypto and extended counters. The result dataset also contains the number of counters per counter set. In order to run the job successfully you must collect the SMF 113 data with at least the basic and extended counters. It is also recommended to collect the problem state counter.
    The program always calculates the delta to the preceding interval. Therefore the first interval in the SMF dataset for SMF 113 records is not included in the output.
    The output dataset contains one line per interval, system and logical processor
  2. The HIS counter dataset is sorted so that all CPs and zIIPs are in consecutive order. This is necessary because adding general purpose processors at a later time will add them after the zIIP processors.
    Annotation: The sort step differs for $$HISCP and $$HISPRC
  3. Summarizes the HIS counters by system and processor type for each interval. After this step the summary data only contains data by interval, system and processor type (regular CPs, zIIPs, or zAAPs)
  4. Creates the CSV report by calculating the metrics like Cycles per Instructions, Level 1 Miss percentage, Relative Nest Intensity, and more from the summarized data table. The result is a complete CSV file which can already be processed by a spreadsheet application but it is pretty unreadable for a human.
  5. Formats the output of step 3 so that it can be read by a human being.

Annotation: $$HISSUM and $$HISPRS contain a further step S113EXT between the sort and the summarization step. Both jobs summarize all intervals for one day so the extra step extracts the interval for the time period for which the summary should be created. The time value can be adjusted.

 

//UIDxxxxx JOB  (XXXXXXX,,XXXXX),'NAME',NOTIFY=&SYSUID.,                       

//             MSGCLASS=H,CLASS=U,REGION=0M                                    

//**************************************************************/              

//*                                                                             

//* DEFINE INPUT DATASETS                                                      

//*                                                                            

//    SET      SMFDSN=<smf dataset>                                            

//    SET      HISDSN=<raw his output>.HISDATA 

//    SET      SRTDSN=<sorted HIS counter dataset>.HISDATAS                                       

//    SET      SUMDSN=<summarized his output>.SUMDATA                                   

//    SET      TMPDSN=<just a temp dataset>.TMPDATA                                    

//    SET      RESDSN=<result data>.RSLDATA                                    

//**************************************************************/              

//*                                                                            

//* DEFINE GENERAL DATASETS                                                    

//*                                                                             

//    SET      EXECDSN=BVAU.S113.CEXEC                                         

//    SET      SUMMEMB=BVAU.S113.JCLPRMS(SUMDATA)                              

//    SET      S113MEMB=BVAU.S113.JCLPRMS(HISREP)                              

//**************************************************************/              

//* Create HISDATA Table from SMF 113 data                

//*                                                       

//DELDS    EXEC PGM=IEFBR14                                

//OUTDATA  DD DSN=&HISDSN.,                               

//         UNIT=SYSDA,                                    

//         DISP=(MOD,DELETE),SPACE=(CYL,1)                

//S113REPT EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=50,       

//  PARM='S113RPT CC(0) R(YES)'                           

//SYSPROC  DD  DISP=SHR,DSN=&EXECDSN.                     

//SMFDSN   DD  DISP=SHR,DSN=&SMFDSN.                      

//OUTDSN   DD  DISP=(NEW,CATLG),SPACE=(CYL,(25,25),RLSE), 

//         UNIT=SYSDA,                                     

//         DCB=(RECFM=VB,LRECL=2048,BLKSIZE=10240),       

//         DSN=&HISDSN.                                   

//SYSTSPRT DD  SYSOUT=*                                   

//SYSPRINT DD  SYSOUT=*                                    

//SYSTERM  DD  SYSOUT=*                                   

//SYSTSIN  DD  DUMMY                                      

//PARMS    DD  DUMMY                                       

//*************************************************     

//* Sort HISDATA table to ensure all CPs and zIIPs of   

//* one interval are consecutive together               

//*                                                     

//DECLARE EXEC PGM=IEFBR14                              

//OUTDATA DD DSN=&SRTDSN.,                              

//        UNIT=SYSDA,                                    

//        DISP=(MOD,DELETE),SPACE=(CYL,1)               

//S113SORT EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=50,     

//  PARM='S113SORT USEDD SORT(6,8,2,3) '                  

//SYSPROC  DD   DISP=SHR,DSN=&EXECDSN.                  

//INPUT    DD   DISP=SHR,DSN=&HISDSN.                   

//OUTPUT   DD  DISP=(NEW,CATLG),                        

//         SPACE=(CYL,(200,200),RLSE),                  

//         UNIT=SYSDA,                                  

//         DCB=(RECFM=VB,LRECL=2048,BLKSIZE=10240),     

//         DSN=&SRTDSN.                                 

//SYSTSPRT DD   SYSOUT=*                                

//SYSPRINT DD   SYSOUT=*                                

//SYSTERM  DD   SYSOUT=*                                

//SYSTSIN  DD   DUMMY                                   

//SYSIN    DD   DUMMY                                   

//*************************************************                            

//* Summarize HIS data for each interval                  

//*                                                        

//DECLARE EXEC PGM=IEFBR14                                

//OUTDATA DD DSN=&SUMDSN.,                                

//        UNIT=SYSDA,                                     

//        DISP=(MOD,DELETE),SPACE=(CYL,1)                 

//S113SUM EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=50,        

// PARM='S113SUM DEBUG'                                   

//SYSPROC DD  DISP=SHR,DSN=&EXECDSN.                      

//INPUT   DD  DISP=SHR,DSN=&SRTDSN.                        

//OUTPUT  DD  DISP=(NEW,CATLG),                           

//        SPACE=(CYL,(500,500),RLSE),                     

//        LIKE=&HISDSN.,                                  

//        DSN=&SUMDSN.                                    

//SYSTSPRT DD  SYSOUT=*                                   

//SYSPRINT DD  SYSOUT=*                                   

//SYSTERM  DD  SYSOUT=*                                   

//SYSTSIN  DD  DUMMY                                      

//PARMS    DD    DISP=SHR,DSN=&SUMMEMB.                   

//**************************************************************/              

//* Create S113DATA Table (convert HIS counters to numbers)   

//*                                                           

//DELDS    EXEC PGM=IEFBR14                                   

//TMPDATA  DD DSN=&TMPDSN.,                                   

//         UNIT=SYSDA,                                         

//         DISP=(MOD,DELETE),SPACE=(CYL,1)                    

//S113CSV  EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=50,           

//  PARM='S113CSV SUMDATA '                                   

//SYSPROC  DD  DISP=SHR,DSN=&EXECDSN.                          

//INPUT    DD  DISP=SHR,DSN=&SUMDSN.                          

//OUTPUT   DD  DISP=(NEW,CATLG),SPACE=(CYL,(50,50),RLSE),     

//         UNIT=SYSDA,                                        

//         DCB=(RECFM=VB,LRECL=2048,BLKSIZE=10240),           

//         DSN=&TMPDSN.                                       

//SYSTSPRT DD  SYSOUT=*                                       

//SYSPRINT DD  SYSOUT=*                                       

//SYSTERM  DD  SYSOUT=*                                        

//SYSTSIN  DD  DUMMY                                          

//PARMS    DD  DISP=SHR,DSN=&S113MEMB.                        

//*********************************************/                               

//* Format Result dataset to become readable              

//*                                                       

//DELDS    EXEC PGM=IEFBR14                               

//OUTDATA  DD DSN=&RESDSN.,                               

//         UNIT=SYSDA,                                    

//         DISP=(MOD,DELETE),SPACE=(CYL,1)                

//S113FORM EXEC PGM=IKJEFT01,REGION=0M,DYNAMNBR=50,       

// PARM='S113FORM USEDD P(2)'                              

//SYSPROC DD DISP=SHR,DSN=&EXECDSN.                       

//INPUT   DD DISP=SHR,DSN=&TMPDSN.                        

//OUTPUT  DD DISP=(NEW,CATLG),                            

//        SPACE=(CYL,(50,50),RLSE),                        

//        UNIT=SYSDA,                                     

//        DCB=(RECFM=VB,LRECL=2048,BLKSIZE=10240),        

//        DSN=&RESDSN.                                    

//SYSTSPRT DD  SYSOUT=*                                   

//SYSPRINT DD  SYSOUT=*                                   

//SYSTERM DD   SYSOUT=*                                   

//SYSTSIN DD   DUMMY                                      

//SYSIN   DD   DUMMY                                      

//**************************************************************/              

//* Delete all temporary datasets                   

//*                                                 

//DELDSE   EXEC PGM=IEFBR14                         

//HISDATA  DD DSN=&HISDSN.,                          

//         UNIT=SYSDA,                              

//         DISP=(MOD,DELETE),SPACE=(CYL,1)          

//TMPDATA  DD DSN=&TMPDSN.,                         

//         UNIT=SYSDA,                              

//         DISP=(MOD,DELETE),SPACE=(CYL,1)          

//SUMDATA  DD DSN=&SUMDSN.,                         

//         UNIT=SYSDA,                              

//         DISP=(MOD,DELETE),SPACE=(CYL,1)          

//SRTDATA  DD DSN=&SRTDSN.,                         

//         UNIT=SYSDA,                              

//         DISP=(MOD,DELETE),SPACE=(CYL,1)