SMF: Old Dog Learning New Tricks: Ibm Z Systems 2016 Fall Naspa
SMF: Old Dog Learning New Tricks: Ibm Z Systems 2016 Fall Naspa
SMF: Old Dog Learning New Tricks: Ibm Z Systems 2016 Fall Naspa
Steven Jones
SMF/Scheduler/Allocation team lead
[email protected]
Trademarks
The following are trademarks of the International Business Machines Corporation in the United States and/or other countries.
BigInsights DFSMSdss FICON* IMS RACF* System z10* zEnterprise*
BlueMix DFSMShsm GDPS* Language Environment* Rational* Tivoli* z/OS*
CICS* DFSORT HyperSwap MQSeries* Redbooks* UrbanCode zSecure
COGNOS* DS6000* IBM* Parallel Sysplex* REXX WebSphere* z Systems
DB2* DS8000* IBM (logo)* PartnerWorld* SmartCloud* z13 z/VM*
DFSMSdfp
* Registered trademarks of IBM Corporation
The following are trademarks or registered trademarks of other companies.
Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries.
Cell Broadband Engine is a trademark of Sony Computer Entertainment, Inc. in the United States, other countries, or both and is used under license therefrom.
Intel, Intel logo, Intel Inside, Intel Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel
Corporation or its subsidiaries in the United States and other countries.
IT Infrastructure Library is a registered trademark of the Central Computer and Telecommunications Agency which is now part of the Office of Government Commerce.
ITIL is a registered trademark, and a registered community trademark of the Office of Government Commerce, and is registered in the U.S. Patent and Trademark Office.
Java and all Java based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.
Linear Tape-Open, LTO, the LTO Logo, Ultrium, and the Ultrium logo are trademarks of HP, IBM Corp. and Quantum in the U.S. and
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.
OpenStack is a trademark of OpenStack LLC. The OpenStack trademark policy is available on the OpenStack website.
TEALEAF is a registered trademark of Tealeaf, an IBM Company.
Windows Server and the Windows logo are trademarks of the Microsoft group of countries.
Worklight is a trademark or registered trademark of Worklight, an IBM Company.
UNIX is a registered trademark of The Open Group in the United States and other countries.
* Other product and service names might be trademarks of IBM or other companies.
Notes:
Performance is in Internal Throughput Rate (ITR) ratio based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput that any
user will experience will vary depending upon considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload
processed. Therefore, no assurance can be given that an individual user will achieve throughput improvements equivalent to the performance ratios stated here.
IBM hardware products are manufactured from new parts, or new and serviceable used parts. Regardless, our warranty terms apply.
All customer examples cited or described in this presentation are presented as illustrations of the manner in which some customers have used IBM products and the results they may have
achieved. Actual environmental costs and performance characteristics will vary depending on individual customer configurations and conditions.
This publication was produced in the United States. IBM may not offer the products, services or features discussed in this document in other countries, and the information may be subject to
change without notice. Consult your local IBM business contact for information on the product or services available in your area.
All statements regarding IBM's future direction and intent are subject to change or withdrawal without notice, and represent goals and objectives only.
Information about non-IBM products is obtained from the manufacturers of those products or their published announcements. IBM has not tested those products and cannot confirm the
performance, compatibility, or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
Prices subject to change without notice. Contact your IBM representative or Business Partner for the most current pricing in your geography.
This information provides only general descriptions of the types and portions of workloads that are eligible for execution on Specialty Engines (e.g, zIIPs, zAAPs, and IFLs) ("SEs"). IBM
authorizes customers to use IBM SE only to execute the processing of Eligible Workloads of specific Programs expressly authorized by IBM as specified in the “Authorized Use Table for IBM
Machines” provided at www.ibm.com/systems/support/machine_warranties/machine_code/aut.html (“AUT”). No other workload processing is authorized for execution on an SE. IBM offers SE
at a lower price than General Processors/Central Processors because customers are authorized to use SEs only to process certain types and/or amounts of workloads as specified by IBM in the
AUT.
Agenda
SMF Exit IEFUSI is used by virtually all customers to set limits on storage
IEFUSI has many inputs and outputs and must be coded in Assembler
– High cost for making updates, including for new workloads
z/OS 2.2 includes support for a new SMFLIMxx parmlib member
– Customers define a set of rules about a jobstep’s REGION and storage LIMIT
– Each rule contains
• zero or more “filter” keywords (to match the rule to the step that is about to start)
• One or more attribute fields to override what the IEFUSI exit (if any) returns
– Each rule can override all or part of earlier rules that matched
• Result is a compendium of the matching rules’ attributes
– Operator command support to SET SMFLIM and DISPLAY the current rules in use
– JOB support (MSGIEF043I) to indicate applied limits for each job step.
SMFLIMxx syntax
REGION <filter keywords> <attribute keywords>
– Filter keywords (each with wildcard support):
• JOBNAME,STEPNAME,PGMNAME (including “fetchlib”),
• SUBSYS, JOBCLASS, USER,
• JOBACCT, STEPACCT – matches any number of accounting data subfields
• SYSNAME – to support using one parmlib member across multiple systems
– Attribute keywords:
• SYSRESVABOVE/SYSRESVBELOW – reserves high private storage for system
uses – corresponds to LIMIT output parameters from IEFUSI
• REGIONABOVE/REGIONBELOW – sets the REGION
• MEMLIMIT – override MEMLIMIT set by JCL or SMFPRMxx MEMLIMIT
Designed to allow you to leave IEFUSI in place and override specific cases
While the number of inputs is large, many customers can replace their IEFUSI with a
simple SMFLIMxx:
REGION JOBNAME(*) SYSRESVABOVE(100M) SYSRESVBELOW(512K)
REGIONBELOW(NOLIMIT) REGIONABOVE(NOLIMIT)
– Preserves storage for required system function, allows everything else to be used
SMF will hash the records, encrypt the hash and store with the record data
to allow later verification of data via IFASMFDP
– No records altered
– No extra records added
– No records deleted.
SMF data has always been intended to be stored in data sets and
used for post-processing jobs
Getting the data into a running program before it reached its final
resting place was difficult
– Some people have “grabbed” the data as it passed through the IEFU8x exits
– Some have even read directly from MANx data sets or System Logger
Time to Availability
SMFEWTM they are passed to SMF SMFEWTM
IFASMFDP
IFASMFDL
/*********************************************************************/
/* */
/* Define in-memory resources */
/* */
/*********************************************************************/
INMEM(IFASMF.INMEM.RES5,TYPE(0:30),RESSIZMAX(128M))
INMEM(IFASMF.INMEM.RES6,TYPE(30:90),RESSIZMAX(128M))
INMEM(IFASMF.INMEM.RES7,TYPE(0:127),RESSIZMAX(128M))
Programming Interfaces
• IFAZSYSP
• Assembler mappings of input parameter blocks for:
• IFAMCON – ConParmBlock
• IFAMDSC - DscParmBlock
• IFAMGET - GetParmBlock
• IFAMQRY - QryParmBlock
• plus mapping of IFAMQRY output, QrPb_InMemResource
• IFARCINM
• Constants for return codes and reason codes
Programming Interfaces
• Query the names and record types of INMEM resources
to which the user has SAF access
• Call IFAMQRY with Reg1 pointing to 3 DWORD parmlist:
• 64-bit addr of input structure (See QryParmBlock in IFAZSYSP)
• 64-bit addr of 4 byte retcode
• 64-bit addr of 4 byte rsncode
• AMODE 64, task mode, unlocked
• Output: Resource names and record types returned in array of
QrPb_InMemResource entries in buffer, QrPb_ReturnedImrs tells how many
! Pseudo-code example
Set QrPb_Eyecatcher = QRPB#Catcher
Set QrPb_Length = QRPB#ParmLen
Set QrPb_Version = QRPB#CurVer
Set QrPb_BufferSize = <Your INMEM name, char 7-26>
Set QrPb_Buffer@ = <addr of your buffer for returned data>
Programming Interfaces
• Connect to an INMEM resource
• Call IFAMCON with Reg1 pointing to 3 DWORD parmlist:
• 64-bt addr of input structure (See ConParmBlock in IFAZSYSP)
• 64-bit addr of 4 byte retcode
• 64-bit addr of 4 byte rsncode
• AMODE 64, task mode, unlocked
• Output: Connect token returned in ConParmBlock
• Token is unique to the address space and can only be used by the ASID that
made the connection
! Pseudo-code example
Set CnPb_Eyecatcher = CNPB#Catcher
Set CnPb_Length = CNPB#ParmLen
Set CnPb_Version = CNPB#CurVer
Set CnPb_Name = <Your INMEM name, char 7-26>
Set CnPb_NameLength = <length of INMEM name>
Programming Interfaces
• GET a record
• Call IFAMGET with Reg1 pointing to 3 DWORD parmlist:
• 64-bit addr of input structure (See GetParmBlock in IFAZSYSP)
• 64-bit addr of 4 byte retcode
• 64-bit addr of 4 byte rsncode
• AMODE 64, task mode or SRB mode, unlocked
• Output: SMF record in buffer pointed to by GtPb_Buffer@
Programming Interfaces
• GET a record, continued
! Pseudo-code example
Set GtPb_Eyecatcher = GtPB#Catcher
Set GtPb_Length = GtPB#ParmLen
Set GtPb_Version = GtPB#CurVer
Set GtPb_Token = <Token saved from Connect>
Set GtPb_NonBlocking (if do not want a “blocking GET”)
Set GtPb_BufferSize = <size of buffer for next record>
Set GtPb_Buffer@ = <addr of your buffer for returned data>
Programming Interfaces
• Disconnect from an INMEM resource
• Call IFAMDSC with Reg1 pointing to 3 DWORD parmlist:
• 64-bt addr of input structure (See DscParmBlock in IFAZSYSP)
• 64-bit addr of 4 byte retcode
• 64-bit addr of 4 byte rsncode
• AMODE 64, task mode, unlocked
• Output: return/reason code only
! Pseudo-code example
Set DsPb_Eyecatcher = DSPB#Catcher
Set DsPb_Length = DSPB#ParmLen
Set DsPb_Version = DSPB#CurVer
Set DsPb_Token = <Token saved from Connect>