http
instead
of https
in the FILENAME statement. In addition,
verify that the URL specified for lsprurl is the location of the LSPR
table that is appropriate for your site.
filename lsprurl url 'http://www-304.ibm.com/servers/
resourcelink/lib03060.nsf/pages/
lsprITRzOSv2r1?OpenDocument';
libname admin "<location-of-the-ADMIN-library>";
data work.lsprdata;
infile lsprurl;
retain found_toc found_thead found_th td_idx 0;
retain CPCFMODL LSPRCPUS LSPRPCI LSPRMSU;
length CPCFMODL $8;
keep CPCFMODL LSPRCPUS LSPRPCI LSPRMSU;
array td_array{3} LSPRCPUS LSPRPCI LSPRMSU;
input @;
if not found_toc and index(_infile_,'Table of contents') = 0
then return;
found_toc=1;
if index(_infile_,'<thead>') then found_thead=1;
if index(_infile_,'</thead>') then found_thead=0;
if not found_thead and index(_infile_,'<th ')
then do;
found_th = 1;
CPCFMODL = reverse(scan(reverse(_infile_),2,'<>');
end;
else if not found_thead and found_th and index(_infile_,'<td ')
then do;
td_idx + 1;
td_array{td_idx} = input(reverse(scan(reverse(_infile_),2,'<>'),comma10.);
if td_idx = 3
then do;
output;
td_idx = 0;
found_th = 0;
end;
end;
run;
proc sort data=work.lsprdata out=admin.itms_smf_lsprdata;
by CPCFMODL;
run;
filename
statement
of the preceding code is lengthy. After you copy and paste it into
your SAS Program Editor, edit the statement so that it does not use
more than one line. In addition, make sure that there are no extraneous
spaces in the statement.
/* Read the Microsoft Excel workbook that contains extracted information from IBM LSPR documentation and create a SAS data set from it. */ PROC IMPORT OUT=WORK.LSPRDATA DATAFILE=<"location-of-spreadsheet"> DBMS=EXCEL REPLACE; SHEET="Sheet1$"; GETNAMES=NO; MIXED=NO; SCANTEXT=YES; USEDATE=YES; SCANTIME=YES; RUN; /* Extract selected fields of information from the vendor-supplied LSPR resource information. */ DATA WORK.LSPRDATA(keep=CPCFMODL LSPRCPUS LSPRPCI LSPRMSU); SET WORK.LSPRDATA; LENGTH CPCFMODL $ 8; IF _n_=1 THEN DELETE; CPCFMODL=F1; LSPRCPUS=F2; LSPRPCI=F3; LSPRMSU=F4; run; /* Store IBM LSPR resource information in SAS data set in IT Resource Management Admin library. */ LIBNAME ADMIN <'location-of-ITRM-Admin-library'>; PROC SORT DATA=WORK.LSPRDATA out=ADMIN.ITMS_SMF_LSPRDATA; BY CPCFMODL; RUN;
/*Allocate the backup copy of the SASHELP library */ /*that uses PROC COPY to copy only the LSPR table */ /*with the SELECT statement. */ /*Make sure you have exclusive udate access to the */ /*SASHELP SAS library before you submit code. */ libname bkuphelp '<physical-location-of-backup-sashelp>'; proc copy in=bkuphelp out=SASHELP; select ITMS_SMF_LSPRDATA; run;
//jobname JOB //STEP1 EXEC SASPROC,OPTIONS=’SASHELP=SASHELP’ //SASHELP DD DSN='&prefix.llWn.SASHELP',DISP=OLD //SYSIN DD * libname bkuphelp '<physical-location-of-backup-sashelp> '; proc copy in=bkuphelp out=SASHELP; select ITMS_SMF_LSPRDATA; run; /*Ouput contents of LSPR data information */ PROC PRINT=SASHELP.ITMS_SMF_LSPRDATA; RUN;
&prefix
is
the prefix specified at the time of your installation.
ll
is
the code for the language of your installation.
Wn
is
the encoding for your installation.
USERID.CONFIG(ENW0) USERID.ENW0.SASHELP USERID.D54002.ENW0.SASHELP
ERROR: The SMF data for system is associated with a mainframe model ERROR: <number> which does not appear in your LSPR table. ERROR: To preserve the integrity of your data mart, this job will stop.
%LET LSPR_ERROR_ON=N;This code sets all subsequent calculations that are based on the LSPR information to missing values. This results in other computed columns also having missing values. This situation is not statistically incorrect, but it can misrepresent MIPS and MSU usage in aggregations. The SAS log will contain notes about this instead of errors.
NOTE: The SMF data for system is associated with a mainframe model
NOTE: <number> which does not appear in your LSPR table.
NOTE: You coded LSPR_ERROR_ON=N to ignore this problem.
Name of the Column in
the Resource Utilization Table
|
Sample Values for First
Row of the Table
|
Sample Values for Second
Row of the Table
|
---|---|---|
System ID
|
DEVA
|
POA2
|
Cec ID
(from RMF)
|
B77A
|
3A7A
|
CPU Model
(from RMF)
|
2094-706
|
2066-0A2
|
Cpu Model Capacity Type
(extrapolated from CPU
Model ID from RMF)
|
Full
|
Sub
|
Standard CPU Engines
(from RMF)
|
6
|
2
|
IFA CPU Engines
(from RMF)
|
2
|
0
|
ZIP CPU Engines
(from RMF)
|
1
|
0
|
Total CPU Engines
(calculated if full
capacity model, else standard CPUs from RMF)
|
9
|
2
|
CPU Model
extrapolated if full
capacity model, else CPU model from RMF)
|
2094-709
|
2066-0A2
|
CPU Model CPUs
(from LSPR)
|
9
|
2
|
CEC Su/Sec
(CEC Service constant
from RMF)
|
19536.019536
|
6165.7032755
|
Su/Sec
(CPU Conversion constant
from RMF)
|
25559.105431
|
6341.6567578
|
CPU Model MSU Capacity
(from RMF)
|
422.00
|
44.00
|
CPU Model MSU Capacity
(from LSPR)
|
584.00
|
44.00
|
IBM Processor Capacity
Index
(also known as MIPS
from LSPR)
|
4,366.00
|
234.00
|
Minimum Datetime
(from RMF)
|
01Mar08:00:00:00
|
01Mar08:00:00:00
|
Maximum Datetime
(from RMF)
|
01Mar08:23:45:00
|
01Mar08:23:30:00
|
MSU/MIPS Conversion
Factor
(calculated)
|
7.48
|
5.32
|
C:\Program
Files\SASHome\SASITResourceManagementSASEnterpriseGuideComponents\
.
These projects can be executed to create report definitions for use
in SAS IT Resource Management report jobs. You can also create a report
definition and select that definition in the Performance Report transformation
for inclusion in a report job. For more information, see Chapter 7,
“Working with the ITRM Report Definition Task in SAS Enterprise
Guide” in the SAS IT Resource Management 3.7: Reporting
Guide.
Domain Category
|
Staged Table
|
Computed Column
|
Column Label
|
Calculation
|
---|---|---|---|---|
System
|
XRMFSYS
XRMFINT
|
SYSMSU
|
SystemCpuMsuUsage
|
if CPACTTM > 0 then
SYSMSU= CPACTTM * SUSEC / 1000000; else SYSMSU=.;
|
|
|
SYSMIPS
|
SystemCpuMipsUsage
|
if MIPSFACT ^= . and
CPACTTM > 0 then SYSMIPS=(CPACTTM * SUSEC / 1000000) * MIPSFACT;
else SYSMIPS=.;
|
|
|
IFAMSU
|
IfaCpuMsuUsage
|
if IFAACTT > 0 then
IFAMSU= IFAACTT * SUSEC / 1000000; else IFAMSU=.;
|
|
|
IFAMIPS
|
IfaCpuMipsUsage
|
if MIPSFACT ^= . and
IFAACTT > 0 then IFAMIPS= ( IFAACTT * SUSEC / 1000000) * MIPSFACT;
else IFAMIPS=.;
|
|
|
ZIPMSU
|
ZipCpuMsuUsage
|
if ZIPACTT > 0 then
ZIPMSU= ZIPACTT * SUSEC / 1000000; else ZIPMSU=.;
|
|
|
ZIPMIPS
|
ZipCpuMipsUsage
|
if MIPSFACT ^= . and
ZIPACTT > 0 then ZIPMIPS= ( ZIPACTT * SUSEC / 1000000) * MIPSFACT;
else ZIPMIPS=.;
|
|
|
TOTMSU
|
AllEngCpuMsuUsage
|
AllEngCpuMsuUsage if
CPACTTM > 0 or IFAACTT > 0 or ZIPACTT > 0 then TOTMSU=(sum(CPACTTM,
IFAACTT, ZIPACTT) * SUSEC) / 1000000; else TOTMSU=.;
|
|
|
TOTMIPS
|
AllEngCpuMipsUsage
|
if MIPSFACT ^= . then
TOTMIPS=(sum(CPACTTM, IFAACTT, ZIPACTT) * SUSEC / 1000000) * MIPSFACT;
else TOTMIPS=.;
|
|
|
MSUCAP
|
SystemMsuCapacity
|
DURATION * NRCPUS *
SUSEC / 1000000
|
|
|
MIPSCAP
|
SystemMipsCapacity
|
if MIPSFACT ^= . then
MIPSCAP=FLOOR(MIPSFACT * (DURATION * NRCPUS * SUSEC / 1000000));
else MIPSCAP=.;
|
Lpar
CecLpar
|
XASM70L
XASMCEL
|
LPRSYSMSU
|
LparCpMsuUsage
|
if LCPUPDT > 0 then
LPRSYSMSU= LCPUPDT * SUSEC / 1000000; else LPRSYSMSU=.;
|
|
|
LPRSYSMIPS
|
LparCpMipsUsage
|
if MIPSFACT ^= . and
LCPUPDT > 0 then LPRSYSMIPS= ( LCPUPDT * SUSEC / 1000000) * MIPSFACT;
else LPRSYSMIPS=.;
|
|
|
LPRIFAMSU
|
LparIfaMsuUsage
|
if IFAACTT > 0 then
LPRIFAMSU=IFAACTT * SUSEC / 1000000; else LPRIFAMSU=.;
|
|
|
LPRIFAMIPS
|
LparIfaMipsUsage
|
if MIPSFACT ^= . and
IFAACTT > 0 then LPRIFAMIPS=(IFAACTT* SUSEC / 1000000) * MIPSFACT;
else LPRIFAMIPS=.;
|
|
|
LPRZIPMSU
|
LparZipMsuUsage
|
if ZIPACTT > 0 then
LPRZIPMSU=ZIPACTT * SUSEC / 1000000; else LPRZIPMSU=.;
|
|
|
LPRZIPMIPS
|
LparZipMipsUsage
|
if MIPSFACT ^= . and
ZIPACTT > 0 then LPRZIPMIPS=(ZIPACTT * SUSEC / 1000000) * MIPSFACT;
else LPRZIPMIPS=.;
|
|
|
LPRTOTMSU
|
LparAllEngMsuUsage
|
if LCPUPDT > 0 or
IFAACTT > 0 or ZIPACTT > 0 then LPRTOTMSU=(sum(LCPUPDT, IFAACTT,
ZIPACTT)* SUSEC) / 1000000; else LPRTOTMSU=.;
|
|
|
LPRTOTMIPS
|
LparAllEngMipsUsage
|
if MIPSFACT ^= . then
LPRTOTMIPS= (sum(LCPUPDT, IFAACTT, ZIPACTT) * SUSEC / 1000000) * MIPSFACT;
else LPRTOTMIPS=.;
|
Workload
|
XRMFWKL
|
WKLMSU
|
WorkloadCpuMsuUsage
|
Workload XRMFWKL WKLMSU WorkloadCpuMsuUsage if
WKLCPU > 0 then WKLMSU=(WKLCPU*CECSUSE) / 1000000; else WKLMSU=.;
|
|
|
WKLMIPS
|
WorkloadCpuMipsUsage
|
if MIPSFACT ^= . and
WKLCPU > 0 then WKLMIPS=((WKLCPU*CECSUSE) / 1000000) * MIPSFACT;
else WKLMIPS=.;
|
|
|
WKLIFAMSU
|
WorkloadIfaCpuMsuUsage
|
if WKLIFA > 0 then
WKLIFAMSU=(WKLIFA*CECSUSE) / 1000000; else WKLIFAMSU=.;
|
|
|
WKLIFAMIPS
|
WorkloadIfaCpuMipsUsage
|
if MIPSFACT ^= . and
WKLIFA > 0 then WKLIFAMIPS=((WKLIFA*CECSUSE) / 1000000) * MIPSFACT;
else WKLIFAMIPS=.;
|
|
|
WKLZIPMSU
|
WorkloadZipCpuMsuUsage
|
if WKLZIP > 0 then
WKLZIPMSU=(WKLZIP*CECSUSE) / 1000000; else WKLZIPMSU=.;
|
|
|
WKLZIPMIPS
|
WorkloadZipCpuMipsUsage
|
if MIPSFACT ^= . and
WKLZIP > 0 then WKLZIPMIPS=((WKLZIP*CECSUSE) / 1000000) * MIPSFACT;
else WKLZIPMIPS=.;
|
|
|
WKLTOTMSU
|
WorkloadAllEngCpuMsuUsage
|
if WKPCPU > 0 or
WKPIFA > 0 or WKPZIP > 0 then WKLTOTMSU=(sum(WKPCPU,WKPIFA,WKPZIP)
* CECSUSE) / 1000000; else WKLTOTMSU=.;
|
|
|
WKLTOTMIPS
|
WorkloadAllEngCpuMipsUsage
|
if MIPSFACT ^= . then
WKLTOTMIPS=(sum(WKPCPU,WKPIFA,WKPZIP) * CECSUSE/ 1000000)*MIPSFA CT;
else WKLTOTMIPS=.;
|
Workload Period
|
XRMFWKP
|
WKPMSU
|
WorkloadPeriodCpuMsuUsage
|
if WKPCPU > 0 then
WKPMSU=(WKPCPU*CECSUSE) / 1000000; else WKPMSU=.;
|
|
|
WKPMIPS
|
WorkloadPeriodCpuMipsUsage
|
if MIPSFACT ^= . and
WKPCPU > 0 then WKPMIPS=((WKPCPU*CECSUSE) / 1000000) * MIPSFACT;
else WKPMIPS=.;
|
|
|
WKPIFAMSU
|
WorkloadPeriodIfaCpuMsuUsage
|
if WKPIFA > 0 then
WKPIFAMSU=(WKPIFA*CECSUSE) / 1000000; else WKPIFAMSU=.;
|
|
|
WKPIFAMIPS
|
WorkloadPeriodIfaCpuMipsUsage
|
if MIPSFACT ^= . and
WKPIFA > 0 then WKPIFAMIPS=((WKPIFA*CECSUSE) / 1000000) * MIPSFACT;
else WKPIFAMIPS=.;
|
|
|
WKPZIPMSU
|
WorkloadPeriodZipCpuMsuUsage
|
if WKPZIP > 0 then
WKPZIPMSU=(WKPZIP*CECSUSE) / 1000000; else WKPZIPMSU=.;
|
|
|
WKPZIPMIPS
|
WorkloadPeriodZipCpuMipsUsage
|
if MIPSFACT ^= . and
WKPZIP > 0 then WKPZIPMIPS=((WKPZIP*CECSUSE) / 1000000) * MIPSFACT;
else WKPZIPMIPS=.;
|
|
|
WKPTOTMSU
|
WorkloadPeriodAllEngCpuMsuUsage
|
if WKPCPU > 0 or
WKPIFA > 0 or WKPZIP > 0 then WKPTOTMSU=(sum(WKPCPU,WKPIFA,WKPZIP)
* CECSUSE) / 1000000; else WKPTOTMSU=.;
|
|
|
WKPTOTMIPS
|
WorkloadPeriodAllEngCpuMipsUsage
|
if MIPSFACT ^= . then
WKPTOTMIPS=(sum(WKPCPU,WKPIFA,WKPZIP) * CECSUSE/1000000)*MIPSFACT;
else WKPTOTMIPS=.;
|
Goal Mode Period
|
XTY72GO
|
PRDMSU
|
PeriodCpuMsuUsage
|
if CPUTM > 0 then
PRDMSU=CPUTM*CECSUSE/1000000; else PRDMSU=.;
|
|
|
PRDMIPS
|
PeriodCpuMipsUsage
|
if MIPSFACT ^= . and
CPUTM > 0 then PRDMIPS=(CPUTM*CECSUSE/1000000) * MIPSFACT; else
PRDMIPS=.;
|
|
|
PRDIFAMSU
|
PeriodIfaCpuMsuUsage
|
if CPIFATM > 0 then
PRDIFAMSU=CPIFATM*CECSUSE/1000000; else PRDIFAMSU=.;
|
|
|
PRDIFAMIPS
|
PeriodIfaCpuMipsUsage
|
if MIPSFACT ^= . and
CPIFATM > 0 then PRDIFAMIPS=(CPIFATM*CECSUSE/1000000) * MIPSFACT;
else PRDIFAMIPS=.;
|
|
|
PRDZIPMSU
|
PeriodZipCpuMsuUsage
|
if CPZIPTM > 0 then
PRDZIPMSU=CPZIPTM*CECSUSE/1000000; else PRDZIPMSU=.;
|
|
|
PRDZIPMIPS
|
PeriodZipCpuMipsUsage
|
if MIPSFACT ^= . and
CPZIPTM > 0 then PRDZIPMIPS=(CPZIPTM*CECSUSE/1000000) * MIPSFACT;
else PRDZIPMIPS=.;
|
|
|
PRDTOTMSU
|
AllEngCpuTimeMsuUsage
|
if CPUTM > 0 or CPIFATM
> 0 or CPZIPTM > 0 then PRDTOTMSU=(sum(CPUTM,CPIFATM,CPZIPTM)
* CECSUSE) / 1000000; else PRDTOTMSU=.;
|
|
|
PRDTOTMIPS
|
AllEngCpuTimeMipsUsage
|
if MIPSFACT ^= . then
PRDTOTMIPS= (sum(CPUTM,CPIFATM,CPZIPTM) * CECSUSE/1000000)*MIPSFACT;
else PRDTOTMIPS=.;
|
Batch Jobs
TSO
OMVS
|
XJOBS
|
SYSMSU
|
SystemCpuMsuUsage
|
if CPUTM > 0 then
SYSMSU=CPUTM*CECSUSE/1000000; else SYSMSU=.;
|
|
|
SYSMIPS
|
SystemCpuMipsUsage
|
if MIPSFACT ^= . and
CPUTM > 0 then SYSMIPS=(CPUTM*CECSUSE/1000000) * MIPSFACT; else
SYSMIPS=.;
|
|
|
IFAMSU
|
IfaCpuMsuUsage
|
if CPIFATM > 0 then
IFAMSU=CPIFATM*CECSUSE/1000000; else IFAMSU=.;
|
|
|
IFAMIPS
|
IfaCpuMipsUsage
|
if MIPSFACT ^= . and
CPIFATM > 0 then IFAMIPS=(CPIFATM*CECSUSE/1000000) * MIPSFACT;
else IFAMIPS=.;
|
|
|
ZIPMSU
|
ZipCpuMsuUsage
|
if CPZIPTM > 0 then
ZIPMSU=CPZIPTM*CECSUSE/1000000; else ZIPMSU=.;
|
|
|
ZIPMIPS
|
ZipCpuMipsUsage
|
if MIPSFACT ^= . and
CPZIPTM > 0 then ZIPMIPS=(CPZIPTM*CECSUSE/1000000)*MIPSFACT; else
ZIPMIPS=.;
|
|
|
TOTMSU
|
AllEngCpuMsuUsage
|
if CPUTM > 0 or CPIFATM
> 0 or CPZIPTM > 0 then TOTMSU=(sum(CPUTM,CPIFATM,CPZIPTM) *
CECSUSE) / 1000000; else TOTMSU=.;
|
|
|
TOTMIPS
|
AllEngCpuMipsUsage
|
if MIPSFACT ^= . then
TOTMIPS=(sum(CPUTM,CPIFATM,CPZIPTM) * CECSUSE/1000000)*MIPSFACT;
else TOTMIPS=.;
|