MXG Tools and Usage - PowerPoint PPT Presentation

About This Presentation
Title:

MXG Tools and Usage

Description:

MXG Tools and Usage Chuck Hopf ANALCAPD Uses the ASUMCEC dataset in the PDB as input Best granularity is when you match CECINTRV to INTERVAL in ASUM70PR ANALCAPD ... – PowerPoint PPT presentation

Number of Views:133
Avg rating:3.0/5.0
Slides: 103
Provided by: DavidC224
Category:
Tags: mxg | chuck | close | tools | usage

less

Transcript and Presenter's Notes

Title: MXG Tools and Usage


1
MXG Tools and Usage
  • Chuck Hopf

2
Agenda
  • ANALID
  • ANALGRID
  • VMXGPRNT
  • VMXGFIND
  • VMXGSRCH
  • UTILWORK
  • READDB2
  • UTILBLDP
  • VMXGSUM
  • ANALCNCR
  • ANALCAPD

3
ANALID
  • New MACRO to create an SMF Audit dataset and
    report
  • READSMFNO
  • PRINTYES
  • PDBOUTPDB
  • PERCENTSYES
  • ODS parameters

4
ANALID READSMF
  • READSMFYES will read an SMF dataset. The
    default of NO is used in BUILDPDB to read the ID
    dataset already being created.
  • Driven by the value of the SMFAUDIT macro
    variable in VMXGINIT. If set to NO with a LET
    the older style report is created with fewer
    variables.

5
ANALID PRINT/PDBOUT/PERCENTS
  • PRINTYES prints SMF Audit report. To suppress
    the report specify NO.
  • PDBOUTPDB the destination of the new SMFRECNT
    dataset.
  • PERCENTSYES calculates the percentage of the
    data for each system represented by a single
    type/subtype.

6
ANALID ODS Parameters
  • ODSTYPE if you want to create HTML output
    specify HTML or specify some other valid ODS
    value. If blank ODS is not used.
  • ODSPATH the pathname for the ODS output
    typically a directory on ASCII or a PDSE or zFS
    directory on zOS
  • ODSFILE the name of the output that will be
    created

7
ANALID - Example
  • ANALID(
  • READSMFYES,
  • PDBOUTPDB,
  • PRINTYES,
  • ODSTYPEHTML,
  • ODSPATHE\.
  • ODSFILEANALID.HTML)

8
ANALID Sample
9
ANALID - Sample
10
ANALID - Sample
11
ANALID Sample
12
ANALID - Sample
13
ANALID - Sample
14
ANALID - Sample
15
ANALID - Sample
16
ANALID - Sample
17
ANALGRID
  • Creates a dense color coded grid of values using
    PROC REPORT
  • Does not require SAS/GRAPH
  • Works on all SAS versions 9.1.3 and above

18
ANALGRID
  • Example 1
  • Read ASUM70LP and for the specified system create
    a grid of CPU busy for a day.
  • This is the default with addition of an INCODE to
    select a specific LPAR
  • ANALGRID(INCODEIF LPARNAMESYSG)

19
ANALGRID
20
ANALGRID
  • Example 2 compare year to year same month
    excluding weekdays and holidays
  • ANALGRID(
  • INDATARMFINTRV,
  • SORTBYSYSTEM MONTH,
  • SYSTEMSYSG,
  • INCODEMONTHDATEPART(STARTIME)-DAY(DATEPART(STAR
    TIME))1
  • FORMAT MONTH MONYY.
  • if 1 lt weekday(datepart(startime)) lt 7
  • if month(datepart(startime))1
  • if datepart(startime) not in('26dec11'd,'24nov
    11'd,'25nov11'd,
  • '05sep11'd,'04jul11'd,'30may11'd,'21feb11'd
    ,'17jan11'd,'24dec10'd,
  • '25nov10'd,'26nov10'd,'16jan12'd,'02jan12'd
    ,'16jan12'd,'20feb12'd),
  • TITLE1 CPU Busy,
  • VARIABLEpctcpuby,VARLABEL CPU,varformat5.2,
  • ROWVARIABLEDATE,ROWLABELDATE,ROWFORMATDATE.,
  • ODSPATHe,ODSFILEapril.html)

21
ANALGRID
22
ANALGRID
23
ANALGRID
  • You have complete control of
  • Colors and levels
  • Column and row variables
  • Column and row labels
  • Column and row formats

24
ANALGRID
  • ANALGRID(

  • SYSTEMSYSG,

  • INDATARMFINTRV,

  • SORTBYSYSTEM,

  • VARFORMATTIME12.2,

  • dateslastweek,

  • BKT1'0100'T/BLUE/WHITE,

  • BKT2'0200'T/GREEN/WHITE,

  • BKT3'0300'T/CYAN/BLACK,

  • BKT4,

  • WEIGHT,

  • SORTLABELSystem,

  • STATSUM,

  • VARIABLECPUTM,

  • odspathe,

  • odsfilecputime.html,

  • VARLABELCPU TIME,

  • COLVARIABLETIME,COLLABELTIME,COLFORMATTI
    ME5.,
  • ROWVARIABLEDATE,ROWLABELDATE,ROWFORMATDA
    TE.

25
ANALGRID
26
VMXGPRNT
  • Utility to print any SAS dataset with labels
    modified to include the variable name and/or
    create a comma delimited output (CSV).

27
VMXGPRNT Parameters
  • SP_DSET dataset to be printed defaults to
    _LAST_
  • SP_NOBS number of OBS to be printed defaults
    to 20
  • SP_REMV remove from labels in CSV file
    defaults to NO

28
VMXGPRNT Parameters
  • TMPPRNT destination for a temporary dataset
    on zOS it will be constructed and dynalloced as
    a temporary dataset but on ASCII will be placed
    in your SASUSER directory. Defaults to
    TMPPRNT.SAS
  • BYLST list of BY variables defaults to a null
    string

29
VMXGPRNT Parameters
  • VARLST list of variables to be printed. Default
    is a null string which will print all variables
  • NOEXIMSG suppresses various warnings/notes
    default is YES
  • SP_OPNS PROC PRINT options default is SPLIT

30
VMXGPRNT Example 1
  • VMXGPRNT(SP_DSETPDB.DB2ACCT,SP_NOBS3)
  • Print PDB.DB2ACCT

31
VMXGPRNT Example 1
32
VMXGPRNT Example 2
  • Create a CSV file
  • Filename csv h\mxg\vmxgprnt.csv
  • ods csvall filecsv

  • vmxgprnt(SP_DSETPDB.DB2ACCT,SP_NOBS3,sp_remvY)

  • run

  • ods csvall close

  • run


33
VMXGPRNT Example 2
34
VMXGFIND
  • Utility that will find every OBS in every dataset
    where some condition is satisfied and make a
    copy/print the observations.
  • For example
  • Find all obs where JOBCICS

35
VMXGFIND Parameters
  • PDB LIBNAME to be searched default is PDB
    can be 1 or many
  • PDBOUT where to put the output datasets
    datasets here will be named DDNAME_dataset where
    DDNAME is the libname where they were found

36
VMXGFIND Parameters
  • KEEPIN a list of variables that are used in the
    comparison
  • FIND the comparison for example
  • JobCICS
  • KEEPINSTARTIME STRTTIME INTBTIME,
  • FIND IF ('31JAN2010101112'DT LE STARTIME LE
    '31JAN2010222324'DT )
  • OR ('31JAN2010101112'DT LE STRTTIME LE
    '31JAN2010222324'DT )
  • OR ('31JAN2010101112'DT LE INTBTIME LE
    '31JAN2010222324'DT ) ,

37
VMXGFIND Parameters
  • PRINT default is NO
  • YES print all the observations
  • NO no print
  • xxx print xxx observations

38
VMXGFIND
  • If PRINTYES or xxx then VMXGPRNT is used to do
    the printing
  • Example 1
  • VMXGFIND(FINDQWHSSSIDDBTB,PRINT3)

39
VMXGFIND
40
VMXGSRCH
  • Utility that will find every observation in every
    dataset in every allocated SAS data library where
    the value of the observation contains some
    string.
  • Note libraries must have been allocated either
    explicitly (LIBNAME statement) or by a DATA/PROC
    step.

41
VMXGSRCH Parameters
  • LIBNAME the libname to be searched. Default is a
    NULL string. _ALL_ will search all allocated SAS
    data libraries (they dont have to be MXG) and
    anything else will search that specific LIBNAME.
    Only LIBNAMEs that have been opened will be
    found!!!!! You may need to insert a LIBNAME on
    zOS.

42
VMXGSRCH - Parameters
  • COPYTO copy the datasets and observations that
    match to this LIBNAME
  • NOBS the number of OBS to print default is MAX
  • LOG a large number of lines may be generated
    LOGNO suppresses them. Default is YES

43
VMXGSRCH - Parameters
  • VALUE the value to search for
  • Results what you want us to do
  • PRINT just print the obs/datasets that match
  • COPYONLY copy the datasets but dont print
  • COUNT just produce a count of
    datasets/obs/variables that match
  • LABEL produce a list of variables/datasets
    where the value is in the label
  • FORMAT produce a list of variables/datasets
    where the value is in the format

44
VMXGSRCH Example 1
  • VMXGSRCH( LOGNO,RESULTSCOUNT,
    VALUED2DD,LIBNAMEPDB)

45
VMXGSRCH- Example 1
46
VMXGSRCH Example 2
  • VMXGSRCH( LOGNO,RESULTSPRINT,NOBS2,
    VALUED2DD,LIBNAMEPDB)

47
VMXGSRCH Example 2
48
VMXGSRCH Example 3
  • VMXGSRCH( LOGNO,RESULTSPRINT,NOBS2,
    VALUED2DD,LIBNAMEPDB, COPYTOWORK)

49
VMXGSRCH Example 3
50
VMXGSRCH Example 4
  • VMXGSRCH( LOGNO,RESULTSCOPYONLY,
    VALUED2DD,LIBNAMEPDB, COPYTOWORK)

51
VMXGSRCH Example 4
52
VMXGSRCH Example 5
  • VMXGSRCH(VALUECPU,RESULTSLABEL)
  • NOTE Values are case sensitive

53
VMXGSRCH Example 5
54
VMXGSRCH Example 6
  • VMXGSRCH(VALUETIME,RESULTSFORMAT)

55
VMXGSRCH Example 6
56
UTILWORK
  • Dont understand the documentation on defining
    your workloads to RMFINTRV? This utility will
    build you a skeleton RMFINTRV member based on
    your TYPE72GO records.

57
UTILWORK - Parameters
  • PDB may be either SMF or some libname that
    contains a TYPE72GO dataset. SMF is preferred
    since the normal _ETY72GO exit will suppress
    service classes with no activity in an interval.
    You only need to use a single RMF interval.

58
UTILWORK Parameters
  • USEREPRT YES/NO do you want to use report
    classes or service classes to define workloads.
    Strongly recommended that you use report classes
    since there can be many many more at no real cost.

59
UTILWORK - Example
  • UTILWORK(PDBPDB, OUTFILERMFINTRV,
    USERPRTYES, INTERVALQTRHOUR)

60
UTILWORK - Example
61
READDB2
  • MXG supplied macro that generates the code to
    read all of the different types of DB2 SMF data
    (all IFCIDs). It has been enhanced to make a
    copy of the SMF data and allow for selection
    based on reading the record headers only which
    makes it very fast.

62
READDB2
  • For a full list of parameters and usage see
    READDB2 member in the MXG SOURCLIB
  • Concentration here will be on selection
    parameters and copying of SMF data

63
READDB2
  • SMFOUT DDNAME to which SMF data will be copied
    if blank no copy is made
  • COPYONLY YES/NO only copy SMF data do not
    format SAS datasets
  • Useful to make mini-SMF files to feed to DB2PM or
    send off to vendors
  • PDBOUT DDNAME to which SAS datasets are written
    (WORK is default if left blank)

64
READDB2 - Parameters
  • SYSTEM list of systems
  • PLAN list of plan names
  • AUTHID list of authorization IDs
  • CORRID list of correlation IDs
  • CONNID list of connection IDs
  • DB2 list of DB2 subsystems
  • CONNTYPE list of connect types

65
READDB2 - Parameters
  • TRANNAME list of end-user transaction names
  • PACKAGE list of package names
  • SMFBEGIN SAS datetime constant starting point
    of data
  • SMFEND SAS datetime constant end point of
    data
  • SAS datetime constants are of the form
    01sep10013000 no quotes are needed

66
READDB2
  • All values in lists separated by spaces
  • All parameters separated by commas (except the
    last one)
  • All values are automatically wild carded that
    is, however many bytes are in the value is the
    length of the compare
  • SMFBEGN earliest time in form ddmmmyyhhmmss
    or 10OCT08150000
  • SMFEND latest time in same form

67
READDB2
  • READDB2(TRANNAMEOLB_DISP, COPYONLYYES,SMFOUTS
    MFOUT)
  • Copy records where TRANNAME starts with OLB_DISP
    to SMFOUT DD but do not create SAS datasets
  • READDB2(TRANNAMEOLB,PDBWORK, SMFOUTSMFOUT)
  • Copy records where TRANNAME starts with OLB and
    also place them in SAS datasets in the WORK
    dataset

68
UTILBLDP
  • UTILBLDP is a macro designed to simplify adding
    records to the normal MXG PDB (performance data
    base.) The coding in exits is not difficult if
    you understand it all but can be arcane to the
    uninitiated.
  • It can also be used to read multiple kinds of SMF
    data in a single pass of the SMF data and create
    the SAS datasets in WORK or in a PDB.

69
UTILBLDP
  • Normally the code to read an SMF record is
  • INCLUDE SOURCLIB(TYPE30)
  • And to read two types you might code
  • INCLUDE SOURCLIB(TYPE30)
  • INCLUDE SOURCLIB(TYPE1415)
  • But that would cause two passes of the SMF
    dataset which can be very large and make this an
    expensive and time consuming process.
  • With UTILBLDP this becomes
  • UTILBLDP(USERADD30 1415, BUILDPDBNO,SORTOUTNO,
    OUTFILEINSTREAM)
  • INCLUDE INSTREAM

70
UTILBLDP
  • For documentation on all parameters and usage see
    the member in the MXG SOURCLIB
  • For our purposes there are only a few important
    parameters
  • SORTOUTNO suppresses sorting and writing of
    the data to the PDB DD. You may want to use the
    sort (just add a PDB DD to your JCL) as it will
    remove any duplicate records.
  • USERADD a list of the record types you wish to
    read 30 6 1415 64 70 etc.

71
UTILBLDP
  • OUTFILE INSTREAM writes the data to the
    temporary dataset defined by the INSTREAM DD. You
    can then simply INCLUDE INSTREAM to execute the
    code. If you want to STORE the code for future
    use (or just to see what the generated code looks
    like) route to a PDB member or a sequential
    dataset.
  • BUILDPDBNO suppresses the logic that builds
    the full MXG PDB.

72
VMXGSUM
  • Generalized summarization of ANY SAS dataset
  • Uses PROC MEANS to do summarization
  • SORTs data
  • Allows for changes in input and output data
  • Optimizes variables kept
  • Carries labels and formats thru summarization
  • Allows for long variable names
  • Allows for normalization of variables and
    changing time intervals

73
VMXGSUM
  • Common in reporting
  • DATA xxxx
  • SET yyyy
  • PROC SORT DATAxxxx
  • PROC MEANS DATAXXXX OUTzzzz
  • DATA final
  • SET zzzz

74
VMXGSUM
  • VMXGSUM is a short-hand way of coding a
    repetitive set of commands.
  • Used extensively internally in many MXG members
    but especially common in ASUM and TRND
    members.

75
VMXGSUM - SYNTAX
  • VMXGSUM(
  • INDATA input dataset(s) name
  • OUTDATA output dataset name
  • SUMBY list of variables by which data should be
    sorted
  • INCODE a stub of SAS code executed during the
    first data step
  • OUTCODE a stub of SAS code executed during the
    final data step

76
VMXGSUM - SYNTAX
  • INTERVAL how to change the time interval.
    Valid values are
  • QTRHOUR HALFHOUR HOUR THREEHR
  • MINUTE WEEK MONTH MYTIME
  • DATETIME the variable name of the variable
    containing the datetime value on which INTERVAL
    will be applied
  • SYNC59 if your time is synched to 59 minutes,
    will add 60 seconds before calculating interval
    if set to YES

77
VMXGSUM - SYNTAX
  • ID list of variables that will be carried
    forward as ID values
  • AUTONAMEYES/NO AUTONAME YES says to use the
    autonaming functions of SAS V8 to name the output
    variables.
  • This allows the specification of the same
    variable name in multiple lists but changes the
    output variable name to variable_suffix where
    suffix is the name of the function performed on
    the variable.

78
VMXGSUM - SYNTAX
  • SUM list of variables to be summed
  • MAX list of variables to be maxxed
  • MIN list of variables to be minned
  • MEAN list of variables to be meaned
  • P1 list of variables to get percentile 1
  • P5 5th percentile variables
  • P10 10th percentile variables

79
VMXGSUM - SYNTAX
  • P25 P50 P75 P90 P95 P99 - percentile values
  • STD - Standard Deviation
  • VAR - variance
  • CV - coefficient of variance
  • STDERR - Standard error
  • KURTOSIS - Kurtosis
  • T - T value

80
VMXGSUM - Syntax
  • NORM1-NORM99 - normalization of data.
    Maintaining rates as rates and not averages of
    averages. On the front-end, the rate has to be
    multiplied by the duration and on the back end
    divided again to recalculate the correct rate.

81
VMXGSUM - SYNTAX
  • NORM1-NORM99 - syntax
  • rate1 rate2 rate3ratex/duration
  • List the variables to be normalized followed by a
    / then the variable to be used to do the
    normalization.

82
VMXGSUM - SYNTAX
  • There are other parameters. See the documentation
    in the member for usage and the member ADOCSUM.

83
VMXGSUM - Example 1
  • Summarize the dataset TYPETMNT by DEVICE and
    TMNTTIME calculating average mount delay and the
    total number of mounts per quarter hour.

vmxgsum( indatapdb.typetmnt,
outdatatapemnts, sumbydevice tmnttime,
intervalqtrhour, datetimetmnttime,
meantapmnttm, freqmounts )
84
VMXGSUM - Example 2
  • Summarize the Goal Mode type 72 records for the
    TSO service class calculating the average
    response time, the number of transactions at one
    hour intervals by period.

85
VMXGSUM - Example 2
VMXGSUM( INDATAPDB.TYPE72GO,
OUTDATATSOSUM, SUMBYSTARTIME PERIOD,
INCODE IF SRVCLASSTSO, SUMRESPAVG
NUMTRAN, NORM1RESPAVG/NUMTRAN,
INTERVALHOUR, DATETIMESTARTIME )
86
VMXGSUM Usage Notes
  • NORMx operands must be contiguous starting at 1.
    That is, you cannot have NORM1 and NORM3 without
    a NORM2.

87
VMXGSUM Usage Notes
  • The first data step is almost always converted to
    a VIEW rather than a real data step.
  • KEEPALLNO is resource intensive and not really
    needed except in odd cases. KEEPALLYES is much
    preferred. The keep lists on all output
    datasets are optimized regardless of KEEPALL
    setting.

88
Why VMXGSUM?
  • So why not just use PROC MEANS with CLASS
    operands?
  • VMXGSUM in tests is usually much more efficient
    and in some cases will do the summarization where
    using PROC MEANS or PROC SUMMARY with CLASS
    operands runs out of memory.
  • This is especially true with the current release
    of SAS (9.1.3 SP4) on zOS which is defaulting to
    using THREADS.

89
ANALCNCR
  • Counts concurrent events. How many of something
    were happening at the same time.

90
ANALCNCR - History
  • Method used in original release of MXG
  • DO TIMEBEGIN TO END BY 5
  • OUTPUT
  • END
  • Then add up all the observations with a given
    value of TIME. Created a HUGE number of
    observations and was cumbersome.

91
ANALCNCR - History
  • Method used with ANALCNCR
  • TIMEBEGINCOUNT1OUTPUT
  • TIMEENDCOUNT-1OUTPUT
  • Now add up the counts by time and you are done
    (basically.) Many many fewer observations.

92
ANALCNCR - History
  • If there are three tape allocations
  • Allocation 1 begins at 0800 ends at 0830
  • Allocation 2 begins at 0815 ends at 0825
  • Allocation 3 begins at 0820 ends at 0845

93
ANALCNCR - History
  • MAX of 3 concurrent allocations
  • 15 minutes of 1
  • 5 minutes of 2
  • 5 minutes of 3
  • 5 minutes of 2
  • 15 minutes of 1
  • Old method
  • Allocation 1 - 1800/5360 obs
  • Allocation 2 - 600/5120 obs
  • Allocation 3 - 1500/5300 obs
  • Total 780 obs
  • New Method
  • Each allocation is 2 OBS
  • Total 6

94
ANALCNCR - Example 1
  • How many jobs are running concurrently in class A
    average and max.

ANALCNCR(INDATAPDB.JOBS, OUTSUMRYRUNTIME,
SUMBYJOBCLASS, INCODEIF TYPETASKJOB,
INTERVALQTRHOUR, STARTIMEJINITIME,
ENDTIMEJTRMTIME, OTCODESM
AVGRUNCONCURNT/DURATM RENAME
MAXCNCRMAXRUN ) PROC PRINT ID JOBCLASS
TIMESTMP VAR AVGRUN MAXRUN
95
ANALCNCR - Example 2
  • Now suppose you want the INPUT QUEUE time for the
    same job class.

ANALCNCR(INDATAPDB.JOBS, OUTSUMRYQUETIME,
SUMBYJOBCLASS, INCODEIF TYPETASKJOB,
INTERVALQTRHOUR, STARTIMEREADTIME,
ENDTIMEJINITIME, OTCODESM
AVGQUECONCURNT/DURATM RENAME
MAXQUEMAXRUN ) PROC PRINT ID JOBCLASS
TIMESTMP VAR AVGQUE MAXQUE
96
ANALCNCR - Example 3
  • Now put the two outputs together

DATA JOBSTAT MERGE RUNTIME QUETIME BY JOBCLASS
TIMESTMP PROC PRINT ID JOBCLASS TIMESTMP VAR
AVGQUE AVGRUN MAXQUE MAXRUN

97
ANALCAPD
  • Can you save money by capping the MSUs consumed?
  • Billing is based on the peak of the rolling 4
    hour MSU average
  • Rolling average will (almost) always lag behind
    actual usage
  • So, you can set a cap lower than the actual peak
    and possibly reduce software billing
  • ANALCAPD will let you play with values to find
    a happy MSU value that allows work to run while
    reducing the peak MSU value

98
ANALCAPD
  • Uses the ASUMCEC dataset in the PDB as input
  • Best granularity is when you match CECINTRV to
    INTERVAL in ASUM70PR

99
ANALCAPD Parameters
  • PDBPDB where is the ASUMCEC data
  • GRAPHICSYES use SAS/GRAPH (it will detect if
    it is not there)
  • DEFCAP the MSU value you want to model
  • CECINTRVHOUR the CECINTRV value in use
    QTRHOUR HALFHOUR etc

100
ANALCAPD - Results
101
ANALCAPD Results
  • Black line is current capacity
  • Cyan line is current cap (in this case there is
    not one)
  • Blue line is actual usage
  • Green line is rolling 4 hour average
  • Red are the intervals where the CEC would have
    been capped

102
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com