Using SMF to Archive Statistics (z/OS only)

Under z/OS, statistics are written to the z/OS SMF job accounting file as follows:
idms
Under z/OS, statistics are written to the z/OS SMF job accounting file as follows:
  • Application Monitor -- If AMSMF=YES is specified in the #PMOPT macro
  • Application Monitor SMF record type 30 -- If SMFTY30=YES is specified in the #PMOPT macro
  • Application Monitor SMF record type 4 -- If SMFTYP4=YES is specified in the #PMOPT macro
  • Interval Monitor -- If IMSMF=YES is specified in the #PMOPT macro
Using PMSMFEX to archive
To archive the statistics from the z/OS SMF file, use the PMSMFEX module which is supplied with Performance Monitor and stored in the dictionary. Sample central version and local mode JCL follow.
SMF archive using PMSMFEX macro ('Central version')
//********************************************************* //*                                                       * //*                 SMF ARCHIVE                           * //*                                                       * //*       READS THE SMF FILE AND CREATES THE              * //*       INPUT FILE FOR RUNNING REPORTS                  * //*                                                       * //********************************************************* //CULPRIT  EXEC PGM=CULPRIT,REGION=1024K //STEPLIB  DD   DSN=
idms.dba.loadlib
,DISP=SHR //         DD   DSN=
idms.custom.loadlib
,DISP=SHR //         DD   DSN=
idms.cagjload
,DISP=SHR //SORTLIB  DD   DSN=
sys1.sortlib
,DISP=SHR //SYSOUT   DD   SYSOUT=A //SYSPRINT DD   SYSOUT=A //SORTPRNT DD   SYSOUT=A //SORTMSG  DD   SYSOUT=A //SYS004   DD   SYSOUT=A,DCB=(RECFM=FBA,LRECL=133,BLKSIZE=133) //SYS005   DD   DSN=&.&UPRMWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=FB,LRECL=320,BLKSIZE=1600) //SYS006   DD   DSN=&.&UEXTWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=2044,BLKSIZE=4628) //SYS007   DD   DSN=&.&SRTPWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(TRK,(1,1)), //             DCB=(RECFM=F,LRECL=80,BLKSIZE=80) //SYS008   DD   DSN=&.&NSRTWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=512,BLKSIZE=4628) //SORTWK01 DD   DSN=&.&WRKAWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK02 DD   DSN=&.&WRKBWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK03 DD   DSN=&.&WRKCWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK04 DD   DSN=&.&WRKDWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //CULSRT1I DD   DSN=
yourHLQ.CAGJSRC
(SORT1),DISP=SHR //SYSIN4   DD   DUMMY,DCB=BLKSIZE=80 //VSAMCTRL DD   DUMMY //CULLIB   DD   DSN=
yourHLQ.CAGJSRC
,DISP=SHR //
sysctl
   DD   DSN=
idms.sysctl
,DISP=SHR //
dcmsg
    DD   DSN=
idms.sysmsg.ddldcmsg
,DISP=SHR //SYS010   DD   DSN=
user.smf.file
,DISP=SHR //SYS011   DD   DUMMY //SYS020   DD   DSN=
user.pmsmfex.outfile
,DISP=(NEW,CATLG,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=280,BLKSIZE=23244) //SYS030   DD   DSN=
user.pmsmfex.outsmf30
,DISP=(NEW,CATLG,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=698,BLKSIZE=23038) //SYS040   DD   DSN=
user.pmsmfex.outsmf4
,DISP=(NEW,CATLG,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=259,BLKSIZE=23055) //SYSIDMS  DD   * //SYSIDMS  DD   * DMCL=
dmcl-name
Other SYSIDMS parameters, as appropriate
/* //SYSIN    DD   *  DATABASE DICTNAME=
sysdirl
=MACRO 'PMSMFEX' (
nnn
) =MEND /* //*
idms.dba.loadlib
Name of the load library containing the DMCL and the database name table load modules
idms.cagjload
Name of the load library containing the CA IDMS executable modules that do not require customization
idms.custom.loadlib
Name of the load library containing customized CA IDMS executable modules
yourHLQ.CAGJSRC
CA IDMS source library
sysctl
Ddname of the SYSCTL file
idms.sysctl
Dataset name of the SYSCTL file
dcmsg
Ddname of the dictionary message area
idms.sysmsg.ddldcmsg
Dataset name of the dictionary message area (DDLDCMSG)
sys1.sortlib
System sort library
disk
Symbolic device name of the file
user.smf.file
z/OS SMF job accounting file
user.pmsmfex.outfile
Name of the file created by the extract
user.pmsmfex.outsmf30
Name of the file created by the extract - SMF records type 30
user.pmsmfex.outsmf4
Name of the file created by the extract - SMF records type 4
dmcl-name
Name of the DMCL to access at runtime
Note:
For more information on other SYSIDMS parameters, see the
CA IDMS Database Administering section
.
dictionary-name
Name of the dictionary to access (probably SYSDIRL)
nnn
SMF user record type coded on the #PMOPT macro SMFRCID parameter; the default is 230
If the input SMF file to the SMF extract was created as a variable blocked spanned (VBS) file (RECFM=VBS), you must include the parameter DCB=BFTEK=A in the SYS010 DD statement for the
user.smf.file
dataset. Alternatively, add BFTEK=A to existing data control block (DCB) parameters.
If the CA Culprit dictionary security option is turned on in the dictionary that contains the SMF extract report source, a PROFILE statement naming an authorized user and password is required.
SMF archive using PMSMFEX macro ('Local mode')
//CULPRIT  EXEC PGM=CULPRIT,REGION=1024K //STEPLIB  DD   DSN=
idms.dba.loadlib
,DISP=SHR //         DD   DSN=
idms.custom.loadlib
,DISP=SHR //         DD   DSN=
idms.cagjload
,DISP=SHR //SORTLIB  DD   DSN=
sys1.sortlib
,DISP=SHR //SYSOUT   DD   SYSOUT=A //SYSPRINT DD   SYSOUT=A //SORTPRNT DD   SYSOUT=A //SORTMSG  DD   SYSOUT=A //SYS004   DD   SYSOUT=A,DCB=(RECFM=FBA,LRECL=133,BLKSIZE=133) //SYS005   DD   DSN=&.&UPRMWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=FB,LRECL=320,BLKSIZE=1600) //SYS006   DD   DSN=&.&UEXTWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=2044,BLKSIZE=4628) //SYS007   DD   DSN=&.&SRTPWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(TRK,(1,1)), //             DCB=(RECFM=F,LRECL=80,BLKSIZE=80) //SYS008   DD   DSN=&.&NSRTWORK.,DISP=(NEW,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=512,BLKSIZE=4628) //SORTWK01 DD   DSN=&.&WRKAWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK02 DD   DSN=&.&WRKBWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK03 DD   DSN=&.&WRKCWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //SORTWK04 DD   DSN=&.&WRKDWORK., //             UNIT=
disk
,SPACE=(CYL,(5,2)) //CULSRT1I DD   DSN=
yourHLQ.CAGJSRC
(SORT1),DISP=SHR //SYSIN4   DD   DUMMY,DCB=BLKSIZE=80 //VSAMCTRL DD   DUMMY //CULLIB   DD   DSN=
yourHLQ.CAGJSRC
,DISP=SHR //
dirldb
   DD   DSN=
idms.sysdirl.ddldml
,DISP=SHR //
dcmsg
    DD   DSN=
idms.sysmsg.ddldcmsg
,DISP=SHR //
sysjrnl
  DD   DUMMY //SYS010   DD   DSN=
user.smf.file
,DISP=SHR //SYS011   DD   DUMMY //SYS020   DD   DSN=
user.pmsmfex.outfile
,DISP=(NEW,CATLG,DELETE) //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=280,BLKSIZE=23244) //SYS030   DD   DSN=
user.pmsmfex.outsmf30
,DISP=(NEW,CATLG,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=698,BLKSIZE=23038) //SYS040   DD   DSN=
user.pmsmfex.outsmf4
,DISP=(NEW,CATLG,DELETE), //             UNIT=
disk
,SPACE=(CYL,(5,2)), //             DCB=(RECFM=VB,LRECL=259,BLKSIZE=23055) //SYSIDMS  DD   * DMCL=
dmcl-name
Other SYSIDMS parameters, as appropriate
/* //SYSIN    DD   *  DATABASE DICTNAME=
sysdirl
=MACRO 'PMSMFEX' (
nnn
) =MEND /* //*
For descriptions of variables, see the preceding JCL for executing under the central version.
Using PMSMFEX to extract data for a specific CV or system
To use PMSMFEX to extract data for a specific central version or DC system, you must modify the source statements for the PMSMFEX module stored in the dictionary.
  • Extracting Interval Monitor data -- To extract data for the Interval monitor by central version number or DC system number, change the source statements for PMSMFEX as follows:
    00$ INTERVAL MONITOR RECORD SELECTION 00$ UNCOMMENT AND CHANGE FOLLOWING CARDS TO SELECT BY SYSTEM 00$ VERSION. SPECIFY THE SYSTEM NUMBER(S) DESIRED IN HEX. 00$ EX:   007135  IF SMFHDCV# EQ X'0010' 150 00$       007139  DROP                       $ DON'T WANT THIS ONE 00$   WILL SELECT ONLY RECORDS FOR DC SYSTEM VERSION # 16 00$ 00$135  IF SMFHDCV# EQ X'NNNN' 150           $ WANT THIS 00$136  IF SMFHDCV# EQ X'NNNN' 150           $ WANT THIS 00$137  IF SMFHDCV# EQ X'NNNN' 150           $ WANT THIS 00$138  IF SMFHDCV# EQ X'NNNN' 150           $ WANT THIS 00$139  DROP                                 $ NOT THIS 00$-------------------------- 00$ UNCOMMENT AND CHANGE FOLLOWING CARDS TO SELECT BY CV 00$ VERSION. SPECIFY THE CV NUMBER(S) DESIRED IN HEX. 00$ EX:   007135  IF SMFHCV# EQ X'10' 150 00$       007139  DROP                       $ DON'T WANT THIS ONE 00$   WILL SELECT ONLY RECORDS FOR DC VERSION # 16 00$ 00$135  IF SMFHCV# EQ X'NN'    150           $ WANT THIS 00$136  IF SMFHCV# EQ X'NN'    150           $ WANT THIS 00$137  IF SMFHCV# EQ X'NN'    150           $ WANT THIS 00$138  IF SMFHCV# EQ X'NN'    150           $ WANT THIS 00$139  DROP                                 $ NOT THIS
  • Extracting Application Monitor data -- To extract data for the Application monitor by central version number or DC system version number, change the source statements for PMSMFEX as follows:
    00$ APPLICATION MONITOR RECORD SELECTION 00$ UNCOMMENT AND CHANGE FOLLOWING CARDS TO SELECT BY SYSTEM 00$ VERSION. SPECIFY THE SYSTEM NUMBER(S) DESIRED IN HEX. 00$ EX:   007235  IF SMFHDCV# EQ X'0010' 240 00$       007239  DROP                       $ DON'T WANT THIS ONE 00$   WILL SELECT ONLY RECORDS FOR DC SYSTEM VERSION # 16 00$ 00$235  IF SMFHDCV# EQ X'NNNN' 240           $ WANT THIS 00$236  IF SMFHDCV# EQ X'NNNN' 240           $ WANT THIS 00$237  IF SMFHDCV# EQ X'NNNN' 240           $ WANT THIS 00$238  IF SMFHDCV# EQ X'NNNN' 240           $ WANT THIS 00$239  DROP                                 $ NOT THIS 00$-------------------------- 00$ UNCOMMENT AND CHANGE FOLLOWING CARDS TO SELECT BY CV 00$ VERSION. SPECIFY THE CV NUMBER(S) DESIRED IN HEX. 00$ EX:   007235  IF SMFHCV# EQ X'10' 240 00$       007239  DROP                       $ DON'T WANT THIS ONE 00$   WILL SELECT ONLY RECORDS FOR DC VERSION # 16 00$ 00$235  IF SMFHCV# EQ X'NN'   240            $ WANT THIS 00$236  IF SMFHCV# EQ X'NN'   240            $ WANT THIS 00$237  IF SMFHCV# EQ X'NN'   240            $ WANT THIS 00$238  IF SMFHCV# EQ X'NN'   240            $ WANT THIS 00$239  DROP                                 $ NOT THIS