Building an MXG PDB from NTSMF Data Chuck Hopf chuck@chopf.com www.chopf.com/geekland.shtml Building an MXG PDB from NTSMF Data • • • • • ‘Classic’ MXG PDB Structure Why it doesn’t work What needed to change How it is implemented for NTSMF Using BLDNTPDB Classic MXG PDB Structure • Read ALL the data and place it in a PDB with possibly CICSTRAN on the side • Run daily - daily contains detail of ALL data read • WEEKBLD consolidates dailies into weeklies • MONTHBLD consolidates weeklies into monthlies Classic MXG PDB Structure • DASD storage required: – 8 daily PDB – 5 weekly PDB – enough WORK space for the largest dataset (STEPS or TYPE74) Why It Doesn’t Work • 40 GB of SMF data daily • Needs 160GB of WORK space (SORTWK and WORK) • 320GB of space for daily datasets • 1+ Terror Bytes for weekly datasets • Time - Daily jobs that run for more than a day are not practical What Needed to Change • • • • • Multiple Parallel Threads Run week-to-date Run month-to-date Eliminate weekly/monthly jobs Exploit summarization macros where needed to reduce volume How Is It Implemented for NTSMF? • BLDNTPDB - a very large and complex collection of SAS MACROs that allows the user to choose how the PDB should be structured. • Can use the classic MXG structure or... • Can use virtually any structure the user chooses Using BLDNTPDB • • • • Parameters and Meanings Examples of use Future Directions ????????????????????? Using BLDNTPDB Parameters and Meanings • NTSMF=C:\MXG\NTSMF\NTSMF.SMF - where is your RAW NTSMF data? • WEEKSTRT=MON - on what day of the week does your week start? The normal MXG default is Monday. This controls when weekly processing takes place. • RUNNTINT=YES - should we run the NTINTRV summarization? Parameters and Meanings • ASUMDUR=HOUR - what level of summarization should we apply? Valid values are QTRHOUR, HALFHOUR, HOUR, SHIFT, DATE, WEEK, MONTH • KEEPERS=null - A list of datasets to be ‘kept’ (usually not used) • DROPPERS=null - A list of datasets to be ‘dropped’ (built but not kept in the output PDB.) Parameters and Meanings • ZEROOBS=null - Similar to DROPPERS but datasets are created with 0 observations • MAXDRVS=26 - Maximum number of logical drives/physical drive (limits and array size.) • RERUN=null - If YES is specified forces the rewriting of an old PDB USE WITH CAUTION Parameters and Meanings • • • • • • • • MON=C:\MXG\MON TUE=C:\MXG\TUE WED=C:\MXG\WED THU=C:\MXG\THU FRI=C:\MXG\FRI SAT=C:\MXG\SAT SUN=C:\MXG\SUN Dataset placement for DAILY PDBs. If a null string is used, the dataset WILL NOT BE BUILT. Parameters and Meanings • • • • • • WEEK=C:\MXG\WEEK WEEK2=C:\MXG\WEEK2 WEEK3=C:\MXG\WEEK3 WEEK4=C:\MXG\WEEK4 WEEK5=C:\MXG\WEEK5 Placement for weekly datasets. If a null string is used, the dataset WILL NOT BE BUILT. Parameters and Meanings • • • • TREND=C:\MXG\TREND MONTH=C:\MXG\MONTH MONTH1=null Placement for monthly and TREND datasets. A null string results in the dataset NOT BEING BUILT. Parameters and Meanings • RUNDAY=YES - Run the BUILD process daily and build the specified daily databases • RUNWEEK=NO - YES means run the weekly BUILD process if it is the day specified by WEEKDATE and WTD means build WTD datasets daily • RUNMONTH=NO - YES means run the monthly BUILD process on the 2nd day of the month and MTD means build MTD datasets daily • RUNTREND=WEEKLY - Build the TREND datasets when the WEEKLY BUILD is run. If DAILY is specified, build the TREND datasets when the DAILY datasets are built. Parameters and Meanings • RPTRAW=NO - Build a table of the distribution of the RAW NTSMF record types • RPTDAY=PDB - Create reports for the most recent PDB at the hourly • RPTWEEK=NO - Create reports for the WEEKLY PDB if it has just been • RPTMONTH=NO - Create reports for the MONTHLY database if it has just been created • RPTTREND=NO - Create reports for the TREND database if it has just been updated Parameters and Meanings • GRAFDAY=PDB - Create reports for the most recent PDB at the hourly • GRAFWEEK=NO - Create reports for the WEEKLY PDB if it has just been • GRAFMNTH=NO - Create reports for the MONTHLY database if it has just been created • GRAFTRND=NO - Create reports for the TREND database if it has just been updated Parameters and Meanings • Any combination of RUNxxxx, RPTxxxx, and GRAFxxxx specifications may be used. You can do DAILY, WEEKLY, and MONTHLY runs in a single execution as well as creating reports and graphs at each level. Parameters and Meanings • Null strings passed as some parameters means ‘dont do this!’ Examples of Use • Classic MXG Structure • PDB for each day of week, 5 weeks, monthly with week run on Monday – %BLDNTPDB(RUNDAY=YES, RUNWEEK=YES, RUNMNTH=YES, RUNTRND=WEEKLY); Examples of Use • Single daily PDB no WEEKLY/MONTHLY/TREND – %BLDNTPDB(RUNDAY=YES,MON=, TUE=, WED=, THU=, FRI=, SAT=, SUN=); Examples of Use • Single daily PDB with week-to-date, month-to-date, and trending done daily – %BLDNTPDB(RUNDAY=YES, RUNWEEK=WTD,RUNMNTH=MTD, RUNTRND=DAILY,MON=,TUE=,WED=, THU=, FRI=, SAT=, SUN=); A Few Words About MXG 16.04 and Later • Each dataset now has an up to 6 character mnemonic identifier. In the case of NTSMF data it starts with NT and then has 4 unique characters. • This is used to identify what datasets to KEEP DROP or set to ZEROOBS. • YOU MUST REVIEW THE 16.04 CHANGES and DOCUMENTATION! Examples of Use • Build and keep only the datasets needed for NTINTRV – %BLDNTPDB(KEEPERS=NTBROW NTCACH NTFTP NTMEM NTNBTC NTNBUI NTNETS NTNWLI NTNWLN NTNWLS NTOBJ NTPAGE NTPDSK NTPROC NTPROR NTRDIR NTSERV NTSYST NTTCP); Examples of Use • Build only the datasets needed for NTINTRV and DROP after NTINTRV is created: – %BLDNTPDB(DROPPERS=NTBROW NTCACH NTFTP NTMEM NTNBTC NTNBUI NTNETS NTNWLI NTNWLN NTNWLS NTOBJ NTPAGE NTPDSK NTPROC NTPROR NTRDIR NTSERV NTSYST NTTCP); Examples of Use • Build the datasets needed for NTINTRV but build the PROCESS dataset with zero observations: – %BLDNTPDB(KEEPERS=NTBROW NTCACH NTFTP NTMEM NTNBTC NTNBUI NTNETS NTNWLI NTNWLN NTNWLS NTOBJ NTPAGE NTPDSK NTPROR NTRDIR NTSERV NTSYST NTTCP, ZEROOBS=NTPROC); Examples of Use • Reporting can be added to any execution: – %BLDNTPDB(xxxxxxxxxxxxxxx, RPTDAY=YES); Examples of Use • Reporting can be done against any PDB: – %BLDNTPDB(xxxxxxxxxxxxxxx, RPTDAY=MON); Examples of Use • GRAPHS can be created for daily, weekly and trend datasets (CPU usage only at this time - more to come.) – %BLDNTPDB(xxxxxxxxxxxxx, GRAFDAY=YES, GRAFWEEK=YES); Examples of Use - A Case Study Suppose you want the following: Run the PDB DAILY keeping all datasets Maximum of 5 logical drives/physical drive Start the week on Sunday Keep a WTD/MTD/and TREND datasets Run reports of Daily usage Create Graphs of Daily usage Examples of Use - A Case Study %BLDNTPDB(MON=, TUE=,WED=,THU=,FRI=, SAT=,SUN=,WEEK2=,WEEK3=, WEEK4=,WEEK5=, RUNDAY=YES,WEEKSTRT=SUN, RUNWEEK=WTD,RUNMNTH=MTD, RUNTRND=DAILY,MAXDRVS=5, RPTDAY=PDB,GRAFDAY=PDB); Future Directions • • • • Largely up to YOU! My knowledge of the data is limited My experience with the data is limited I need to know what YOU want/need Future Directions • What reports are needed – Data sources – Data elements – Levels of summarization Future Directions • What graphs are needed – What data sources – What kinds of graphs – What levels of summarization Future Directions • Currently on the development list: – Selection of datasets to place in the WEEKLY/MONTHLY databases - a WEEKKEEP= operand or something along those lines – More automated summarization (this is a tough one because it supposes knowledge of the datasets and variables that is difficult to have programmatically.) Future Directions • Currently on the Development List – Ability to limit variables in WTD/MTD datasets using DROP= – Ability to output reports as HTML ???????????