ZOS System Logger
ZOS System Logger
Frank Kyne
Stephen Anania
Paola Bari
Gianmario Bescape
Jim Grauel
Hiram Neal
Andrew Sica
Bill Stillwell
David Viguers
ibm.com/redbooks
International Technical Support Organization
July 2007
SG24-6898-01
Note: Before using this information and the product it supports, read the information in “Notices” on
page ix.
This edition applies to Version 1, Release 8 of z/OS (product number 5694-A01, 5655-G52).
© Copyright International Business Machines Corporation 2003, 2007. All rights reserved.
Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule
Contract with IBM Corp.
Contents
Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .x
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
The team that wrote this Redbooks document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Become a published author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Summary of changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
July 2007, Second Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Chapter 4. IMS Common Queue Server and the System Logger . . . . . . . . . . . . . . . . 113
4.1 Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.1.1 Overview of shared queues in the IMSplex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.1.2 How CQS uses the System Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.1.3 System Logger offload processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.1.4 Offload data set deletion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.1.5 Importance of the log stream data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.2 Defining the System Logger in the IMSplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.2.1 Subsystem (CQS) definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.2.2 System Logger definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.2.3 Security definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3 CQS and System Logger operational considerations . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.1 Controlling the use of System Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.2 Defining log streams dynamically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.3 Displaying log stream information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.4 Monitoring for offload conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.4 CQS and System Logger error recovery considerations. . . . . . . . . . . . . . . . . . . . . . . 132
4.4.1 Non-zero return and reason codes from the System Logger . . . . . . . . . . . . . . . 132
4.4.2 Important messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.5 CQS and System Logger performance considerations . . . . . . . . . . . . . . . . . . . . . . . . 134
4.5.1 Structure checkpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.5.2 Structure checkpoint recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.5.3 Staging data sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.5.4 Staging data set recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.5.5 Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.5.6 Measurement environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.5.7 Utilities and tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.5.8 Measurement methodology and reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.5.9 Measurement results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.5.10 Summary of measurement results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.5.11 Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Contents v
7.1.1 Display Logger command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.1.2 LIST Option on IXCMIAPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
7.1.3 Display GRS command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
7.1.4 How to identify log streams with problems / damaged log stream . . . . . . . . . . . 258
7.2 Offload monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7.3 Stopping/Starting Logger Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
7.4 Handling Directory Full Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
7.5 Handling of Couple Data Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
7.6 HSM considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.7 Deletion of a log stream with valid data in interim storage . . . . . . . . . . . . . . . . . . . . . 265
7.8 Structure rebuilding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
7.9 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.9.1 DUMP command parmlib member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.9.2 SMF88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.9.3 IXGRPT1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7.9.4 LOGR Couple Data Set Audit Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Contents vii
viii System Programmer’s Guide to: z/OS System Logger
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in other countries. Consult
your local IBM representative for information about the products and services currently available in your area.
Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product, program, or service that does
not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to
evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this document. The
furnishing of this document does not give you any license to these patents. You can send license inquiries, in
writing, to:
IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of
express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically made
to the information herein; these changes will be incorporated in new editions of the publication. IBM may make
improvements or changes in the product(s) or the program(s) described in this publication at any time without
notice.
Any references in this information to non-IBM Web sites are provided for convenience only and do not in any
manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the
materials for this IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes appropriate without
incurring any obligation to you.
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products and cannot confirm the
accuracy of 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.
This information contains examples of data and reports used in daily business operations. To illustrate them
as completely as possible, the examples include the names of individuals, companies, brands, and products.
All of these names are fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrate programming
techniques on various operating platforms. You may copy, modify, and distribute these sample programs in
any form without payment to IBM, for the purposes of developing, using, marketing or distributing application
programs conforming to the application programming interface for the operating platform for which the sample
programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore,
cannot guarantee or imply reliability, serviceability, or function of these programs.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other
countries, or both.
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.
Other company, product, or service names may be trademarks or service marks of others.
The z/OS® System Logger is a function provided by the operating system to exploiters
running on z/OS. The number of exploiters of this component is increasing, as is its
importance in relation to system performance and availability. This book provides system
programmers with a solid understanding of the System Logger component and guidance
about how it should be set up for optimum performance with each of the exploiters.
Gianmario Bescape is an Advisory Software Support with IBM GTS in Italy. He has been
working in IMS™ Technical Support group in Milan for about 20 years, and is currently a
member of the EMEA IMS second level support team. His experience includes support in
solution of problems and in the implementation of IMS Shared Queues environments for large
customers.
Jim Grauel was an IBM Senior Technical Staff Member. He joined IBM in 1965 as a
Hardware Customer Engineer, in St. Louis, Missouri. In 1972 he transferred to Software as a
Program Support Representative, supporting OS R21.7 and CICS® (Release 2.3). In 1980
he transferred to the CICS Support Center in San Jose, California, and later to Raleigh in
1984 and has been working as Level 2 Support in the CICS Support Center.
Hiram Neal is s an Advisory Software Engineer with the IMS Performance Group at the
Silicon Valley Laboratory in San Jose, CA. He has been a member of the IMS Performance
team for 9 years, conducting pre-release IMS performance tests and customer support for
IMS versions 6-10.
Andrew Sica is a Software Engineer. He holds a degree in Computer Science from Western
New England College and has four years of experience working in System Logger
development and service.
Bill Stillwell was a Senior Consulting I/T Specialist and has been providing technical support
and consulting services to IMS customers as a member of the Dallas Systems Center for 21
David Viguers is a member of the IBM IMS development team at Silicon Valley Lab working
with performance, test, development, and customer support. Dave also develops and delivers
education on IMS Parallel Sysplex. He has spent over 35 years working with IMS in various
functions and organizations.
Rich Conway
International Technical Support Organization, Poughkeepsie Center
Bob Haimowitz
International Technical Support Organization, Poughkeepsie Center
Mario Bezzi
IBM Poughkeepsie
Nicole Burgess
IBM Poughkeepsie
Juliet Candee
IBM Poughkeepsie
Tarun Chopra
IBM Poughkeepsie
Andrew Currier
IBM Poughkeepsie
Evan Haruta
IBM Poughkeepsie
Rick Kready
IBM Poughkeepsie
Curt Jews
IBM Washington Systems Center
Bruce Naylor
IBM Silicon Valley Lab
Tom Rankin
IBM Poughkeepsie
Stephen Warren
IBM Poughkeepsie
Peter Redmond
IBM Poughkeepsie
Marty Moroch
IBM Corporation USA
Your efforts will help increase product acceptance and customer satisfaction. As a bonus, you
will develop a network of contacts in IBM development labs, and increase your productivity
and marketability.
Find out more about the residency program, browse the residency index, and apply online at:
ibm.com/redbooks/residencies.html
Comments welcome
Your comments are important to us!
We want our Redbooks to be as helpful as possible. Send us your comments about this or
other Redbooks in one of the following ways:
Use the online Contact us review form found at:
ibm.com/redbooks
Send your comments in an Internet note to:
[email protected]
Mail your comments to:
IBM Corporation, International Technical Support Organization
Dept. HYJ Mail Station P099
2455 South Road
Poughkeepsie, NY 12601-5400
Preface xiii
xiv System Programmer’s Guide to: z/OS System Logger
Summary of changes
This section describes the technical changes made in this edition of the book. This edition
may also include minor corrections and editorial changes that are not identified.
Summary of Changes
for SG24-6898-01
for System Programmer’s Guide to: z/OS System Logger
as created or updated on March 29, 2012.
New information
Information has been added to Chapter 4, “IMS Common Queue Server and the System
Logger” on page 113, reflecting the results of a performance test using modern DASD
subsystems with Logger staging data sets in a remote copy environment.
Log data managed by the System Logger may reside in processor storage, in a Coupling
Facility structure, on DASD, or potentially on tape. However, regardless of where System
Logger is currently storing a given log record, from the point of view of the exploiter, all the log
records are kept in a single file that is a limited size. The location of the data, and the
migration of that data from one level to another, is transparent to the application and is
managed completely by System Logger, with the objective of providing optimal performance
while maintaining the integrity of the data. This is shown in Figure 1-1.
Logical view
0001 0002 0003 0004 0005 0006
...........
Physical view
00026
00027
0001 00028
0002 00029
0004
0003
0005
CART
0006
CF
0007
0008
DASD
Figure 1-1 Logical and physical views of System Logger-maintained log data
The task of tracking where a specific piece of log data is at any given time is handled by
System Logger. Additionally, System Logger will manage the utilization of its storage—as the
space in one medium starts filling up (a Coupling Facility structure, for example), Logger will
move old data to the next level in the hierarchy.
By providing these capabilities using a standard interface, many applications can obtain the
benefits that System Logger provides without having to develop and maintain these features
themselves. This results in faster development, more functionality, and better reliability.
Enhancements to System Logger, such as support for System Managed CF Structure
Duplexing, become available to all System Logger exploiters as soon as they are
The other type of exploiter typically uses the data more actively, and explicitly deletes it when
it is no longer required. An example of this would be the CICS DFHLOG. CICS stores
information in DFHLOG about running transactions, and deletes the records as the
transactions complete. We call these types of exploiters active exploiters,
As you can imagine, the performance requirements of these exploiters will differ. The
exploiters that use Logger primarily to archive data are not particularly concerned about
retrieval speeds, whereas an active user of the data will ideally want all the active data to be
kept in a high performance location, like a data space or a CF structure. One of the objectives
of this part of the book is to help you identify and provide the appropriate levels of service for
the various users of System Logger in your installation. Table 1-1 contains a list of the current
System Logger exploiters, and shows for each one what type of exploiter it is (funnel-type or
active).
Logrec funnel-type
OPERLOG funnel-type
1.2 Assumptions
The primary objective of this book is to provide you with the information you require to
effectively set up and manage System Logger and its interactions with its exploiters. We do
not assume that you already have System Logger up and running. However, in order to keep
the book to a manageable size, there are some assumptions that we have had to make:
You have at least a minimal SMS configuration
Your system is currently configured as a monoplex or a sysplex
Additionally, we have had to make some assumptions about your experience and skills. If you
do not have all the required skills, there are education offerings and other documentation that
can help you obtain those skills. The skills we assume that you possess are:
You know how to code and implement SMS routines and classes and how to configure
SMS
You are familiar with at least basic sysplex set up and operations. If you have a Parallel
Sysplex, we assume that you are familiar with setting up and maintaining a CFRM policy
You understand the installation and customization process for the subsystems that will be
exploiting System Logger, at least as it relates to the use of System Logger
Therefore, we recommend that the MVS Systems Programmers read all the chapters
concerning System Logger, including the chapters related to the subsystems (meaning
basically to read Chapter 1 through Chapter 8). Equally, we recommend that the Subsystem
Systems Programmers read the chapter relating to the subsystem they are managing, for
example, the CICS System Programmer should read the CICS chapter, and also the chapters
that are dealing with the general concepts of the logger environment, such as:
Chapter 2, “System Logger fundamentals” on page 7
Chapter 7, “Logger operations” on page 253
Chapter 8, “System Logger performance and tuning” on page 273
Chapter 9, “Disaster Recovery considerations” on page 305
Primary storage
Coupling
Facility
Secondary storage
Logr_Str_001 LSN1
LSN1 Current
LSN1
Data Set
LSN2
LSNn
LSN1
MVS 1
Full
Data Set
System Logger Dataspace
Staging
Data Sets
Figure 2-1 gives you a picture of a system logger configuration. Following are terms that are
used to describe system logger elements and processes:
System Logger
A component of the operating system that provides logging services. This component is
commonly referred to as the MVS System Logger, OS/390 System Logger, z/OS System
Logger, or simply as System Logger or just Logger. While there are enhancements that have
been introduced by specific releases of the operating system, these terms are generally used
interchangeably, irrespective of the release or version of the operating system being used.
Log streams
A sequence of data blocks, with each log stream identified by its own log stream
identifier—the log stream name (LSN). Log streams data can span multiple recording media:
interim (primary) storage, secondary (DASD based) storage, and tertiary (that is, tape
migrated) media.
Interim Storage
Interim storage is the primary storage used to hold log data that has not yet been
offloaded.The interim storage medium used depends on how the log stream has been
defined; it may be a Coupling Facility (CF) structure or a staging data set. Log data that is in
interim storage is duplexed to prevent against data loss conditions. The data is usually
Defining the LOGR CDS and the System Logger policy information is one of the first tasks
you must complete when preparing to migrate to a System Logger environment. See z/OS
MVS Setting Up a Sysplex, SA22-7625 for information about the LOGR CDS.
CF structure definitions
All the CF structures used by the System Logger must be defined in advance in the CFRM
policy. See z/OS MVS Setting Up a Sysplex, SA22-7625, for information about defining the
CFRM policy.
Offload
The process of moving valid (not yet deleted) data from interim storage to offload data sets.
An offload is generally triggered when the high offload threshold specified for the log stream
is reached; however there are other events that will cause an offload to occur. See 2.6,
“Offload processing” on page 58 for more information.
The naming convention for staging data sets differs based on the type of log stream.
Log record
A log record is a single record as produced by the exploiter. It could be something like a line
from syslog, for example. Or it could be a before-image created by a data manager before it
updates a record in a database.
Log block
Exploiters have a choice when sending data to System Logger. The log data can be sent
Sysplex Environment
Identify types of log streams you will use Plan structure placement - which log streams
How many log streams are needed will reside in each structure
Plan for log stream recovery Determine structure sizes
Plan for peer connector recovery
Naming Conventions
DASD Space
Estimate log stream staging and offload data Select duplexing method for log stream data
set sizes - data space or staging data sets
Allow for DASD expansion - specify
additional DSEXTENTs
Plan use of retention period for log streams
Set up SMS classes for offload and staging
data sets
If multisystem sysplex:
– Need shared catalog(s)
– Access to DASD volumes
– Serialization mechanism
– SHAREOPTIONS(3,3)
Security Authorization
Activate SMS
Important:
System Logger requires that the System Managed Storage (SMS) subsystem be active
on any system using System Logger. This is true even if you do not use SMS to
manage offload or staging data sets, since System Logger uses SMS services to
allocate them. If SMS is not active when you attempt to use System Logger, System
Logger will issue messages indicating allocation errors and the application will not be
able to use the logging function. If you do not use SMS to manage offload or staging
data sets, you can set up a minimal configuration to provide an environment for SMS.
However, we recommend using SMS to manage System Logger offload and staging
data sets, as it allows greater control over how System Logger uses your DASD
storage. For more information about SMS, see z/OS DFSMS: Implementing
System-Managed Storage, SC26-7407.
If you have multiple systems in the sysplex, it is normal for System Logger to require
access to offload data sets and staging data sets from multiple systems; for this reason,
you must specify SHAREOPTIONS(3,3) for those data sets. Incorrect
SHAREOPTIONS is a common problem among users of System Logger. If you have
the PTF for APAR OW56438 installed, look for messages IXG267I and IXG268I which
indicate incorrect SHAREOPTIONS; if you are running without the OW56438 PTF, look
for IEC161I and System Logger exploiter messages.
The System Logger component manages log streams based on policy information that you
place in the LOGR CDS. This can be a point of confusion, as you will often see references to
the System Logger policy, the LOGR CDS (also called the System Logger CDS), or the
System Logger inventory; these are not separate entities. While some other components of
z/OS have multiple policies (CFRM and SFM, for example), the LOGR CDS contains the only
System Logger policy. The System Logger policy contains CF structure definitions (if
applicable), log stream definitions, and data describing the current status of all log streams.
To understand and effectively manage System Logger, it is important to remember this
difference between the LOGR CDS and the other sysplex CDSs.
Regardless of whether you intend to use CF-Structure based or DASD-only log streams, it is
important that you understand how the definition of the LOGR CDS can impact your
applications. The parameters you specify can limit the number of log streams, LOGR
structures, and offload data sets, as well as the ability of your systems to exploit new System
Logger function. It is possible to bring in a new CDS with larger values (at the same LOGR
CDS format level or greater), but it is very disruptive to move to a CDS with smaller values -
therefore, it is important to give proper consideration to the values you will use.
Restriction: If you wish to switch to a CDS that is formatted with smaller values, not only
do you require a sysplex IPL, you will also lose all the information about all the log streams
defined in the old CDS, along with all the data in those log streams.
You may consider defining the alternate to have slightly higher values than the primary. If the
values defined for your primary CDS are too low, you will have an alternate ready to switch in.
However if you switch to this alternate for any reason, you will then need to define a new
primary, formatted with the same values as the old alternate, that you can switch back to.
This methodology should be used judiciously as it can result in the LOGR CDSs gradually
getting larger and larger over time, until you end up with CDSs that are much larger than
necessary.
The parameters that can be specified when creating a new LOGR CDS are:
LSR
The maximum number of log streams that can be defined in the System Logger policy that will
be stored in this CDS. The default is 1, the minimum is 1, and the maximum is 32767. Do not
take the default on this parameter or you will be limiting your sysplex to one log stream. You
should evaluate the System Logger applications you plan to use and determine the number of
log streams needed by each (keeping in mind some applications that run on separate
systems may require a single sysplex-wide log stream; others might use separate log
streams for each system).
LSTRR
The maximum number of structure names that can be defined in the System Logger policy.
The default is 1, the minimum is 1, and the maximum is 32767. If you plan on using only
DASD-only log streams, it is not necessary to specify this parameter. If you are planning on
using CF-Structure based log streams, you should determine how many structures are
necessary. We will discuss the guidelines for this in 2.5.1, “CF-Structure based log streams”
on page 23.
DSEXTENT
The number of additional offload data set directory extents available. The default is 0, the
minimum is 0, and the maximum is 99998. Each DSEXTENT (directory extent) goes into a
common pool available to any log stream in the sysplex, and is allocated as needed. If you
have log streams that will exceed 168 offload data sets (for example, if you retain log data for
long periods of time) you should specify this parameter. Log streams start with a base of up to
168 directory entries (that is, 168 offload data sets that can be used, 1 per directory entry);
each additional DSEXTENT specified will allow the log stream owning the extent to use an
additional 168 directory entries.
It is important to keep in mind that a DSEXTENT can only be owned by one log stream. If you
have 20 log streams with 169 offload data sets each, you would requires at least 20
DSEXTENTs. When all the offload data sets in a DSEXTENT have been physically deleted, it
will be returned to the available pool.
Note: Staging data sets do not count towards the directory entry limit.
If you decide to specify DSEXTENTs, there are some considerations you should keep in mind
when determining how many should be requested. You should specify a value that is at least
15% more than you expect to be in use at any given time. You can monitor usage by:
Periodically running a LOGR CDS report using the IXCMIAPU utility. This will show the
number of DSEXTENTS in use. Try to keep the number of directory records in use below
85% of the total formatted.
Watch for system messages IXG261E and IXG262A, which indicate usage of the offload
data set directory is over 85% and 95% respectively.
If you have reached the maximum number of offload data sets and there are no DSEXTENTs
in the available pool, System Logger will not be able to create any new offload data sets for
that log stream and any offload attempt will fail. Watch for system message IXG301I with a
return code of X’08’ and reason code of X’085C’ indicating this state. When additional
DSEXTENTs have been made available for the sysplex, System Logger will retry the offload
and issue an ENF 48 indicating that the log stream is available. You may be able to make
additional directory space available by deleting log data from the log stream. For more
information about deleting log data, see 2.7, “Deleting log data” on page 64.
You may be able to set up a retention period and automatic deletion policy to help ensure
your log streams will not run out of space; however, be sure to verify that the use of these
keywords will not have a negative impact on your System Logger applications. For more
information about retention period and autodelete, see “Defining CF-Structure based log
streams” on page 33.
SMDUPLEX
SMDUPLEX specifies whether the LOGR CDS should be formatted at the HBB6603 or
HBB7705 level. The default is 0 (NO), and the maximum is 1 (YES). Specifying 1 indicates
that System-Managed CF Structure Duplexing is a supported, in addition to other
enhancements introduced in z/OS 1.3 and 1.4. We discuss CDS format levels further in
“LOGR CDS format levels” on page 14.
Ensure you meet all the prerequisite requirements before attempting to use System-Managed
Duplexing. For more information about this, see the section entitled “Understanding
Note: LOGR CDS format levels do not actually correspond to any particular release in a
one-to-one relationship, despite the naming convention (using release FMIDs such as
HBB6603 and HBB7705). Instead, the format level only corresponds to the release it was
introduced in, as this is the earliest release of OS/390 or z/OS it can be used with.
Attention: Note that you should never move to a new format level until all systems in the
sysplex are stable at the required level of z/OS to support the new format, as System
Logger will not start on those systems not meeting the minimum requirement. Attempting
to fall back to a lower format level CDS will corrupt or destroy log data.
There are some steps you should take before moving to a new CDS:
Make sure you have already defined your new primary, alternate, and spare CDSs.
Update the COUPLExx member in SYS1.PARMLIB to point to the new primary and
alternate CDS.
After completing these steps, you have ensured that a new primary and alternate CDSs are
ready, and that the COUPLExx member points to them. This is important; if it is necessary to
IPL and the COUPLExx member still points to the old CDSs, you will be given the option to
switch back to those CDSs, which could result in corruption or loss of System Logger policy
data.
To switch to the new LOGR CDS while keeping your policy definitions intact:
Make the new primary CDS the current alternate by issuing the following command:
SETXCF COUPLE,TYPE=LOGR,ACOUPLE=new_primary_cds
Next, promote that data set to be the primary LOGR CDS:
SETXCF COUPLE,PSWITCH,TYPE=LOGR
Finally, move in the new alternate:
SETXCF COUPLE,TYPE=LOGR,ACOUPLE=(new_alternate_cds,volume)
It is also possible to bring in a new primary and alternate LOGR CDS without retaining your
System Logger policy definitions (“clean” copy):
Format new primary and alternate LOGR CDSs.
Update the COUPLExx member in SYS1.PARMLIB to identify the new primary and
alternate CDS to the sysplex.
Shut down every system in the sysplex and do a sysplex IPL. After the IPL, you will
receive a message asking if the system should use the CDSs listed in the COUPLExx
member or the ones used the last time the system was up. You should reply C to indicate
that the CDSs listed in the COUPLExx member should be used.
If there are any “failed persistent” structure connections, it may be necessary to force them
using the SETXCF FORCE,CON,CONNM=ALL,STRNM=strname command.
Important: If you switch to new CDSs using this method, all the data in the old CDSs will
be lost. Any data in the log streams (including the offload data sets) will be inaccessible.
This means that you must define all the log streams again in the new CDSs. It also means
that you must manually delete all the offload and staging data sets associated with the log
streams that were defined in the old CDSs—if you do not do this, System Logger will not
have any knowledge of those data sets and will get duplicate data set errors when it tries to
allocate the equivalent data sets for the log streams in the new CDS.
For additional guidance on handling LOGR CDSs, see topic 9.4.8 in z/OS MVS Setting Up a
Sysplex, SA22-7625, and informational APARs II12375 and II12551.
Since there is only one System Logger policy per sysplex, you cannot use the DEFINE
POLICY NAME parameter in the System Logger policy, nor can you issue the SETXCF
START,POLICY command to activate a System Logger policy. The System Logger policy is
modified (or updated) using the IXCMIAPU utility or the IXGINVNT macro. As such, it is only
necessary to specify the log streams and CF structures that are being newly defined, updated
or deleted, unlike other policies (such as CFRM) for which you must enter the whole policy.
Another difference between the System Logger policy and other policies is that action is taken
Note: One of the more annoying quirks of System Logger’s interpretation of input to the
IXCMIAPU utility is that if it finds a statement in error, it will ignore all the statements
coming after that statement; therefore you should always verify that all the steps in a
particular request completed - you can do this by simply checking the job output.
For information about modifying the System Logger policy, see 2.5, “Log streams” on
page 22.
The users of the IXCMIAPU utility require access to the resources used by the utility. Define
the appropriate accesses before users attempt to add, update, delete, or extract a report from
the System Logger policy. The LOGR CDS must be activated and available before you add
log streams and structure definitions to it. The following access authorities are required to set
up the System Logger policy:
To use the DEFINE, UPDATE, or DELETE LOGSTREAM statements, ALTER access to
the RESOURCE(log_stream_name) CLASS(LOGSTRM) profile is required.
To use the DEFINE or DELETE STRUCTURE statements, ALTER access to the
RESOURCE(IXLSTR.structurename) CLASS(FACILITY) profile is required.
To specify a structure name on a LOGSTREAM definition (for example, DEFINE
LOGSTREAM(log_stream_name) STRUCTNAME(structname)), UPDATE access to the
RESOURCE(IXLSTR.structurename) CLASS(FACILITY) profile is required.
We will discuss log stream and CF structure definition parameters in 2.5, “Log streams” on
page 22.
The calling program must also request authorization to the log stream:
If AUTH=READ is specified, that application will only be able to issue IXGCONN,
IXGBRWSE, and IXGQUERY requests. For AUTH=READ, the caller must have READ
access to RESOURCE(log_stream_name) in CLASS(LOGSTRM).
If AUTH=WRITE is specified, that program can request any System Logger service. For
AUTH=WRITE, the caller must have UPDATE access to RESOURCE(log_stream_name)
in CLASS(LOGSTRM).
An exploiter can connect to the log stream in different ways, for example:
One Connection per Address Space: Once a program has connected to a log stream, any
task running in the same address space shares the connect status and can use the same
stream token to request other System Logger services. Any task in the address space can
disconnect the entire address space from the log stream by issuing the IXGCONN
REQUEST=DISCONNECT call.
One Connection Per Program: One or more tasks in a single address space can issue
IXGCONN REQUEST=CONNECT individually to connect to the same log stream and
receive separate stream tokens. Each program must disconnect from the log stream
individually.
Multiple Systems Connecting to a Log Stream: Multiple address spaces on one or more
z/OS systems can connect to a single CF log stream, but each one must issue IXGCONN
individually to connect to and then disconnect from the log stream. Each one receives a
unique stream token; multiple address spaces cannot share a stream token.
The IXGCONN service is also used to disconnect from the log stream by issuing
REQUEST=DISCONNECT and specifying the STREAMTOKEN received on connect. This
will invalidate the stream token; any future services specifying that token would fail.
When connecting to a log stream, there are additional considerations to be taken into account
for each type.
Note: For both CF-Structure based (if using staging data sets) and DASD-only log
streams, the first connect to the log stream from a given system will result in staging data
sets being created.
For more information about using the IXGCONN service, see topic 27.4.5 in z/OS MVS
Assembler Services Guide, SA22-7605.
Note: Log data stored in interim storage is duplexed. For more information, see “Duplexing
log data for CF-Structure based log streams” on page 42 and “Duplexing log data for
DASD-only log streams” on page 54.
Log blocks can be written either synchronously or asynchronously, depending on the MODE
specified on the System Logger IXGWRITE request. Before data can be written out to the log
stream, it must be placed in a buffer to form the log block. System Logger has no
requirements for the format of the data in log blocks (except that the log blocks cannot be
larger than 65532 bytes); it is entirely up to the exploiter as to how the data within the log
block is created and used.
For each log block written to the log stream, System Logger will return a unique identifier (the
BLOCKID) which can be used on subsequent IXGDELET and IXGBRWSE requests to
search for, delete, read, or set the browse cursor position to that log block. For CF-Structure
log streams, the BLOCKID is returned by the CF, ensuring that the BLOCKID is unique for
that log stream across the whole sysplex. For DASD-only log streams, because each log
stream is only accessed by one system, the BLOCKID is generated by System Logger itself.
The BLOCKID is used when an exploiter wants to retrieve log blocks from System Logger.
However, if the data within the log block is going to be used for a time-sensitive task such as
recovering a database, the exploiter is responsible for time stamping its log records, and
sorting its log records into the correct time order. It cannot assume ascending BLOCKIDs
necessarily indicate correspondingly ascending times when the log records were created.
An imbedded application time stamp will not effect the order in which log blocks are written;
if an application needs to ensure that log blocks are received into the log stream in the
order written, the application can serialize on the log stream.
Let us discuss the logic of how log blocks are written to System Logger; that is, where do log
blocks go? Figure 2-2 contains a graphical depiction of System Logger writes. For a
CF-Structure based log stream, the log blocks are first written to the CF structure (interim
storage) and then duplexed to either staging data sets, a System Logger-owned data space,
or another CF structure (depending on several different factors, see “Duplexing log data for
CF-Structure based log streams” on page 42 for more information). For a DASD-only log
stream, log blocks are written to a System Logger-owned data space and then duplexed to
staging data sets (see “Duplexing log data for DASD-only log streams” on page 54).
Operations
Subsystem
Operations
System
System
Logger
Logger
Log
Log
1
logblocks
Staging Staging
Data Sets Data Sets
Subsystem
logstream
Operlog
logstream
Coupling Facility
The IXGBRWSE service requires that you have an existing connection. To browse a log
stream, exploiters use the following requests:
Start a browse session and select the initial cursor position - REQUEST=START. This will
return a 4-byte browse token; subsequent requests will use this token to identify this
browse session. It is possible to have multiple browse sessions running concurrently. Each
You will note that IXGDELET only marks the log blocks for deletion (that is, they are logically
rather than physically deleted). The actual deletion takes place during offload processing, or
subsequently when the offload data set is deleted. IXGDELET is the only way that log blocks
get logically deleted—if an IXGDELET is not issued for a log block, the log block will not be
deleted until it has been offloaded and all the log blocks in the offload data set have exceeded
their retention period (assuming AUTODELETE(YES) is specified).
Return and reason codes for System Logger services can be found in z/OS MVS Authorized
Assembler Services Reference ENF-IXG, SA22-7610.
IXGINVNT REQUEST=UPDATE,
TYPE=LOGSTREAM
IXGINVNT REQUEST=DELETE,
TYPE=LOGSTREAM
RESOURCE(IXLSTR.like_structure_name)
CLASS(FACILITY)
IXGINVNT REQUEST=DELETE,
TYPE=STRUCTURE
IXGINVNT REQUEST=UPDATE,
TYPE=LOGSTREAM
IXGINVNT REQUEST=DELETE,
TYPE=LOGSTREAM
As discussed previously, the IXCMIAPU utility and optionally IXGINVNT services, are used to
define, update, and delete both CF-Structure based and DASD-only log streams. Before
choosing which type of log stream (CF-Structure or DASD-only) is best suited to your
application, you should consider a couple of attributes of the log data that affect the decision:
The location and concurrent activity of writers and readers to a log stream’s log data.
The volume (data flow) of log stream data.
It is also important to understand how the parameters specified in the log stream definition will
impact storage usage and performance. Some parameters have different meanings or exist
only for one type of log stream as indicated in Table 2-3 (note that recommendations still
might be different for each type of log stream).
NAME same
RMNAME same
DESCRIPTION same
DASDONLY different
STG_DATACLAS same
STG_MGMTCLAS same
STG_STORCLAS same
STG_SIZE different
LS_DATACLAS same
LS_MGMTCLAS same
LS_STORCLAS same
LS_SIZE same
AUTODELETE same
RETPD same
HLQ same
EHLQ same
HIGHOFFLOAD different
LOWOFFLOAD different
LIKE same
MODEL same
DIAG same
OFFLOADRECALL same
When an exploiter writes a log block to a CF-Structure based log stream, System Logger first
writes the data to the CF structure; the log block is then duplexed to another storage medium
(chosen based on several factors to be discussed later). When the CF structure space
allocated for the log stream reaches the installation-defined high threshold, System Logger
moves log blocks from the CF structure to offload data sets, so that the CF space for the log
stream is available to hold new log blocks. From an exploiter’s point of view, the actual
location of the log data in the log stream is transparent; however there are configurations that
can effect system performance (such as the use of staging data sets).
There are a number of things you must take into account before and after you have decided
to use CF-Structure based log streams. If you decide you should use them, then you should
In addition to these, you should consider any advice given by the exploiter; some exploiters
may not recommend DASD-only log streams (APPC/MVS, for example).
Requirement: To use a CF-Structure based log stream, you must have access to a CF,
even for single system scope applications.
The important CF structure definition parameters for this discussion are MAXBUFSIZE and
AVGBUFSIZE (see “Defining CF-Structure based log streams” on page 33 for details and a
complete definition for each). MAXBUFSIZE is used to determine the size of the elements
System Logger will use, either 256 bytes (if MAXBUFSIZE is less than or equal to 65276) or
512 bytes (if MAXBUFSIZE is greater than 65276). AVGBUFSIZE (or, after System Logger
recalculates this value, the effective AVGBUFSIZE) is then used to determine the
entry-to-element ratio so that the ratio is defined as 1 entry per number of elements required
to hold an average log block written to the structure. For example, if the element size is 256
bytes (because you specified a MAXBUFSIZE of 65276 or less), and you specify an
AVGBUFSIZE of 2560, the initial entry-to-element ratio would be 10:1.
... ...
entry-to-element ratio: 1 to 10
Figure 2-4 Entries and elements divided among connected log streams
You should note that this is not an exact science as the alter can be effected by temporary
spikes in the number of writes or block size; however, over time the value used should closely
reflect the average in-use ratio. The exception case is where log streams with significantly
different characteristics are defined in the same structure. In this case, the best option is to
separate the log streams into different structures.
Element Element
Element Element
Element Element
Element Element
Element Element
Element Element
Element Element
Element Element
actual current ratio 1:10 actual current ratio 1:10 actual current ratio 1:2
Entry Pool
At time 0 as shown in Figure 2-6, the three log streams, all defined to the same CF structure,
have been allocated an equal number of elements (1/n of the available pool) and they all have
access to the pool of 3000 entries.
Figure 2-8 shows that after 4 seconds, log stream C is using 66% of all entries, far more than
its fair share. It will soon run out of entries in the structure, and yet it still has 6000 empty
elements. By contrast, log streams A and B are using their fair share and are good
candidates to reside in the same structure. In fact, in this example, an offload would be
initiated for all the log streams in the structure once 90% of entries have been used. This type
of offload moves data from all the log streams in the structure and is more disruptive than a
normal offload that is kicked off because the HIGHOFFLOAD threshold for a single log
stream has been reached. (For more information about offload processing, refer to 2.6,
“Offload processing” on page 58.)
Every 30 minutes System Logger would attempt to alter the entry to element ratio in this
example, decreasing the pool of available elements and increasing the number of entries for
a ratio of around 1 entry to 7 elements (assuming the log stream characteristics in this
example stay relatively static). This ratio change would not fix any problems though;
assuming we start at time=0 again, it is easy to see that at a future time we will encounter
element-full conditions for log streams A and B as they are still using 10 elements per entry
and the existing entry-full condition for log stream C will continue to occur. The only way to
efficiently resolve this situation would be to move log stream C to a different structure, with a
smaller AVGBUFSIZE specified.
It should also be noted that use of any System-Managed Duplexing-related keyword implies
that the CFRM CDS has been formatted using the SMDUPLEX(1) keyword.
The CFRM policy keywords that are of interest from a System Logger perspective are:
NAME
Must be the same here as specified on the DEFINE STRUCTURE keyword in the System
Logger policy.
SIZE, INITSIZE
SIZE is the largest size the structure can be increased to without updating the CFRM policy. It
is specified in 1 KB units.
INITSIZE is the initial amount of storage to be allocated for the structure in the CF. The
number is also specified in units of 1 KB. INITSIZE must be less than or equal to SIZE. The
default for INITSIZE is the SIZE value.
You should always refer to the System Logger application recommendations for sizing your
CF structures. See the application chapters in this book for recommendations for some of the
more common System Logger applications.
IBM provides a Web-based tool to help you determine initial values to use for SIZE and
INITSIZE; it is called the CF Sizer and can be found at:
http://www.ibm.com/servers/eserver/zseries/cfsizer
Before using the CF Sizer tool, you will need to know some information about the type of log
streams that will be connected to the CF structure and the log stream definitions you will use.
We will discuss some of the parameters requested by CF Sizer in this chapter. For further
information, see topic 9.4.3. in z/OS MVS Setting Up a Sysplex, SA22-7625.
ALLOWAUTOALT
ALLOWAUTOALT(YES) allows the CF structure size and its entry-to-element ratio to be
altered automatically by XES when the CF or the structure is constrained for space.
This parameter should always be set to NO (the default) for System Logger CF structures.
As described previously, System Logger has functions for altering the entry-to-element ratio
of a structure. Having two independent functions (XES and System Logger) both trying to
adjust the ratio can lead to inefficient and unexpected results.
System Logger also manages the usable space within the CF structure and provides for data
offloading to offload data sets. If XES were to keep increasing the structure size, it is possible
that the log stream would never get to its high offload threshold until the structure had
reached its maximum size as defined on the SIZE parameter in the CFRM policy. System
Logger is designed to manage the space within the structure size you give it—letting XES
adjust the structure size negates this function.
Finally, because System Logger is constantly offloading data from the structure to DASD, is
likely that, on average, System Logger CF structures will appear to be only half full. This
makes them prime candidates for XES to steal space from should the CF become
storage-constrained. Specifying ALLOWAUTOALT(NO) protects the structure from this
processing.
DUPLEX
The DUPLEX parameter is used to specify if and when the CF structure data will be duplexed.
Use of this parameter implies that the sysplex is enabled for System-Managed Duplexing.
There are three options for DUPLEX:
ENABLE: When DUPLEX(ENABLED) is specified for a structure in the CFRM active
policy, the system will automatically attempt to initiate duplexing (either user-managed or
system-managed) for that structure as soon as it is allocated.
ALLOWED: When DUPLEX(ALLOWED) is specified for a structure, the structure is
eligible for user-managed or System-Managed Duplexing, however the duplexing must be
initiated by a connector or by the operator; that is, the structure will not automatically be
duplexed by XES.
DISABLED: Specifies that neither user-managed nor System-Managed Duplexing can be
used for the specified structure.
STRUCTNAME
Specifies the name of the CF structure you are defining. STRUCTNAME must match the
structure name as defined in the CFRM policy, and the structure name as specified on the
corresponding log stream definitions.
For CF-Structure based log streams, this is the structure that will be used as interim storage
before data is offloaded to offload data sets.
LOGSNUM
Specifies the maximum number of log streams that can be allocated in the CF structure being
defined. logsnum must be a value between 0 and 512.
As we discussed previously in “How many CF structures you need” on page 25, the value
specified for logsnum should ideally be no higher than 10.
MAXBUFSIZE
Specifies the size, in bytes, of the largest log block that can be written to log streams
allocated in this structure. The value for MAXBUFSIZE must be between 1 and 65532 bytes.
The default is 65532 bytes.
The MAXBUFSIZE is used to determine what element size will be used; if the value specified
is less than or equal to 65276, System Logger will use 256 byte elements. If it is over 65276,
512 byte elements will be used. See “The entry-to-element ratio” on page 26 for more
information.
AVGBUFSIZE
Specifies the average size, in bytes, of log blocks written to all the log streams using this CF
structure. AVGBUFSIZE must be between 1 and the value for MAXBUFSIZE. The default
value is 1/2 of the MAXBUFSIZE value.
System Logger uses the average buffer size to control the initial entry-to-element ratio for the
structure. See “The entry-to-element ratio” on page 26 for more information.
Tip: Starting with z/OS V1R3, it is no longer necessary to delete and redefine the log
streams defined to a CF structure if you wish to move them to another structure. See 2.5.3,
“Updating log stream definitions” on page 55, for more information.
NAME
Specifies the name of the log stream that you want to define. The name can be made up of
one or more segments separated by periods, up to the maximum length of 26 characters.
NAME is a required parameter with no default. Besides being the name of the log stream, it is
used as part of the offload data set and staging data set names:
offload data set example: <hlq>.logstreamname.<seq#>
staging data set example: <hlq>.logstreamname.<system>
Note that if the log stream name combined with the HLQ are longer than 33 characters, the
data component of the offload and maybe the staging data sets may contain a
system-generated low level qualifier, for example:
IXGLOGR.A2345678.B2345678.C2345678.A0000000 (Cluster)
IXGLOGR.A2345678.B2345678.C2345678.IE8I36RM (Data)
RMNAME
Specifies the name of the resource manager program associated with the log stream.
RNAME must be 8 alphanumeric or national ($,#,or @) characters, padded on the right with
blanks if necessary. You must define RMNAME in the System Logger policy before the
resource manager can connect to the log stream. See the System Logger chapter in z/OS
MVS Assembler Services Guide, SA22-7605, for information about writing a resource
manager program to process a log stream.
DESCRIPTION
Specifies user-defined data describing the log stream. DESCRIPTION must be 16
alphanumeric or national ($, #,@) characters, underscore (_) or period (.), padded on the
right with blanks if necessary.
DASDONLY
Specifies whether the log stream being defined is a CF or a DASD-only log stream. This is an
optional parameter, with the default being DASDONLY(NO).
Since we are reviewing CF-Structure based log streams in this section, DASDONLY(NO)
would be used to indicate that we do not want a DASD-only log stream.
The CF structure must have already been defined to both the CFRM policy and System
Logger policy as discussed in “Setting up for and defining CF structures” on page 24.
STG_DUPLEX
Specifies whether this log stream is a candidate for duplexing to DASD staging data sets.
If you specify STG_DUPLEX(NO), which is the default, log data for a CF-Structure based log
stream will be duplexed in System Logger-owned data spaces, making the data vulnerable to
loss if your configuration contains a single point of failure.
If you specify STG_DUPLEX(YES), log data for a CF log stream will be duplexed in staging
data sets when the conditions defined by the DUPLEXMODE parameter are met. This
method ensures that log data is protected from a system or CF failure.
For more information about duplexing of log data by System Logger, refer to 2.8.1, “Failure
independence” on page 67.
Note: Even if you do not plan on using staging data sets, we recommend that you plan for
them as there are some failure scenarios under which they would still be used to maintain
System Logger’s failure independence. If you have installed the PTF for APAR OA03001
you can specify STG_DATACLAS, STG_MGMTCLAS, STG_STORCLAS and STG_SIZE
parameters even with STG_DUPLEX(NO). Without the PTFs installed, you cannot specify
any of those parameters with STG_DUPLEX(NO)—in this case, an ACS routine is
necessary to associate SMS classes with the staging data sets.
DUPLEXMODE
Specifies the conditions under which the log data for a CF log stream should be duplexed in
DASD staging data sets.
If you specify DUPLEXMODE(COND), which is the default, the log data will be duplexed in
staging data sets only if a system's connection to the CF-Structure based log stream contains
a single point of failure and is therefore vulnerable to permanent log data loss.
If you specify DUPLEXMODE(UNCOND), the log data for the CF-Structure based log stream
will be duplexed in staging data sets, regardless of whether the connection is failure
independent.
LOGGERDUPLEX
Specifies whether Logger will continue to provide its own log data duplexing if the structure
containing the log stream is being duplexed using System-Managed Duplexing and the two
structure instances are failure-isolated from each other.
LOGGERDUPLEX(UNCOND) indicates that System Logger should use its own duplexing
of the log data regardless of whether System-Managed Duplexing is being used for the
associated structure.
LOGGERDUPLEX(COND) indicates that System Logger will only use its own duplexing if
the two structure instances are in the same failure domain. If the two instances are
failure-isolated from each other, System Logger will not duplex the log data to either a
staging data set or a data space.
STG_DATACLAS
Specifies the name of the SMS data class that will be used when allocating the DASD staging
data sets for this log stream.
Whether it is preferable to have the DATACLAS association in the LOGR policy, or in the
SMS ACS routines depends on your installation software management rules.
Either way, you need to provide a DATACLAS where SHAREOPTIONS (3,3) has been
specified for the allocation of the staging data sets. SHAREOPTIONS (3,3) is required to
allow you to fully share the data sets across multiple systems within the GRS complex. If your
system is running in a monoplex configuration, SHAREOPTION (1,3), which is the default on
the dynamic allocation call, is allowed.
See z/OS DFSMS: Using Data Sets, SC26-7410, for more information about SMS.
Important: Do not change the Control Interval Size attributes for staging data sets to be
anything other than 4096. System Logger requires the Control Interval Size for staging
data sets be set to 4096. If staging data sets are defined with characteristics that result in a
Control Interval Size other than 4096, System Logger will not use them. Operations
involving staging data sets defined with a Control Interval Size other than 4096 will fail to
complete successfully.
STG_MGMTCLAS
Specifies the name of the SMS management class used when allocating the staging data
sets for this log stream.
For information about defining SMS management classes, see Chapter 5 in z/OS DFSMSdfp
Storage Administration Reference, SC26-7402.
STG_STORCLAS
Specifies the name of the SMS storage class used when allocating the DASD staging data
sets for this log stream.
STG_SIZE
Specifies the size, in 4 KB blocks, of the DASD staging data set for the log stream being
defined. (Note that the size of the CF structures is specified in 1 KB blocks.)
When specified, this value will be used to specify a space allocation quantity on the log
stream staging data set allocation request. It will override any size characteristics specified in
the specified data class (via STG_DATACLAS) or a data class that gets assigned via a
DFSMS ACS routine.
If you omit STG_SIZE for a CF-Structure based log stream, System Logger does one of the
following, in the order listed, to allocate space for staging data sets:
Uses the STG_SIZE of the log stream specified on the LIKE parameter, if specified.
Uses the maximum CF structure size for the structure to which the log stream is defined.
This value is obtained from the value defined on the SIZE parameter for the structure in
the CFRM policy.
Note that if both the STG_DATACLAS and STG_SIZE are specified, the value for STG_SIZE
overrides the space allocation attributes for the data class specified on the STG_DATACLAS
value.
Of all the staging data set-related parameters, STG_SIZE is the most important. It is
important to tune the size of the staging data sets when you first set up the log stream, and
then re-check them every time you change the size of the associated CF structure or the
number of log streams in that structure.
Note: Poor sizing of the DASD staging data sets can result in poor System Logger
performance and inefficient use of resources. For more information about using the
STG_SIZE parameter, see 8.2, “Estimating log stream sizes” on page 274.
LS_DATACLAS
Specifies the name of the SMS data class that will be used when allocating the DASD offload
data sets for this log stream.
Whether it is preferable to have the DATACLAS association in the LOGR policy, or in the
SMS ACS routines depends on your installation software management rules.
Either way, you need to provide a DATACLAS where SHAREOPTIONS (3,3) has been
specified for the allocation of the offload data sets. SHAREOPTIONS (3,3) is required to allow
you to fully share the data sets across multiple systems within the GRS complex. If your
system is running in a monoplex configuration, SHAREOPTION (1,3), which is the default on
the dynamic allocation call, is allowed.
See z/OS DFSMS: Using Data Sets, SC26-7410 for more information about SMS.
LS_MGMTCLAS
Specifies the name of the SMS management class to be used when allocating the offload
data sets.
For information about defining SMS management classes, see Chapter 5 in z/OS DFSMSdfp
Storage Administration Reference, SC26-7402.
LS_STORCLAS
Specifies the name of the SMS storage class to be used when allocating the offload data
sets.
For information about defining SMS storage classes, see Chapter 6 in z/OS DFSMSdfp
Storage Administration Reference, SC26-7402.
LS_SIZE
Specifies the size, in 4 KB blocks, of the log stream offload DASD data sets for the log stream
being defined.
When specified, this value will be used to specify a space allocation quantity on the log
stream offload data set allocation request. It will override any size characteristics specified in
an explicitly specified data class (via LS_DATACLAS) or a data class that gets assigned via a
DFSMS ACS routine.
The smallest valid LS_SIZE value is 16 (64 KB), however in practice you would be unlikely to
want such a small offload data set.
The largest size that a log stream offload data set can be defined for System Logger use is
slightly less than 2 GB. If the data set size is too large, System Logger will automatically
attempt to reallocate it smaller than 2 GB. The largest valid LS_SIZE value is 524287.
If you omit LS_SIZE, System Logger does one of the following, in the order listed, to allocate
space for offload data sets:
Uses the LS_SIZE of the log stream specified on the LIKE parameter, if specified.
Uses the size defined in the SMS data class for the log stream offload data sets.
Uses dynamic allocation rules as specified in the ALLOCxx member of SYS1.PARMLIB for
allocating data sets, if SMS is not available. Unless you specify otherwise in ALLOCxx, the
default allocation amount is two tracks—far too small for most System Logger
applications.
Note: Poor sizing of the offload data sets can result in System Logger performance issues,
particularly during offload processing. For more information about using the LS_SIZE
parameter, see 8.2.1, “Sizing offload data sets” on page 274.
AUTODELETE
Specifies when System Logger can physically delete log data.
If you specify AUTODELETE(NO), which is the default, System Logger physically deletes an
offload data set only when both of the following are true:
All the log data in the data set has been marked for deletion by a System Logger
application using the IXGDELET service or by an archiving procedure like CICS/VR for
CICS log streams or IFBEREPS, which is shipped in SYS1.SAMPLIB, for LOGREC log
streams.
The retention period for all the data in the offload data set has expired.
If you specify AUTODELETE(YES), System Logger automatically deletes log data whenever
data is either marked for deletion (using the IXGDELET service) or the retention period for all
the log data in the offload data set has expired.
Be careful when using AUTODELETE(YES) if the System Logger application manages log
data deletion using the IXGDELET service. With AUTODELETE(YES), System Logger may
delete data that the application expects to be accessible. If you specify AUTODELETE=YES
with RETPD=0, data is eligible for deletion as soon as it is written to the log stream.
For more information about AUTODELETE and deleting log data, see 2.7, “Deleting log data”
on page 64.
Important: Consult your System Logger application recommendations before using either
the AUTODELETE or RETPD parameters. Setting these parameters inappropriately can
result in significant performance and usability issues.
RETPD
Specifies the retention period, in days, for log data in the log stream. The retention period
begins when data is written to the log stream, not the offload data set. Once the retention
period for all the log blocks in an offload data set has expired, the data set is eligible for
physical deletion. The point at which System Logger physically deletes the data set depends
on what you have specified on the AUTODELETE parameter and RETPD parameters:
RETPD=0 - System Logger physically deletes expired offload data sets whenever offload
processing is invoked, even if no log data is actually moved to any offload data sets.
RETPD>0 - System Logger physically deletes expired offload data sets only when an
offload data set fills and a new one gets allocated for the log stream.
System Logger will not process a retention period or delete data for log streams that are not
connected and being written to by an application.
For example, a RETPD=1 would specify that any data written today would be eligible for
deletion tomorrow. RETPD=10 would indicate data written today is eligible for deletion in 10
days.
For more information about RETPD and deleting log data, see 2.7, “Deleting log data” on
page 64.
HLQ
Specifies the high level qualifier for both the offload and staging data sets.
If you do not specify a high level qualifier, or if you specify HLQ(NO_HLQ), the log stream will
have a high level qualifier of IXGLOGR (the default value). If you specified the LIKE
parameter, the log stream will have the high level qualifier of the log stream specified on the
LIKE parameter. The value specified for HLQ overrides the high level qualifier for the log
stream specified on the LIKE parameter.
HLQ and EHLQ are mutually exclusive and cannot be specified for the same log stream
definition.
EHLQ
Specifies the extended high level qualifier for both the offload and staging data sets. The
EHLQ parameter was introduced by z/OS 1.4, and log streams specifying this parameter can
only be connected to by systems running this level of z/OS or later.
EHLQ and HLQ are mutually exclusive and cannot be specified for the same log stream
definition.
When the EHLQ parameter is not explicitly specified on the request, the resulting high level
qualifier to be used for the log stream data sets will be based on whether the HLQ or LIKE
parameters are specified. If the HLQ parameter is specified, then that value will be used for
the offload data sets. When no high level qualifier is explicitly specified on the DEFINE
LOGSTREAM request, but the LIKE parameter is specified, then the high level qualifier value
being used in the referenced log stream will be used for the newly defined log stream. If the
EHLQ, HLQ, and LIKE parameters are not specified, then the default value “IXGLOGR” will
be used.
When EHLQ=NO_EHLQ is specified or defaulted to, the resulting high level qualifier will be
determined by the HLQ value from the LIKE log stream or using a default value.
CDS requirement: The active primary TYPE=LOGR CDS must be formatted at a HBB705
or higher level in order to specify the EHLQ keyword. Otherwise, the request will fail. See
“LOGR CDS format levels” on page 14 for more information.
MY.OWN.PREFIX.SYSPLEX.OPERLOG.suffix
The above data set name is not valid because it is too long.
HIGHOFFLOAD
Specifies what percentage of the elements in the CF portion of the log stream can be used
before offload processing is invoked. When the threshold is reached, System Logger begins
offloading data from the CF structure to the offload data sets.
The default HIGHOFFLOAD value is 80%. If you omit the HIGHOFFLOAD parameter or
specify HIGHOFFLOAD(0) the log stream will be defined with the default value.
The HIGHOFFLOAD value specified must be greater than the LOWOFFLOAD value.
For more information about offload thresholds and the offload process, see 2.6, “Offload
processing” on page 58.
Note: For the recommended HIGHOFFLOAD values for various System Logger
applications, refer to the chapter in this book that describes the subsystem you are
interested in or consult the application’s manuals.
LOWOFFLOAD
Specifies the point at which System Logger stops offloading CF log data to offload data sets.
When offload processing has offloaded enough data that only this percentage of the elements
in the CF portion of the log stream are being used, offload processing will end.
If you specify LOWOFFLOAD(0), which is the default, or omit the LOWOFFLOAD parameter,
System Logger uses the 0% usage mark as the low offload threshold.
The value specified for LOWOFFLOAD must be less than the HIGHOFFLOAD value.
Note: For the recommended LOWOFFLOAD values for various System Logger
applications, refer to the chapter in this book that describes the subsystem you are
interested in or consult the application’s manuals.
MODEL
Specifies whether the log stream being defined is a model, exclusively for use with the LIKE
parameter to set up general characteristics for other log stream definitions.
If you specify MODEL(NO), which is the default, the log stream being defined is not a model
log stream. Systems can connect to and use this log stream. The log stream can also be
specified on the LIKE parameter, but is not exclusively for use as a model.
If you specify MODEL(YES), the log stream being defined is only a model log stream. It can
be specified only as a model for other log stream definitions on the LIKE parameter.
Programs cannot connect to a log stream name that is defined as a model (MODEL(YES))
using an IXGCONN request.
The attributes of a model log stream are syntax checked at the time of the request, but not
verified until another log stream references the model log stream on the LIKE parameter.
See Example 2-2 for an example of how a model log stream is used.
LIKE
Specifies the name of another log stream defined in the System Logger policy. The
characteristics of this log stream (such as storage class, management class, high level
qualifier and so on) will be copied for the log stream you are defining if those characteristics
are not explicitly coded on the referencing log stream. The parameters explicitly coded on this
request, however, override the characteristics of the MODEL log stream specified on the
LIKE parameter.
See Example 2-2 for an example of how a model log stream is used.
Notice that while we inherited values from the MODEL log stream (HIGHOFFLOAD, LS_SIZE,
etc.), the values specified in the LIKE log stream definition will override them (EHLQ,
STG_DUPLEX, LOWOFFLOAD, etc.).
If you specify DIAG(NO), which is the default, this indicates that no special System Logger
diagnostic activity is requested for this log stream, regardless of the DIAG specifications on
the IXGCONN, IXGDELET and IXGBRWSE requests.
If you specify DIAG(YES), this indicates that special System Logger diagnostic activity is
allowed for this log stream and can be obtained when the appropriate specifications are
provided on the IXGCONN, IXGDELET, or IXGBRWSE requests.
We recommend that you specify DIAG(YES) as the additional diagnostics it provides will
provide IBM service with additional information to debug problems. Note that specifying it will
cause a slight performance impact when certain problems occur for which System Logger will
now collect additional information; however, for the rest of the time, specifying DIAG(YES)
has no effect on performance.
OFFLOADRECALL
Indicates whether offload processing is to recall the current offload data set if it has been
migrated.
If you specify OFFLOADRECALL(YES), offload processing will attempt to recall the current
offload data set.
If you specify OFFLOADRECALL(NO), offload processing will skip recalling the current
offload data set and allocate a new one.
If you use this option, you need to also consider how quickly your staging data sets get
migrated, and how likely they are to be recalled. If they are likely to be migrated after just one
offload, you should attempt to set LS_SIZE to be roughly equivalent to the amount of data
that gets moved in one offload. There is no point allocating a 1 GB offload data set, and then
migrating it after you only write 50 MB of data into it. Similarly, if the data set is likely to be
recalled (for an IXGBRWSE, for example), there is no point having a 1 GB data set clogging
up your DASD if it only contains 50 MB of data. If the offload data sets will only typically
contain 50 MB of data, then size them to be slightly larger than that.
How your log stream is used is a factor when deciding what value to code for
OFFLOADRECALL. In general, if you can’t afford the performance hit of having to wait for a
offload data set to be recalled, we suggest you code OFFLOADRECALL(NO).
For CF-Structure based log streams, System Logger always writes log data to the CF
structure first. It will then duplex the data to some other medium (either another CF structure,
staging data sets, or local buffers) depending on the values of several parameters in your log
stream’s definition as shown in Figure 2-9 on page 43. The following cases correspond to
those in Figure 2-9 on page 43.
Note: For a description of a failure dependent connection, refer to 2.8, “System Logger
recovery” on page 67.
simplex
Case 1 Uncond | Cond Local Buffers St aging D at a Set St aging D at a Set
duplex
Case 3 Uncond | Cond
St ructure, St ruct ure, St ructure,
Local Buffers St aging D ata Set St aging D at a Set
Case 4 Uncond | Cond St ructure, St ruct ure, St ructure,
Local Buffers Local Buffers St aging D at a Set
Case 5 a Uncond St ruct ure, St ruct ure, St ructure,
Local Buffers Local Buffers St aging D at a Set
Case 5 b Cond St ruct ure St ruct ure St ructure
You can view the storage mediums System Logger is duplexing to by entering the “D
LOGGER,C,LSN=logstreamname,DETAIL” system command. See Example 2-3 for sample
output. Note that the locations listed on the DUPLEXING: line are where the copy of the data
is held. For example, in Example 2-3, the OPERLOG structure is being duplexed using
System-Managed Duplexing, however the CFs are not failure isolated from System Logger,
so System Logger actually has three copies of the data in this case—one in the CF structure
(not shown in the command), a second in the duplex copy of that structure (shown by the
keyword STRUCTURE), and a third copy in the staging data set (shown by the keyword
STAGING DATA SET).
When an application writes a log block to a DASD-only log stream, System Logger first writes
the data to local buffers; the log block is then always duplexed to staging data sets. When the
staging data set subsequently reaches the installation-defined high threshold, System Logger
moves the log blocks from local buffers to offload data sets and deletes those log blocks from
the staging data set. From an application point of view, the actual location of the log data in
the log stream is transparent.
There are many considerations you must take into account before and after you have decided
to use DASD-only log streams. If you decide your System Logger application should use
them, then you should also have a basic understanding of how they work. We’ll spend the rest
of this section addressing these points.
If you have determined that all your log streams should use CF-Structure log streams, you
should skip to 2.5.3, “Updating log stream definitions” on page 55 now.
In addition to these, you should consider any advice given by the application; for example,
applications that require that multiple systems connect to the log stream, like APPC/MVS for
Note: A DASD-only log stream is single system in scope. This means that even though
there can be multiple connections to it from a single system in the sysplex, there cannot be
multiple systems connected to the log stream at the same time.
NAME
Specifies the name of the log stream that you want to define. The name can be made up of
one or more segments separated by periods, up to the maximum length of 26 characters.
NAME is a required parameter with no default. Besides being the name of the log stream, it is
used as part of the offload data set and staging data set names:
offload data set example: <hlq>.logstreamname.<seq#>
staging data set example: <hlq>.logstreamname.<sysplex_name>
Note that if the log stream name combined with the HLQ are longer than 33 characters, the
data component of the offload and maybe the staging data sets may contain a
system-generated low level qualifier: for example:
IXGLOGR.A2345678.B2345678.C2345678.A0000000 (Cluster)
IXGLOGR.A2345678.B2345678.C2345678.IE8I36RM (Data)
RMNAME
Specifies the name of the resource manager program associated with the log stream.
RNAME must be 8 alphanumeric or national ($, #, or @) characters, padded on the right with
blanks if necessary. You must define RMNAME in the System Logger policy before the
resource manager can connect to the log stream. See the System Logger chapter in z/OS
MVS Assembler Services Guide, SA22-7605, for information about writing a resource
manager program to back up a log stream.
DESCRIPTION
Specifies user-defined data describing the log stream. DESCRIPTION must be 16
alphanumeric or national ($, #,@) characters, underscore (_) or period (.), padded on the
right with blanks if necessary.
DASDONLY
Specifies whether the log stream being defined is a CF or a DASD-only log stream. This is an
optional parameter with the default being DASDONLY(NO).
Since we are reviewing DASD-only log streams in this section, DASDONLY(YES) would be
used to indicate that we do want a DASD-only log stream.
The value for MAXBUFSIZE must be between 1 and 65,532 bytes. The default is 65,532
bytes.
There are some additional considerations for MAXBUFSIZE if you plan on migrating the log
stream to a CF structure at some point. See “Migrating a log stream from DASD-only to
CF-Structure based” on page 56.
Important: Remember, STG_xx parameters only apply to staging data sets; not to offload
data sets. LS_xx parameters are used to associate SMS constructs with offload data sets.
STG_DATACLAS
Specifies the name of the SMS data class that will be used when allocating the DASD staging
data sets for this log stream.
For information about defining SMS data classes, see Chapter 7 in z/OS DFSMSdfp Storage
Administration Reference, SC26-7402.
For information about defining SMS data classes, see z/OS DFSMSdfp Storage
Administration Reference, SC26-7402, Chapter 7.
Important: Do not change the Control Interval Size attributes for staging data sets to be
anything other than 4096. System Logger requires that the Control Interval Size for staging
data sets be set to 4096. If staging data sets are defined with characteristics that result in a
Control Interval Size other than 4096, System Logger will not use those data sets to keep a
duplicate copy of log data. Operations involving staging data sets defined with a Control
Interval Size other than 4096 will fail to complete successfully. The DASD-only log stream
will be unusable until this is corrected.
STG_MGMTCLAS
Specifies the name of the SMS management class used when allocating the staging data set
for this log stream.
STG_STORCLAS
Specifies the name of the SMS storage class used when allocating the DASD staging data
set for this log stream.
For information about defining SMS storage classes, see z/OS DFSMSdfp Storage
Administration Reference, SC26-7402, Chapter 6.
STG_SIZE
Specifies the size, in 4 KB blocks, of the DASD staging data set for the log stream being
defined.
When specified, this value will be used to specify a space allocation quantity on the log
stream staging data set allocation request. It will override any size characteristics specified in
the specified data class (via STG_DATACLAS) or a data class that gets assigned via a
DFSMS ACS routine.
Note that if both the STG_DATACLAS and STG_SIZE are specified, the value for STG_SIZE
overrides the space allocation attributes for the data class specified on the STG_DATACLAS
value.
If you omit STG_SIZE for a DASD-only log stream, System Logger does one of the following,
in the order listed, to allocate space for staging data sets:
Uses the STG_SIZE of the log stream specified on the LIKE parameter, if specified.
Uses the size defined in the SMS data class for the staging data sets.
Uses dynamic allocation rules (as defined in the ALLOCxx member of Parmlib) for
allocating data sets if the SMS ACS routines do not assign a data class.
Note: Sizing DASD staging data sets incorrectly can cause System Logger performance
issues. For more information about using the STG_SIZE parameter, see 8.2.2, “Sizing
interim storage” on page 275.
LS_DATACLAS
Specifies the name of the SMS data class that will be used when allocating offload data sets.
System Logger uses VSAM linear data sets for offload data sets. They require a control
interval (CISIZE) from 4096 to 32768 bytes, and it can be expressed in increments of 4096;
the default is 4096.
LS_MGMTCLAS
Specifies the name of the SMS management class to be used when allocating the offload
data sets.
For information about defining SMS management classes, see Chapter 5 in z/OS DFSMSdfp
Storage Administration Reference, SC26-7402.
LS_STORCLAS
Specifies the name of the SMS storage class to be used when allocating the offload data
sets.
For information about defining SMS storage classes, see Chapter 6 in z/OS DFSMSdfp
Storage Administration Reference, SC26-7402.
LS_SIZE
Specifies the size, in 4 KB blocks, of the log stream offload DASD data sets for the log stream
being defined.
When specified, this value will be used to specify a space allocation quantity on the log
stream offload data set allocation request. It will override any size characteristics specified in
an explicitly specified data class (via LS_DATACLAS) or a data class that gets assigned via a
DFSMS ACS routine.
The smallest valid LS_SIZE value is 16 (64 KB). However, in practice you would be unlikely
to want such a small offload data set.
The largest size that a log stream offload data set can be defined for System Logger use is
slightly less than 2 GB. If the data set size is too large, System Logger will automatically
attempt to reallocate it smaller than 2 GB. The largest valid LS_SIZE value is 524287.
If you omit LS_SIZE, System Logger does one of the following, in the order listed, to allocate
space for offload data sets:
Uses the LS_SIZE of the log stream specified on the LIKE parameter, if specified.
Uses the size defined in the SMS data class for the log stream offload data sets.
We recommend you explicitly specify an LS_SIZE for each log stream even if you are using
an SMS data class, as the value specified in the data class may not be suited to your log
stream.
Note: Sizing offload data sets incorrectly can cause System Logger performance issues.
For more information about using the LS_SIZE parameter, see 8.2.1, “Sizing offload data
sets” on page 274.
AUTODELETE
Specifies when System Logger can physically delete log data.
If you specify AUTODELETE(NO), which is the default, System Logger physically deletes an
offload data set only when both of the following are true:
All the log data in the data set has been marked for deletion by a System Logger
application using the IXGDELET service or by an archiving procedure like CICS/VR for
CICS log streams or IFBEREPS, which is shipped in SYS1.SAMPLIB, for LOGREC log
streams.
The retention period for all the data in the offload data set has expired.
If you specify AUTODELETE(YES), System Logger automatically deletes log data whenever
data is either marked for deletion (using the IXGDELET service) or the retention period for all
the log data in a data set has expired.
Be careful when using AUTODELETE(YES) if the System Logger application manages log
data deletion using the IXGDELET service. With AUTODELETE(YES), System Logger may
delete data that the application expects to be accessible. If you specify AUTODELETE=YES
with RETPD=0, data is eligible for deletion as soon as it is written to the log stream.
For more information about AUTODELETE and deleting log data, see 2.7, “Deleting log data”
on page 64.
Important: Consult your System Logger application recommendations before using either
the AUTODELETE or RETPD parameters.
RETPD
Specifies the retention period, in days, for log data in the log stream. The retention period
begins when data is written to the log stream, not the offload data set. Once the retention
period for an entire offload data set has expired, the data set is eligible for physical deletion.
The point at which System Logger physically deletes the data set depends on what you have
specified on the AUTODELETE parameter and RETPD parameters:
RETPD=0 - System Logger physically deletes expired offload data sets whenever offload
processing is invoked, even if no log data is actually moved to any offload data sets.
RETPD>0 - System Logger physically deletes expired offload data sets only when an
offload data set fills and it switches to a new one for a log stream.
System Logger will not process a retention period or delete data for log streams that are not
connected and being written to by an application.
For more information about RETPD and deleting log data, see 2.7, “Deleting log data” on
page 64.
HLQ
Specifies the high level qualifier for both the offload and staging data sets.
If you do not specify a high level qualifier, or if you specify HLQ(NO_HLQ), the log stream will
have a high level qualifier of IXGLOGR (the default value). If you specified the LIKE
parameter, the log stream will have the high level qualifier of the log stream specified on the
LIKE parameter. The value specified for HLQ overrides the high level qualifier for the log
stream specified on the LIKE parameter.
HLQ and EHLQ are mutually exclusive and cannot be specified for the same log stream
definition.
EHLQ
Specifies the extended high level qualifier for both the offload and staging data sets. The
EHLQ parameter was introduced by z/OS 1.4, and log streams specifying this parameter can
only be connected to by systems running this level of z/OS or later.
EHLQ and HLQ are mutually exclusive and cannot be specified for the same log stream
definition.
When the EHLQ parameter is not explicitly specified on the request, the resulting high level
qualifier to be used for the log stream data sets will be based on whether the HLQ or LIKE
parameters are specified. If the HLQ parameter is specified, then that value will be used for
the offload data sets. When no high level qualifier is explicitly specified on the DEFINE
LOGSTREAM request, but the LIKE parameter is specified, then the high level qualifier value
being used in the referenced log stream will be used for the newly defined log stream. If the
EHLQ, HLQ, and LIKE parameters are not specified, then the default value “IXGLOGR” will
be used.
When EHLQ=NO_EHLQ is specified or defaulted to, the resulting high level qualifier will be
determined by the HLQ value from the LIKE log stream or using a default value.
CDS requirement: The active primary TYPE=LOGR CDS must be formatted at a HBB705
or higher level in order to specify the EHLQ keyword. Otherwise, the request will fail. See
“LOGR CDS format levels” on page 14 for more information.
MY.OWN.PREFIX.SYSPLEX.OPERLOG.suffix
MY.PREFIX.IS.TOO.LONG.SYSPLEX.OPERLOG.suffix
The above data set name is not valid because it is too long.
HIGHOFFLOAD
Specifies the point at which offload processing should start for the log stream. This is
specified in terms of percent full for the staging data set. For example, if HIGHOFFLOAD is
set to 80, offload processing will start when the staging data set reaches 80% full.
The default HIGHOFFLOAD value is 80%. If you omit the HIGHOFFLOAD parameter or
specify HIGHOFFLOAD(0) the log stream will be defined with the default value.
The HIGHOFFLOAD value specified must be greater than the LOWOFFLOAD value.
For more information about offload thresholds and the offload process, see 2.6, “Offload
processing” on page 58.
Note: For System Logger application recommended HIGHOFFLOAD values, see the
chapter in this book that describes the subsystem you are interested in, or consult the
application’s manuals.
LOWOFFLOAD
Specifies the point at which offload processing will end. This is specified in terms of percent
full for the staging data set. For example, if LOWOFFLOAD is set to 10, offload processing
will end when enough data has been moved so that the staging data set is now only 10% full.
If you specify LOWOFFLOAD(0), which is the default, or omit the LOWOFFLOAD parameter,
System Logger continues offloading until the staging data set is empty.
The value specified for LOWOFFLOAD must be less than the HIGHOFFLOAD value.
For more information about offload thresholds and the offload process, see 2.6, “Offload
processing” on page 58.
Note: For System Logger application recommended LOWOFFLOAD values, see the
chapter in this book that describes the subsystem you are interested in or consult the
application’s manuals.
MODEL
Specifies whether the log stream being defined is a model, exclusively for use with the LIKE
parameter to set up general characteristics for other log stream definitions.
If you specify MODEL(NO), which is the default, the log stream being defined is not a model
log stream. Systems can connect to and use this log stream. The log stream can also be
specified on the LIKE parameter, but is not exclusively for use as a model.
If you specify MODEL(YES), the log stream being defined is only a model log stream. It can
be specified only as a model for other log stream definitions on the LIKE parameter.
No log stream offload data sets are allocated on behalf of a model log stream.
The attributes of a model log stream are syntax checked at the time of the request, but not
verified until a another log stream references the model log stream on the LIKE parameter.
Model log streams can be thought of as a template for future log stream definitions. They are
defined in the System Logger policy and will show up in output from a “D LOGGER,L”
command or an IXCMIAPU LIST LOGSTREAM report. Some applications (such as CICS)
use model log streams to allow installations to set a common group of characteristics up for
the application to define LIKE log streams based on.
LIKE
Specifies the name of a log stream defined in the System Logger policy. The characteristics
of this log stream (such as storage class, management class, high level qualifier and so on)
will be copied for the log stream you are defining only if those characteristics are not explicitly
coded on the referencing log stream. The parameters explicitly coded on this request,
however, override the characteristics of the MODEL log stream specified on the LIKE
parameter.
Notice that while we inherited values from the MODEL log stream(HIGHOFFLOAD, LS_SIZE, etc),
the values specified in the LIKE log stream definition will override them (EHLQ,
STG_DUPLEX, LOWOFFLOAD, etc).
DIAG
Specifies whether or not dumps or additional diagnostics should be provided by System
Logger for certain conditions.
If you specify DIAG(NO), which is the default, this indicates that no special System Logger
diagnostic activity is requested for this log stream, regardless of the DIAG specifications on
the IXGCONN, IXGDELET and IXGBRWSE requests.
If you specify DIAG(YES), this indicates that special System Logger diagnostic activity is
allowed for this log stream and can be obtained when the appropriate specifications are
provided on the IXGCONN, IXGDELET, or IXGBRWSE requests.
We recommend that you specify DIAG(YES) as the additional diagnostics it provides will
provide IBM service with additional information to debug problems. Note that specifying it will
cause a slight performance impact when certain problems occur for which System Logger will
now collect additional information; however, for the rest of the time, specifying DIAG(YES)
has no effect on performance.
OFFLOADRECALL
Indicates whether offload processing is to recall the current offload data set if it has been
migrated.
If you specify OFFLOADRECALL(YES), offload processing will attempt to recall the current
offload data set.
If you specify OFFLOADRECALL(NO), offload processing will skip recalling the current
offload data set and allocate a new one.
If you use this option, you need to also consider how quickly your staging data sets get
migrated, and how likely they are to be recalled. If they are likely to be migrated after just one
offload, you should attempt to set LS_SIZE to be roughly equivalent to the amount of data
that gets moved in one offload. There is no point allocating a 1 GB offload data set, and then
migrating it after you only write 50 MB of data into it. Similarly, if the data set is likely to be
recalled (for an IXGBRWSE, for example), there is no point having a 1 GB data set clogging
up your DASD if it only contains 50 MB of data. If the offload data sets will only typically
contain 50 MB of data, then size them to be slightly larger than that.
How your log stream is used is a factor when deciding what value to code for
OFFLOADRECALL. In general, if you can’t afford the performance hit of having to wait for a
offload data set to be recalled, we suggest you code OFFLOADRECALL(NO).
For DASD-only log streams, System Logger uses local buffers in System Logger’s data
space for interim storage. It then duplexes the data simultaneously to staging data sets.
Unlike CF-Structure based log streams, you have no control over this processing; System
Logger always uses this configuration for DASD-only log streams.
If you are running with an HBB6603 or lower LOGR CDS, most log stream attributes cannot
be updated if there is any type of log stream connection, whether it is active or
“failed-persistent”. Use of the log stream in question needs to be quiesced before submitting
the update requests. The exception to this is the RETPD and AUTODELETE parameters,
which can be updated at any time, with the values taking effect when the next offload data set
switch occurs (that is, when System Logger allocates a new offload data set). For
CF-Structure based log streams, changing the CF structure a log stream resides in is a
cumbersome process that involves deleting the log stream and redefining it to the new
structure.
If you are running with an HBB7705 or higher LOGR CDS, System Logger allows updates to
be submitted at any time for offload and connection-based log stream attributes. The updates
become “pending updates” and are shown as such in the IXCMIAPU LIST LOGSTREAM
report. The updates are then committed at different times, depending on which parameter is
being changed. Log streams without any connections will have their updates go into effect
immediately. Table 2-4 shows which parameters can be changed, and when the change takes
effect.
Example 2-6 on page 56 contains a sample job that updates some log stream attributes.
Table 2-4 System Logger logstream attribute dynamic update commit outline
Logstream attribute Last disconnect or Switch to New CF Structure Rebuild
first connect to offload Data Set
logstream in sysplex
LOGGERDUPLEX Yes No No
(CF)
Notes:
1 - These attributes are only committed during switch to new offload data set activity for DASD-only
log stream. These attributes are not committed at this point for CF structure-based log stream.
yes - Indicates the attribute is committed during the activity listed in the column heading.
PENDING CHANGES:
OFFLOADRECALL(YES)
DUPLEXMODE(UNCOND)
This support (again, HBB7705 LOGR CDS required) also introduced the ability to dynamically
change the CF structure the log stream was defined to. This can be done without first
deleting the log stream. Note that the log stream cannot have any active or “failed persistent”
connections for the update to be honored.
For the update to be honored, all connections (active and “failed persistent”) must be
disconnected. Before updating the log stream definition, you should be familiar with all the
concepts discussed in 2.5.1, “CF-Structure based log streams” on page 23. Also, the CF
structure you intend to migrate the DASD-onlylog stream to must meet some requirements:
When defining DASD-only log streams, plan ahead for possible future upgrades by
matching the MAXBUFSIZE value for the DASD-only log stream with the MAXBUFSIZE
value of the structure you would assign it to on an upgrade request. The MAXBUFSIZE
value on the DASD-only log stream definition must be the same size as, or smaller than,
the MAXBUFSIZE value for the structure.
On the UPDATE request to upgrade a DASD-only log stream, specify a structure with a
MAXBUFSIZE value that is as large as, or larger than, the DASD-only log stream
MAXBUFSIZE value.
Restriction: You cannot issue an UPDATE request to reduce the MAXBUFSIZE value on
a DASD-only log stream definition. You also cannot specify the MAXBUFSIZE parameter
on an UPDATE request for a structure definition.
We can then use the D LOGGER,L command the verify the log stream has been migrated:
Note: It is not possible to migrate from a CF-Structure based log stream to a DASD-only
log stream without deleting and re-defining the log stream.
NAME
Specifies the name of the log stream you want to delete from the System Logger policy.
You cannot delete a log stream while there are any active connections to it. You also cannot
delete a log stream that has a “failed-persistent” connection if System Logger is unable to
resolve the connection. Remember that once you delete the log stream, all the data in any
offload data sets associated with the log stream will also be gone. So, if you need that data, it
is your responsibility to copy it from the log stream before you issue the DELETE.
Deleting CF structures
The DELETE STRUCTURE specification requests that an entry for a CF structure be deleted
from the System Logger policy. Note that the structure will still be defined to the CFRM policy;
this request only removes it from the System Logger policy.
NAME
Specifies the name of the CF structure you are deleting from the System Logger policy.
Example 2-9 shows a sample DELETE STRUCTURE request.
You cannot delete a CF structure from the System Logger policy if there are any log stream
definitions still referring to it.
There are a number of situations that cause the offload process to be invoked. The situations
and the actions System Logger takes are listed in Table 2-5.
Number of elements used OR 1) Delete all log blocks that 1) Delete all eligible log blocks
number of CIs in staging data have been logically deleted by that have been logically deleted
set used reaches IXGDELET by IXGDELET
HIGHOFFLOAD 2) If LOWOFFLOAD has not 2) If LOWOFFLOAD has not
been reached, move oldest log been reached, move oldest log
blocks to offload data set until blocks to offload data set until
LOWOFFLOAD is reached LOWOFFLOAD is reached
Number of entries used in CF Not applicable 1) Delete all log blocks that
structure reaches 90% have been logically deleted by
IXGDELET in all log streams in
this structure
2) For every log stream in the
structure, if LOWOFFLOAD
has not been reached, move
oldest log blocks to offload data
set until LOWOFFLOAD is
reached
Last connector from a system to All log blocks moved to offload All log blocks for that log stream
a log stream disconnects data sets moved to offload data sets, up
to the newest log block written
by the system that just
disconnected
Structure rebuild completes Not applicable All log blocks for all log streams
and recovery is required in this structure moved to
offload data sets
For either type of log stream, when offload processing is initiated because the high offload
threshold is reached, System Logger begins the process as follows:
1. Delete any eligible log blocks in interim storage that have been marked logically deleted
(using IXGDELET). For a CF-Structure log stream, free the associated interim storage in
blocks as the offload proceeds.
2. If the low threshold has not been reached, calculate how much data must be offloaded to
reach the low offload threshold.
3. Allocate the offload data set (if it isn’t already allocated).
4. Offload the data to the offload data sets, moving the oldest log blocks first. Note that all
valid log blocks are moved until the threshold is reached, regardless of which system
created them. So, if the offload was initiated because one system disconnected from the
log stream, all log blocks, from all systems, will be moved to the offload data set. Once
again, for a CF-Structure log stream, interim storage is freed up as the offload proceeds.
5. For DASD-only log streams, free all interim storage associated with the offloaded log
blocks.
Subsystem
Operations
Subsystem
Operations
System
System
Logger
Logger
Log
Log
1
1
logblocks
Staging Staging
Data Sets Data Sets
Log Log
Offload Offload
Subsystem
DASD log logstream DASD log
Operlog
logstream
Coupling Facility
VSAM VSAM
linear linear
data set data set
Structure Full
20% 80%
Post offload:
assuming no new writes
Structure Full
20% 80%
You can use SMF reports to tune your offload threshold settings; for more information about
this, see 8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291. In addition,
APAR OW13572 added the ability to create a Component Trace record every time an offload
process is started—this information can help determine the frequency of offloads for each log
stream.
For example, if you have a log stream with a high volume of data being written to it, and you
have allocated a small CF structure for this log stream, the structure will fill quickly and hit its
high threshold, initiating frequent offloading of log data to DASD. This increases system
usage, but does not interfere with processing of write requests to the log stream, because
write requests can be processed at the same time as offload processing.
However, the CF structure for a log stream should not be larger than the application really
requires and should reflect the needs of the rest of the installation for CF space. See “Setting
up for and defining CF structures” on page 24 for information about optimal sizing of CF
structures for response, throughput, and availability.
If the CF space allocated for a log stream reaches 100% utilization, all write requests against
that log stream are rejected until offloading can complete.
This means that when a staging data set reaches the high threshold, System Logger
immediately offloads data from the CF structure to offload data sets, even if the structure
usage for the log stream is below the high threshold.
Therefore, if your staging data sets are small in comparison to the CF structure size for a log
stream, the staging data sets will keep filling up and System Logger will offload CF log data to
DASD frequently. This means that your installation experiences frequent offloading overhead
that could affect performance. It also means that you have allocated space in the CF that you
will never be able to use (because the data keeps being offloaded before the structure gets
anywhere near full).
If your staging data sets are too small, you also run the risk of them filling up completely. If
this occurs, System Logger immediately begins offloading the CF log data to offload data sets
to harden it. System Logger applications will be unable to log data until System Logger can
free up staging data set space.
For DASD-only log streams: For a DASD-only log stream, offloading of log data to offload
data sets is always triggered by staging data set usage. System Logger offloads data from
local buffers to offload data sets when it hits the high threshold defined for the staging data
sets. For example, if you define a high threshold of 80% for a DASD-only log stream, System
Logger will begin offload processing when the staging data set space defined for a log stream
reaches or exceeds 80% usage.
This means that if you size your staging data sets too small, System Logger will offload log
data from local buffers to offload data sets frequently, incurring additional overhead. You
might also run the risk of filling the staging data sets up completely. If this occurs, System
Logger will immediately begin offloading log data to offload data sets.
Attention: APAR OW51854 added the ability for System Logger to monitor offloads and
provide a mechanism to interrupt hung offloads. This function is explained further in 7.2,
“Offload monitoring” on page 261.
Additional consideration on the offload process can also be found in “The entry-to-element
ratio” on page 26.
Some example retention period and autodelete policies can be found in Example 2-10.
Note: This retention period is different from a data set retention period on a JCL DD
statement. A System Logger retention period applies to the age of the log data, not the
data set.
Example 2. Keep Data for At Least 30 Days, Even If It Was Marked for Deletion:
Installations may require that their transaction manager log streams retain data for a
certain length of time to meet audit requirements. This data must be kept for the retention
period, even when it has been marked for deletion via the IXGDELET service. Using automatic
deletion and a retention period, you can archive the data for the required length of time
without having to move the data out of the log stream. For example, log TRANS1 needs to
have data in the log stream for at least 30 days, even if it has been marked for deletion.
You can specify RETPD(30) AUTODELETE(NO) to keep the data for the required amount of time.
Even if data is marked for deletion via IXGDELET within the 30 day retention period, it is
kept in the log stream and can be accessed by a System Logger application using the
IXGBRWSE service with VIEW=ALL.
However, if the log stream is defined with RETPD>0, expired offload data sets will not be
deleted until the next time System Logger allocates a new offload data set. If the offload data
sets are so large that it takes many offloads before the data set is filled (at which point a new
offload data set will be allocated), you could potentially have expired data sets hanging
around a long time waiting to be physically deleted. And as long as the data sets have not
been deleted, they will be holding entries in the directory extent.
Allocation errors can also delay offload data set deletion. If System Logger cannot delete an
offload data set because it is currently allocated, it will attempt to delete the offload data set
on a subsequent offload when delete processing is again performed. Successive allocation
errors may cause a data set to be “orphaned”; an offload data set that System Logger
attempted to delete but was unable to. When an offload data set is orphaned, System Logger
issues message IXG252I. System Logger frees up the offload data set's entry in the directory
extent, meaning that System Logger no longer has any knowledge of that data set—such
data sets must be deleted manually. To get a list of orphaned data sets, run an IXCMIAPU
report. Because System Logger has removed the entries for the data sets from its inventory,
the report job scans the catalog for data sets with names that match the offload data set for
that log stream—any such data sets that are found are reported as orphaned data sets. For
more information, see “Orphaned Data sets” on page 257.
An example allocation problem where System Logger would be unable to delete the offload
data set is demonstrated by Figure 2-13 on page 67. Assume system A initially allocated and
offloaded to the first offload data set (LSN.A0000001). System Logger on system A keeps
that data set allocated until it has to offload for that particular log stream again (at which point
it would allocate the current offload data set). Note that the reason for System Logger
requiring SHAREOPTIONS (3 3) is because it uses a SHR ENQ on the offload data sets: so,
just because one System Logger has the offload data set allocated does not mean that
another System Logger can’t write to that data set.
In the meantime, system B maybe have caused several data set switches to occur by
offloading so that the current offload data set is now LSN.A0000004. Suppose now that all of
the log blocks in data set LSN.A0000001 have been marked for deletion, and system B
begins to offload. System Logger will attempt to delete LSN.A0000001, but will fail because
system A still has it allocated. System Logger will still go forward and delete other unallocated
data sets (LSN.A0000002, and so on) as they become eligible for deletion during offloads.
Important: Except for cleaning up orphaned offload data sets, you should never delete
offload data sets manually. When System Logger is finished with a data set, it will delete it.
Deleting an offload data set by any other means could result in lost data. It will also cause
problems for System Logger because it will not be able to perform any clean-up and the
deleted data sets will still count toward the data set directory limit.
2
An expired offload data set is one in which all the log blocks have reached their RETPD, and either an IXGDELET
has been issued or AUTODELETE(YES) was specified for the log stream.
data sets
LSN.A0000001 LSN.A0000002 LSN.A0000003 LSN.A0000004
Allocated by Allocated by
System A System B
When your configuration contains a single point of failure, you can safeguard your data by
telling System Logger to duplex log data to staging data sets (System Logger will do this
depending on the environment the system is in and the log stream definition; see 2.5, “Log
streams” on page 22 for more information).
In Figure 2-14 on page 68, a log stream has been defined with STG_DUPLEX=YES and
DUPLEXMODE=COND. There are two systems connected to the log stream. System Sys 1,
resides in the same CPC as the CF containing the log stream, so the data that Sys 1 writes to
Figure 2-14 A single point of failure exists between Sys1 and the CF
A single point of failure can also exist for a CF structure using System-Managed Duplexing
where one failure can result in the simultaneous loss of both structure instances; this would
be if the two CFs are in the same CPC, or if both CFs are volatile. The two structure instances
in this environment are failure-dependent, meaning a single failure will cause all the structure
data to be lost, even though it is in two copies of the structure. Since a single point of failure
can cause the loss of all the log data in this case, System Logger will continue to safeguard
the data by using one of its own duplexing methods.
System Logger evaluates a connection for a single point of failure based on the location of
the CF and its status of volatile or non-volatile. The CF can reside in one of the following
configurations:
The CF executes in an LPAR in the same CPC as a system that is connected to a log
stream resident in the CF.
The CF is in a stand-alone CPC and therefore does not share the CPC with a system with
a connection to the log stream.
Note: If you specify STG_DUPLEX(NO), make sure your application is not vulnerable to
data loss that might occur if your environment contains a single point of failure.
During startup, System Logger runs through a series of operations for all CF-Structure based
log streams to attempt to recover and cleanup any failed connections; and to ensure all data
is valid. DASD-only log stream recovery is not handled at this time so we’ll discuss it as a
separate topic.
Let us look at Figure 2-15 for an example of a recovery operation. Assume both system A and
B failed, and system A is IPLed first. Since system A was connected to log stream A when the
system failed, recovery would be attempted for log stream A. As part of this recovery
operation, System Logger would cleanup the connections from system A and system B
because both systems will have failed-persistent connections to the log stream. System
Logger would then try to recover any failed connectors for all the other log streams residing in
structure A; here, log stream B only has one connection, from system B. However, since log
stream B is in the same structure as log stream A (for which System Logger on system A
initiated recovery) the failed persistent connection from system B to log stream B would be
recovered as well. As a result of these recovery operations (assuming they are successful)
there would be no connections to structure A, and all log data in log streams A and B has
been offloaded to offload data sets.
Structure A System A
Log stream A
Log stream B
System B
If there is no peer connection available to perform recovery for a failed system, recovery is
delayed until either the failing system re-IPLs or another system connects to a log stream in
the same CF structure to which the failing system was connected. In Figure 2-16, for
example, peer recovery can be performed on structure B. However, recovery for structure A
log data is delayed until either Sys 1 re-IPLs, or another system connects to a log stream in
that structure.
Every time a new first connection to a log stream structure is established from a particular
system, System Logger examines the log stream to determine if recovery is needed. If this is
also the first connection to this structure, System Logger will check if recovery is needed for
any other log streams in the structure.
Note: To ensure peer recovery, a peer connector is only needed to the same structure
from another system in the sysplex; it does not have to be to the same log stream.
Recovery for a DASD-only log stream only takes place when an application reconnects to the
log stream. As part of connect processing, System Logger reads log data from the staging
data set (associated with the last connection to the log stream) into the local buffers of the
current connecting system. This allows the application to control recovery, by selecting which
system they wish to have reconnect to the log stream and when. Note that for another system
to connect to the log stream and perform recovery, the staging data sets must reside on
devices accessible by both systems.
In this topic, we’ll discuss each of these situations individually, as well as giving some insight
into System Logger processing during a structure rebuild.
Note that this section only applies to CF-Structure based log streams and not DASD-only log
streams.
Structure rebuild
Structure rebuild from a System Logger perspective is the process by which a new instance
of a CF structure is created and repopulated after System Logger has been notified by XES
that a rebuild has been initiated (either by an operator command, structure failure, or state
You can read more about structure rebuild processing from an overall system perspective in
Chapter 5.5 of z/OS Sysplex Services Guide, SA22-7617.
CF structure rebuilds are intended for planned reconfiguration and recovery scenarios. The
next few sections describe the most common events that trigger a structure rebuild.
Note that while the structure is duplexed using System-Managed Duplexing, rebuild is not
possible. If the structure needs to be rebuilt (for example, to clear a POLICY CHANGE
PENDING condition), the structure must be reverted to simplex mode first.
Note: If the new structure instance cannot be successfully repopulated for any reason, and
System Logger does not have connectivity to the original structure instance, staging data
sets will be created to recover the log data to, regardless of the log stream’s
STG_DUPLEX parameter.
If the structure was in simplex mode and the failure or damage occurs to the only instance of
the CF structure, all systems connected to the CF structure detect the failure. The first system
whose System Logger component detects the failure initiates the structure rebuild process.
The structure rebuild process results in the recovery of one or more of the affected CF
structure's log streams. All the systems in the sysplex that are connected to the CF structure
participate in the process of rebuilding the log streams in a new CF structure. We discussed
CF structure rebuilds in “Structure rebuild” on page 72.
If XES cannot allocate a new structure instance in a CF that can be connected to from all the
systems using that structure, System Logger does one of the following, depending on
whether the system or systems that cannot connect to the new CF structure were using
staging data sets:
If the system was using staging data sets, the rebuild process continues and the CF log
data for the system is recovered from the staging data sets.
If the system was not using staging data sets, the rebuild process is stopped. The systems
go back to using the source structure. The log stream will be available on the systems that
have connectivity to the source CF structure; it will be unavailable on those that do not
have connectivity.
Some of the environments may result in rebuild processing for the structure. For more
information about rebuild processing see “Structure rebuild” on page 72.
For structures that are in simplex mode, a rebuild of the structure is initiated so that the log
data can be moved to a non-volatile CF. During rebuild processing, System Logger rejects
any service requests (connect, and so on).
If there is not a CF structure available in a non-volatile CF, System Logger will still rebuild the
structure to a new volatile CF. System Logger may then change the way it duplexes CF data
because the volatile CF constitutes a single point of failure:
For log streams defined with STG_DUPLEX=YES, System Logger will begin duplexing
data to staging data sets, if it was not already doing so.
For log streams defined with STG_DUPLEX=NO, System Logger will keep on duplexing
data to local buffers on each system.
For structures that are duplexed using System-Managed Duplexing, structure rebuild is not
possible because there are already two copies of the structure. However, System Logger may
A CF Becomes Non-Volatile
If a CF changes to a non-volatile state, the System Logger on each system using the CF
structure is notified.
For simplex mode structures, System Logger may change the way it duplexes CF data
because the change to a non-volatile CF may have removed the single point of failure
condition.
If the initial environment had a volatile structure CF state and there was a
failure-dependent relationship between the connecting system and the CF structure, the
log stream was considered to be in a single point of failure environment and continues to
be so after the state change, so System Logger makes no changes to the duplexing
method.
If the initial environment had a volatile structure CF state and there was a
failure-independent relationship between the connecting system and the CF structure,
System Logger may then change the way it duplexes CF data because the non-volatile CF
no longer constitutes a single point of failure.
System Logger will duplex the log data using local buffers, unless the log stream definition
specified STG_DUPLEX(YES) DUPLEXMODE(UNCOND).
It is possible for System Logger to change from using local buffers to staging data sets or to
change from using staging data sets to local buffers. It is also possible for System Logger to
start providing its own duplexing of the log data or stop duplexing the log data after the mode
switch.
“Duplexing log data for CF-Structure based log streams” on page 42 shows how System
Logger decides what storage medium to duplex log data to based on the environment System
Logger is operating in and the log stream definition.
Type 88 records summarize all a log stream's activity on a single system, as long as at least
one address space is connected to the log stream on that system. If no System Logger write
activity is performed against the log stream during a particular SMF interval, a record is
produced showing zero for the various System Logger activity total fields.
The Type 88 record is produced for all log streams connected at the expiration of the SMF
global recording interval. The creation of a Type 88 record is also triggered by the
disconnection of the last connector to the log stream on that system.
There are some things you must remember about the Type 88 records however:
The Type 88 records only show activity from one system. If a log stream is used by more
than one system, you must merge the information from all systems to get a
comprehensive view of the use of that log stream
There are a number of subtype records produced by System Logger, but only one of them,
the one dealing at the log stream level, has an IBM-provided formatter. Therefore, to
determine what is happening at the structure level for structures containing more than one
log stream, you need to merge the information from all log streams in that structure, from
all systems in the sysplex.
In 7.9.2, “SMF88” on page 270 you can find a discussion on how to set up for collecting Type
88 records. After the Type 88 records are collected, they can be sorted and analyzed using a
tool; IBM ships one of these tools as a Samplib member called IXGRPT1. We’ll discuss using
IXGRPT1 in 7.9.3, “IXGRPT1” on page 271.
IXGRPT1 provides one of the few ways to effectively tune your log streams for better
performance. However, interpreting the report that is produced by the IXGPRT1 program is
not a trivial task. In 8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291 you
can find a discussion on using the Type 88 data to tune System Logger performance as well
as highlighting particular fields of interest in some of the application chapters.
5. Obtain a System Logger inventory detailed listing by running an IXCMIAPU LIST report as
shown in Example 2-13.
6. If you suspect that the LOGR CDS is corrupted, print its contents using the job shown in
Example 2-14.
Note: As we discussed in 2.5, “Log streams” on page 22, specifying DIAG(YES) on the log
stream definition will provide additional documentation in certain error cases that could not
be otherwise collected.
Sys1 Sys2
VTAM VTAM
Dynamic Dynamic
Transaction TOR TOR Transaction
Router Router
FOR
DATA
Buffer
Figure 3-1 VSAM data sharing before Record Level Sharing (RLS)
Dynamic
Sys1 Dynamic
Sys2
Transaction TOR Transaction TOR
Router Router
DATA DATA
Dataspace Dataspace
STRUCTURE STRUCTURE
Shared DASD
Coupling Facility 1 Coupling Facility 2
Sys1 Sys2
Batch Batch
CICS CICS Read Only CICS CICS
Read Only
AOR AOR (RLS) AOR AOR
(RLS)
DATA
DATA
STRUCTURE
SMSVSAM STRUCTURE SMSVSAM
LOGR LOGR
Batch Coupling Facility Batch
UPDATE 1&2 UPDATE Batch
(RLS) Batch
(RLS)
NSR, LSR, NSR, LSR,
GSR GSR
Shared
(RECOVERABLE)
VSAM Data Sets
Transactional VSAM provides two-phase commit for updates to VSAM files by registering
with Resource Recovery Services (RRS). Since Transactional VSAM uses RRS, all the
documentation about this function tends to use the RRS terminology for recovery services.
For that reason, what is normally referred to as a Unit of Work (UOW) in CICS manuals is
called a Unit of Recovery (UR) in DFSMStvs documentation. A UR is the set of changes
made by a particular task until the task invokes either the RRS Commit or RRS Backout, at
which time all the changes are either committed to the VSAM data sets or backed out. The
commit can either be explicit or implicit (at the end of the step). If the batch job does not issue
any explicit commits, the entire step is considered a single UR. Any committed changes are
not backed out if there is a subsequent Backout call; only those changes made since the
previous commit are backed out.
To keep track of all the before-copy images that might have to be restored to the VSAM data
sets (which is what happens when a UR indicates that it wants to “backout” the changes since
the last commit point), Transactional VSAM needs to record the before-copy images.
Under normal circumstances, there is only one copy of Transactional VSAM on each image
within the sysplex (for exceptions to the practice, refer to DFSMStvs Administration Guide,
GC26-7483), and each instance of Transactional VSAM records the before-copy images for
URs executing on its system into a unique undo log. For performance reasons, the one
logical undo log consists of two physical log streams, referred to as IGWLOG.SYSLOG and
DFSMStvs writes the ‘before’ image of a record in a recoverable VSAM data set to the
IGWLOG.SYSLOG log stream. If an in-flight UR issues a backout or the UR abends,
DFSMStvs uses the data in the Undo log stream to restore the original contents of the record
to the VSAM data set.
These two log streams are active log streams. This means that DFSMStvs manages the
content of the log streams and deletes data from them as it is no longer required, and this
process is referred to as log tail management. For more information about the difference
between active and funnel-type log streams, refer to 1.1.1, “How System Logger is used” on
page 3.
If you run Transactional VSAM on three systems within your sysplex, you need to define at
least six log streams: two for each of the three instances with a total of three
IGWLOG.SYSLOG log streams and three IGWSHUNT.SHUNTLOG log streams.
The undo log streams are required. Transactional VSAM attempts to connect to the undo log
streams when it initializes (either during the IPL of the system or in response to a
V SMS,TRANVSAM(tvsname),ENABLE command). If the connection to either one of the log
streams is not successful, Transactional VSAM does not initialize.
If you define a data set with a forward recovery log stream, both CICS TS and Transactional
VSAM write to the same log stream. Since both parties contribute to the same log stream, all
the updates to the data set are used to rebuild a failed data set.
The forward recovery log streams are funnel-type log streams. This means that Transactional
VSAM and CICS TS simply add data to the log streams; they never delete any data from
these log streams.
The forward recovery log streams are required for data sets defined with LOG(ALL). If
Transactional VSAM cannot connect to the log stream associated with a given data set, the
OPEN for the data set fails. Each instance of Transactional VSAM in the sysplex connects to
the forward recovery log stream associated with a data set as part of the OPEN processing.
Similarly, when the last data set associated with a given log stream is closed, Transactional
VSAM disconnects from the forward recovery log stream.
CICS TS connects to and disconnects from the forward recovery log streams in a similar
manner (refer to 5.1.1, “Log stream usage” on page 148), however, there is one difference.
The recoverable data sets tend to remain open during the life of the CICS region. With
Transactional VSAM, the connections to the forward recovery log streams might be made
and broken more frequently depending on the data set pattern of reference and the number of
batch jobs that run concurrently. If in your installation, the data sets are only used by batch
jobs (and are not opened to CICS regions) and the forward recovery log streams are defined
to use staging data sets, you might see message IGW838I, indicating a temporary delay
while the staging data set is formatted, frequently as the connections come and go every time
the data set opened and closed by the batch jobs.
The log-of-logs
The log-of-logs log stream is optional; you do not need to define or use a log-of-logs log
stream. The log-of-logs log stream houses all the tie-up records, which indicate when data
sets are opened and closed. The forward recovery product (like CICS/VR) can use this
information to reconstruct a damaged data set more quickly.
The log-of-logs log stream is a funnel-type log stream. This means that Transactional VSAM
and CICS TS simply add data to the log stream; they never delete any data from this log
stream.
The log-of-log log stream is optional; Transactional VSAM connects to the log-of-logs when it
initializes (either during the IPL or in response to the V SMS,TRANVSAM(tvsname),ENABLE
command), and if the connection to the log stream is unsuccessful, Transactional VSAM
continues to initialize without a log-of-logs.
The next level of criticality is for the forward recovery log streams. If a forward recoverable
data set should fail, the data in the forward recovery log stream is vital to the restoration of
that data set. Without all the forward recovery images, CICS/VR or similar product cannot
rebuild the data set from the last back up copy of the failed data set. For this reason, if a
forward recovery log stream fails (or is inaccessible or simply does not exist), Transactional
VSAM prohibits updates against the data set and CLOSEs the data set. The installation then
must take a fresh back-up and rebuild the log stream.
Even though the data in the undo log stream is only maintained while it might be needed to
perform a UR backout, the two log streams that comprise the undo log (IGWLOG.SYSLOG
and IGWSHUNT.SHUNTLOG) are absolutely critical to the operation of Transactional VSAM.
Without those two log streams, Transactional VSAM cannot function and terminates.
There are many variables which must be taken into account when sizing a log stream, making
it difficult to get it perfect the first time around. Once an initial size is determined, the log
stream performance must be monitored using the SMF Type 88 records produced by the
System Logger, and adjustments made, as required.
Understanding the volume and rate data is written is critical when sizing the log stream
interim storage.
Each time a log block is written to a log stream, the System Logger automatically creates a
duplicate copy of the data. For DASD-only log streams, the data is written to the local buffers
(data space) and duplexed to the staging data set. For a CF-Structure log stream, the data
will also be duplexed to the local buffers unless a staging data set is being used or if
CF-structure duplexing is being used. A staging data set is when the CF is volatile or is in a
failure dependent configuration and STG_DUPLEX(YES) DUPLEXMODE(COND) has been
specified in the log stream definitions, or if STG_DUPLEX(YES) DUPLEXMODE(UNCOND)
was specified.
The staging data set used to duplex a CF-Structure log stream must be large enough to hold
the largest amount of data which can be contained in the CF log stream interim storage (that
is, the part of the log stream that is currently in the structure in the CF).
With the exception of CF-Structure log streams duplexed to either staging data sets or
CF-managed duplexed structures, the data space will contain the duplex copy of all data
resident in interim storage for all active log streams in the z/OS image.
To optimize use of the data space, and reduce the potential impact on storage use, residency
time of the data should be kept to minimum. For the TVS Undo log (IGWLOG and
IGWSHUNT), the data should be retained in interim storage until the associated UOW
commits or backs out. For forward-recovery log streams, all data is offloaded to the offload
data sets so the interim storage (CF structure or staging data set) should be sized to provide
minimal residency time.
Offload data sets contain data which has been offloaded from interim storage. Data is
offloaded from interim storage as part of the offload process, usually initiated when the
HIGHOFFLOAD threshold is reached. Offload data sets may be subsequently archived using
a product like DFSMShsm. For a compete description of offload processing, refer to 2.6,
“Offload processing” on page 58.
Once a starting size has been identified, the SMF Type 88 records should be used to tune the
log stream based on the activity during the key processing intervals.
When calculating the size of interim storage for a log stream, the following log stream
characteristics are important:
Each TVS Undo log stream requires enough storage to hold the data written in an Activity
KeyPoint (AKP) interval + the duration of the longest UOW + a buffer of at least 25%.
Structures should be large enough to hold the sum of the data written for all connected log
streams in the interval.
As of now, there are no tools to help size the Undo log stream. A suggested approach is to
use the SMF64 at CLOSE time to obtain the number of writes against the data set. Multiple
the number for the average recordsize and divide for the Activity Key Point: this should give
you an idea of how much storage you should need in the interim media for this data set. If you
sum all the data sets open in a certain interval, this should give you an idea of how much total
storage you need for your Undo log stream.
For details, see CICS section, 5.3.5, “Log stream sizing” on page 175.
Similarly, for the member used on #@$2, you would code as shown in Example 3-2.
Finally, for the member used on #@$3, you would code as shown in Example 3-3.
With this methods, you need to remember to create a new parmlib member every time you
add a system in the sysplex.
Example 3-4 Sample IGDSMSxx member for all system without using system symbols
SYSTEM(#@$1,#@$2,#@$3)
TVSNAME(001,002,003)
Note: The values for these keywords are positional and you must ensure that you specify
the values for SYSTEM in the same order as TVSNAME. In addition, if you add (or
remove) a system to the sysplex, you have to update this parmlib member accordingly.
With this method, when you add a system to the sysplex, you only need to ensure that the
variable &SYSID1 (defined in IEASYMxx) gets a unique value.
The log-of-logs
The log stream used for the log-of-logs is defined in two places. For Transactional VSAM, you
define the log-of-logs in the IGDSMSxx parmlib member using the LOG_OF_LOGS
keywords. Refer to 5.2.1, “Subsystem definitions” on page 151 for details on defining the
log-of-logs log stream to CICS TS.
During the activity keypoint, DFSMStvs initiates the log tail trimming for IGWLOG.SYSLOG
and IGWSHUNT.SHUNTLOG. After determining the oldest record that is still needed to
perform UR backout (this is called the history point), DFSMStvs issues an IXGDELET request
to delete all log blocks older than the history point from the log streams. The data is then
physically deleted by System Logger during the next offload performed for each log stream.
If you set AKP too high, DFSMStvs performs log-tail trimming less frequently, which results in
more data in the log stream. A larger amount of data in the log stream results in an increase
in storage usage in the System Logger address space along with an increase in the restart
time should DFSMStvs fail.
If you set AKP too low, DFSMStvs performs log-tail trimming more frequently, which might
result in the shunting of URs (moving the data associated with a UR from the
IGWLOG.SYSLOG to IGWLOG.SHUNTLOG log streams). If the UR ends a little while after
the shunting, the shunting was performed needlessly.
Coupling Facility log streams or DASD-only log streams for Undo logs
There are items to consider when deciding whether to use Coupling Facility log streams or
DASD-only log streams for the IGWLOG.SYSLOG and IGWSHUNT.SHUNT log streams.
Positive attributes of a Coupling Facility log stream include better performance (if they are
properly tuned). On the other hand, if you are constrained for space in the Coupling Facilities,
or your Coupling Facilities are failure dependent with your z/OS images (for a discussion on
failure dependent and independent connections, refer to 2.8.1, “Failure independence” on
page 67), in which case you should use Staging Data Sets anyway, you should consider using
DASD-only log streams.
Note: When defining a Coupling Facility log stream, you need to ensure that the structure
for the log stream is defined both in the CFRM Policy and the System Logger Policy. The
order does not matter (you can update the CFRM policy and then the System Logger
Policy, or the other way around). However, both definitions must be made BEFORE you
attempt to use the desired log stream.
Note: After running the job to update the CFRM Policy, you must issue the z/OS command
to activate the new policy. In this example that is:
SETXCF START,POLICY,TYPE=CFRM,POLNAME=CFRMPOL1
When using Coupling Facility log streams, there are several general recommendations:
ALLOWAUTOALT(NO)
Since System Logger deletes data from the structure once the log block has been hardened
to disk or deleted, the structures used by System Logger may appear to XES as good
candidates for an automatic reduction in size. However, the smaller structure size adverse
effects System Logger performance. To prevent XES from automatically altering the size of
System Logger structures, code ALLOWAUTOALT(NO)
FULLTHRESHOLD(0)
System Logger manages the space within the structure, and at times goes over the default
value of 80% structure full. Instead of using the XES messages to determine the structure
use, you should use the SMF 88 records and the output from IXGRPT1 or IXGRPT1J to
analyze the log stream performance. Therefore, we recommend coding
FULLTHRESHOLD(0) to disable the XES monitoring.
In addition to defining the structures in the CFRM policy, you must also define the structures
and the log streams in the System Logger Policy. Example 3-7 provides a sample for updating
the System Logger Policy.
Example 3-7 Defining Coupling Facility log streams in the logger policy
//CFBASED JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID.
//LOGRPOL EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DATA TYPE(LOGR) REPORT(NO)
DEFINE STRUCTURE NAME(LOG_IGWLOG_001)
LOGSNUM(10)
AVGBUFSIZE(4096)
MAXBUFSIZE(64000)
DEFINE STRUCTURE NAME(LOG_IGWSHUNT_001)
LOGSNUM(10)
AVGBUFSIZE(4096)
MAXBUFSIZE(64000)
DEFINE STRUCTURE NAME(LOG_CICSVR_001)
LOGSNUM(10)
AVGBUFSIZE(4096)
MAXBUFSIZE(64000)
DEFINE STRUCTURE NAME(LOG_LOGOFLOGS)
LOGSNUM(1)
AVGBUFSIZE(4096)
MAXBUFSIZE(64000)
DEFINE LOGSTREAM NAME(IGWTV001.IGWLOG.SYSLOG)
AUTODELETE(NO)
RETPD(0)
DIAG(YES)
HIGHOFFLOAD(80)
LOGGERDUPLEX(COND)
LOWOFFLOAD(60)
Here are the general recommendations for defining the Coupling Facility structures for the
Undo logs in the System Logger Policy.
LOGSNUM(10)
You should not place more than 10 log streams in the same structure as a larger number
adversely effects the System Logger performance when the structure needs to be rebuilt.
(Refer to “How many CF structures you need” on page 25 for additional considerations).
AVGBUFSIZE(4096)
Specifies the average size of the buffer DFSMStvs passes to the System Logger when it
issues an IXGWRITE. For a CF-based log stream, this value, along with the value specified
for MAXBUFSIZE, determine the initial entry-to-element ratio for the structure when it is first
allocated. MAXBUFSIZE determines the size of the entries: a value of X or more (I need to
verify this value) results in an entry size of 512, while any value less than X results in an
element size of 256. System logger then calculates how many elements are needed to
accommodate the average buffer size, as specified in AVGBUFSIZE, and uses that ratio to
set the initial entry-to-element ratio.
When System Logger first became available, it was vital to code these two values correctly as
System Logger could not dynamically alter the entry-to-element; if you needed to effect the
ratio, you had to delete all log streams associated with this structure, and then delete and
re-define the structure with the desired values. However, all supported releases of System
Logger can now alter this ratio, so it is not as important to code these values. However, as
with most functions that heuristic tune themselves, providing a reasonable initial starting point
hastens the tuning.
MAXBUFSIZE(64000)
Specifies the maximum size of the buffer DFSMStvs can pass to the System Logger when it
issues an IXGWRITE. For a CF-based log stream, this value, along with the value specified
for AVGBUFSIZE, determine the initial entry-to-element ratio for the structure when it is first
allocated. MAXBUFSIZE determines the size of the entries: a value of X or more (I need to
When System Logger first became available, it was vital to code these two values correctly as
System Logger could not dynamically alter the entry-to-element; if you needed to effect the
ratio, you had to delete all log streams associated with this structure, and then delete and
re-define the structure with the desired values. However, all supported releases of System
Logger can now alter this ratio, so it is not as important to code these values. However, as
with most functions that heuristic tune themselves, providing a reasonable initial starting point
hastens the tuning.
For forward recovery and the log-of-logs log streams, you might want to have System Logger
automatically delete data that is older than three days by coding RETPD(3) and
AUTODELETE(YES). However, if you allow System Logger to delete the data, you should
ensure that you are taking back-ups of the associated VSAM data sets at a more frequent
interval to ensure you have all the data needed to reconstruct the data set. For example, if
you only take back-ups every four days, then you should code a retention period of at least 5
(if not 9 to ensure you have two generations of back-ups).
DIAG(YES)
DIAG(YES) should always be specified for IGWLOG and IGWSHUNT. In a case where the
System Logger is unable to locate data requested by Transactional VSAM, a response of
return code 8 with reason code IXGRSNCODENOBLOCK is given. This means backout data
is not available and Transactional VSAM treats it as a fatal error, terminating with a IGW839I
message. In many cases, information from the System Logger address space is needed to
resolve the problem. When DIAG(YES) is specified in the log stream definition, a dump of the
System Logger address space is provided (by the System Logger) in addition to the dump
provided by Transactional VSAM. There is no overhead associated with this parameter
unless a dump is requested. This error is normally seen when Transactional VSAM issues an
IXGBRWSE for backout data or during activity keypoint processing when Transactional
VSAM issues the IXGDELET command to trim the tail of the log stream. It can also be
returned when DFSMStvs initializes and perform an IXGCONN (connect) to connect to the
undo log stream.
HIGHOFFLOAD
The HIGHOFFLOAD parameter, in conjunction with the size of the log stream, has a major
impact on the amount of virtual storage used by the System Logger. For a Coupling Facility
log stream, before data is written to the Coupling Facility, it is written to a buffer in the System
If the HIGHOFFLOAD value is too high, the log stream may fill before offload processing can
free up sufficient space in the log stream. Transactional VSAM is not aware the offload
process is taking place, and continues to write to the log stream. This can lead to an entry or
structure full condition, which causes log writes to be suspended for 3 seconds.
HIGHOFFLOAD should be set at 80 - 85% for all Transactional VSAM log streams.
LOGGERDUPLEX
LOGGERDUPLEX(UNCOND) specifies that System Logger should continue to perform its
own log data duplexing even if the structure is exploiting the System-Managed Coupling
Facility Structure Duplexing function. LOGGERDUPLEX(COND) allows System Logger to
rely on the duplexing of data provided by System-Managed Coupling Facility Structure
Duplexing support, which means that System Logger does not need to maintain its own
version of duplexed data.
Refer to “Defining CF structures - System Logger policy” on page 32 for a discussion on the
values for LOGGERDUPLEX keyword.
LOWFFLOAD
The LOWOFFLOAD value defines the amount of data which may be retained in the log
stream interim storage following an offload process. In the Transactional VSAM environment,
the LOWOFFLOAD value should be high enough to retain the data required for backout but
low enough to keep the number of offloads to a minimum.
LOWOFFLOAD should be set around 60% for IGWLOG, and 0 for IGWSHUNT, forward
recovery log stream and the log-of-logs log stream.
LS_DATACLAS
With this keyword, you can specify the SMS Dataclass that is used for the allocation of offload
data sets. The Automatic Class Selection (ACS) routines can override this value so you
should ensure the desired dataclass is used. In addition to the size of the data set, the
dataclass defines the CI Size for the data set along with the SHAREOPTIONS. Offload data
sets may use a CI size up to 24K; in general, the larger CI size provides better performance,
however, if the log stream consists mostly of log blocks of a much smaller size, the 24K CI
size may be wasteful.
Important: The data class is the only way to specify the SHAREOPTIONS for a data set.
You MUST ensure that all System Logger data sets, including offload data sets, are
allocated with a dataclass that defines SHAREOPTIONS (3,3).
LS_SIZE
LS_SIZE defines the allocation size for the offload data sets. It should be specified large
enough to contain several offloads, possibly a day's worth. IGWLOG and IGWSHUNT should
only offload a minimal amount of data.
For forward recovery log streams, all data is offloaded. It’s very important to specify LS_SIZE
large enough to limit the number of times an additional data set is allocated, to reduce the
exposure to delays during the allocation process. The size to be specified is based on the
amount of data written during the prime processing window of the day. The amount of data
If the extent size of the LS_DATACLAS (or the value specified in LS_SIZE) is too small,
frequent DASD shifts (allocation of a new offload data set) will occur. Frequent DASD shifts
have a negative effect on performance and expose the system to a depletion of the offload
data sets. The number of offload data sets is limited by the DSEXTENT value specified in the
LOGR Couple Data Set. The DSEXTENT value defines the number of logger directory
entries. Each directory can point to a maximum of 168 offload data sets. Prior to OS/390 1.3,
the number of extents was limited to 1; with OS/390 1.3 and above, the number is limited only
by the amount of DASD available.
Attention: If LS_SIZE is not specified in the log stream definition, and an extent size is not
specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member and the default value in ALLOCxx is 2 tracks. For information
about how to change this value, refer to the z/OS MVS Initialization and Tuning Reference,
SA22-7592. Using this default value results in many small offload data sets, which
adversely effects System Logger performance.
OFFLOADRECALL
OFFLOADRECALL should be set to NO for Transactional VSAM log streams. This option
was added via APAR OW48404. With OFFLOADRECALL(NO), System Logger does not
recall an offload data set that was migrated by HSM, but instead, it allocates a new offload
data set. This prevents the System Logger from waiting for the recall and avoids the risk of
Transactional VSAM being unable to write to a log stream which has filled while waiting for
the offload to proceed.
STG_DUPLEX(NO) indicates that System Logger never uses staging data sets, regardless of
the nature of the connection to the structure on which the log stream resides. Since
Transactional VSAM cannot tolerate a loss of data condition on the IGWLOG and
IGWSHUNT log streams, you should not code STG_DUPLEX(NO) for these log streams.
(The one exception to this recommendation is in a test environment where you are willing to
perform a Transactional VSAM cold start after a double failure.)
STG_DATACLAS
With this keyword, you can specify the SMS Dataclass that is used for the allocation of
staging data sets. The Automatic Class Selection (ACS) routines can override this value so
Important: The data class is the only way to specify the SHAREOPTIONS for a data set.
You MUST ensure that all System Logger data sets, including staging data sets, are
allocated with a dataclass that defines SHAREOPTIONS (3,3).
STG_SIZE
STG_SIZE defines the size of the staging data set to be allocated if one is going to be used.
(See the description “STG_DUPLEX and DUPLEXMODE” on page 99 for details on when a
staging data set is used.)
The size of the staging data set (STG_SIZE) must be large enough to hold as much data as
the log stream storage in the Coupling Facility.
Data is written to the staging data set in 4096 byte increments, regardless of the buffer size.
For a Coupling Facility log stream, if you don’t code STG_SIZE or specify STG_SIZE(0), then
System Logger allocates a staging data set as large as the structure to which this log stream
is defined; this ensures that the staging data set is not too small compared to the size of the
structure. Also, if you increase the size of the structure, the next time the staging data set is
allocated, System Logger allocates a larger staging data set.
On the other hand, sometime this might waste DASD storage space since logger doesn’t
know how many connectors will share the log stream, it always allocate a staging data set as
big as the coupling facility structure size and this might be too much. For this reason, it is
suggested that you monitor the staging data set configuration through the IXGRPT1 report.
STRUCTNAME
This keyword defines the structure, which must be already defined in the System Logger
Policy and which must exist in the active CFRM policy before a connection to this log stream
is made, in which the data for this log stream resides.
Multiple log streams can use the same structure, or you can dedicate a given structure to a
single log stream.
Note: When grouping log streams onto the same structure, you should ensure that all the
log streams have similar characteristics. You want the arrival rate of the data along with
the average log block size and the maximum buffer size to be the same. You should NOT
place IGWLOG and IGWSHUNT log streams in the same structure since those two log
streams have such different characteristics. However, it may be appropriate to group
several IGWLOG log streams into one structure.
Example 3-8 Defining DASD-only log streams in the System Logger Policy
//DASDONLY JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID.
//LOGRPOL EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/*
DASDONLY(YES)
This is how yo identify a log stream as DASD-only. You cannot code STG_DUPLEX,
DUPLEXMODE or LOGGERDUPLEX; you can only code this keyword.
DIAG(YES)
DIAG(YES) should always be specified for IGWLOG and IGWSHUNT. In a case where the
System Logger is unable to locate data requested by Transactional VSAM, a response of
return code 8 with reason code IXGRSNCODENOBLOCK is given. This means backout data
is not available and Transactional VSAM treats it as a fatal error, terminating with a IGW839I
HIGHOFFLOAD
The HIGHOFFLOAD parameter, in conjunction with the size of the log stream, has a major
impact on the amount of virtual storage used by the System Logger. For a Coupling Facility
log stream, before data is written to the Coupling Facility, it is written to a buffer in the System
Logger data space. If staging data sets are used, the data is written to the Coupling Facility
first, and then written to the staging data set, rather than the data space.
If the HIGHOFFLOAD value is too high, the log stream may fill before offload processing can
free up sufficient space in the log stream. Transactional VSAM is not aware the offload
process is taking place, and continues to write to the log stream. This can lead to an entry or
structure full condition, which causes log writes to be suspended for 3 seconds.
HIGHOFFLOAD should be set at 80–85% for all Transactional VSAM log streams.
LOWFFLOAD
The LOWOFFLOAD value defines the amount of data which may be retained in the log
stream interim storage following an offload process. In the Transactional VSAM environment,
the LOWOFFLOAD value should be high enough to retain the data required for backout but
low enough to keep the number of offloads to a minimum.
LOWOFFLOAD should be set around 60% for IGWLOG, and 0 for IGWSHUNT.
LS_DATACLAS
With this keyword, you can specify the SMS Dataclass that is used for the allocation of offload
data sets. The Automatic Class Selection (ACS) routines can override this value so you
should ensure the desired dataclass is used. In addition to the size of the data set, the
dataclass defines the CI Size for the data set along with the SHAREOPTIONS. Offload data
sets may use a CI size up to 24 K. In general, the larger CI size provides better performance,
however, if the log stream consists mostly of log blocks of a much smaller size, the 24 K CI
size may be wasteful.
Important: The data class is the only way to specify the SHAREOPTIONS for a data set.
You must ensure that all System Logger data sets, including offload data sets, are
allocated with a dataclass that defines SHAREOPTIONS (3,3).
LS_SIZE
LS_SIZE defines the allocation size for the offload data sets. It should be specified large
enough to contain several offloads, possibly a day's worth. IGWLOG and IGWSHUNT should
only offload a minimal amount of data.
If the extent size of the LS_DATACLAS (or the value specified in LS_SIZE) is too small,
frequent DASD shifts (allocation of a new offload data set) will occur. Frequent DASD shifts
have a negative effect on performance and expose the system to a depletion of the offload
data sets. The number of offload data sets is limited by the DSEXTENT value specified in the
Attention: If LS_SIZE is not specified in the log stream definition, and an extent size is not
specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member and the default value in ALLOCxx is two tracks. Refer to the
z/OS MVS Initialization and Tuning Reference, SA22-7592. Using this default value results
in many small offload data sets, which adversely effects System Logger performance.
OFFLOADRECALL
OFFLOADRECALL should be set to NO for Transactional VSAM log streams. This option
was added via APAR OW48404. With OFFLOADRECALL(NO), System Logger does not
recall an offload data set that was migrated by HSM, but instead, it allocates a new offload
data set. This prevents the System Logger from waiting for the recall and avoids the risk of
Transactional VSAM being unable to write to a log stream which has filled while waiting for
the offload to proceed.
STG_DATACLAS
With this keyword, you can specify the SMS Dataclass that is used for the allocation of
staging data sets. The Automatic Class Selection (ACS) routines can override this value so
you should ensure that desired dataclass is used. In addition to the size of the data set, the
dataclass defines the CI Size for the data set along with the SHAREOPTIONS. Staging data
sets must use a CI size of 4 K.
Important: The data class is the only way to specify the SHAREOPTIONS for a data set.
You must ensure that all System Logger data sets, including staging data sets, are
allocated with a dataclass that defines SHAREOPTIONS (3,3).
STG_SIZE
STG_SIZE defines the size of the staging data set to be allocated. For DASD-only log
streams, staging data sets are always used.
Data is written to the staging data set in 4096 byte increments, regardless the buffer size.
The rule of thumb is it must be large enough to hold the data written during an activity
keypoint interval, plus the length of time of the longest running unit of work.
Attention: If STG_SIZE is not specified in the log stream definition, and an extent size is
not specified in the data class pointed to by STG_DATACLAS, the value is taken from the
ALLOCxx Parmlib member and the default value in ALLOCxx is 2 tracks. Refer to the z/OS
MVS Initialization and Tuning Reference, SA22-7592.
A staging data set with a size of only 2 tracks has an adverse effect on the performance of
a DASD-only log stream.
You should monitor the SMF 88 records (using either the sample program IXGRPT1 or
IXGRPT1J to format that data) to ensure that the staging data sets are properly sized.
The easiest way to grant DFSMStvs access to its log streams is to assign the RACF attribute
of PRIVILEDGED or TRUSTED to the VSAM RLS server address space, which is called
SMSVSAM. With either of these attributes, most RACROUTE REQUEST=AUTH requests are
deemed successful without performing any checks and the SMSVSAM address space can
access its log streams without any additional profiles.
If SMSVSAM is not given the PRIVILEDGED or TRUSTED attribute, then the user ID
associated with the SMSVSAM address space must have UPDATE access to all the log
streams that DFSMStvs uses.
All log streams are protected by profiles in the LOGSTRM class, and if you use a good
naming convention for all your log streams, you can protect the log streams with a few generic
profiles. For example, the undo log streams start with a given pattern of IGWTV&tvsname
(where &tvsname is defined in IGDSMSxx and is a number in the range of 001 to 999). First
you want to ensure that no unexpected programs can access the log streams by defining a
profile in the LOGSTRM class with universal access of NONE. For an instance of DFSMStvs
with a suffix of 001 that is assigned a user ID of smsvsam_userid, the definition of the profile
looks like that shown in Example 3-9.
Example 3-9 Defining the generic profile to protect the undo log streams
RDEFINE LOGSTRM IGWTV001.** UACC(NONE)
Now you must grant the SMSVSAM address space UPDATE access to that profile, as shown
in. Example 3-10
Example 3-10 Granting access to the undo log streams to the DFSMStvs user ID
PERMIT IGWTV001.** CLASS(LOGSTRM) ACCESS(UPDATE) USERID(smsvsam_userid)
The forward-recovery log streams and the log-of-log log stream must be protected in a similar
fashion. However, in addition to the user ID associated with the SMSVSAM address space,
the user ID of all the forward recovery products need at least READ access (and UPDATE if
they are to perform the log-tail trimming for the log streams). If all the forward recovery log
streams start with the same prefix of FORWARD, the name of the log-of-logs log stream is
LOG.OF.LOGS and the user ID associated with the forward recovery program (like CICSVR)
is rebuild_userid, the definition of the profiles and the PERMITs might look like that shown in
Example 3-11.
Example 3-11 Profiles for protecting forward recovery and log-of-log log streams
RDEFINE LOGSTRM FORWARD.** UACC(NONE)
RDEFINE LOGSTRM LOG.OF.LOGS UACC(NONE)
PERMIT FORWARD.** CLASS(LOGSTRM) ACCESS(UPDATE) USERID(smsvsam_userid)
PERMIT FORWARD.** CLASS(LOGSTRM) ACCESS(UPDATE) USERID(rebuild_userid)
PERMIT LOG.OF.LOGS CLASS(LOGSTRM) ACCESS(UPDATE) USERID(smsvsam_userid)
PERMIT LOG.OF.LOGS CLASS(LOGSTRM) ACCESS(UPDATE) USERID(rebuild_userid)
To perform peer-recovery, one Transactional VSAM instance might have to access the log
streams from another instance of Transactional VSAM. To allow this access with the fewest
number of security profiles, we recommend that you associate the same user ID with each
instance of the SMSVSAM address space.
If System Logger should fail after Transactional VSAM initializes, Transactional VSAM does
not detect the loss of System Logger until the next request for Transactional VSAM services
comes from a batch job. At that point, Transactional VSAM issues the following error
messages (Example 3-12).
Example 3-12 Messages from DFSMStvs when it detects System Logger is gone
IGW839I 05012003 08.15.09 AN ERROR OCCURRED DURING SYSTEM LOGGER
OPERATION IXGWRITE FOR SYSTEM LOG STREAM
IGWTV002.IGWLOG.SYSLOG.
SYSTEM LOGGER RETURN CODE 00000008 REASON CODE 00000890
forward recovery log stream Transactional VSAM fails the open of the data set
You can also get more detailed information about a single log stream (or all log streams)
using the D SMS,LOG command. You can either specify the name of a specific log stream or
use the keyword ALL, which results in information for ALL log streams known to all instances
of Transactional VSAM within the sysplex. Example 3-14 is the output from the display
request against a single log stream using D SMS,LOG(IGWTV002.IGWLOG.SYSLOG).
Since Transactional VSAM cannot delete any log blocks that contain data associated with the
oldest unit of recovery, you can use this command to determine which UR from which batch
job is preventing Transactional VSAM from pruning the tail of the undo log stream.
Unfortunately, short of taking a dump of the IXGLOGR address space, there is no way to
determine how long a given offload event takes to complete.
3.4 Recovery
In this section, we discuss how Transactional VSAM reacts to failures that might happen in
the logger environment.
First of all, Transactional VSAM only recognizes that there are missing data on the IGWLOG
and IGWSHUNT log stream because these are the only log streams where TVS retrieves
data from. If any data is lost on the log-of-logs or in any of the forward-recovery log, TVS will
not detect it. It is CICSVR or similar that sees the missing data condition asynchronously from
the time that the problem occurred.
The impact of having missing data in the log-of-log will not be so dramatic. It only affects
performance during the CICSVR operations. DFSMStvs continues to function without this log
stream.
For a forward-recovery log stream, a missing data condition prevents the possibility to
reconstruct the file by applying these change to the image copy. DFSMStvs closes the data
set. To recover the condition, you need to close all the data sets associated with that log
stream, delete the log stream, take a data sets backup, define the log stream and e-open the
data sets.
In the first case, you will see message IGW838I to inform you of the delay but this situation
should also resolve as soon as data gets offloaded to DASD. If you see this message very
often, you should re-evaluate your logger configuration and ensure it is tuned properly.
The permanent condition, where the log stream is completely full, can happen in the following
situations:
When there is no more space on the DASD pool to allocate space for the next offload data
set
When the DSEXTENT has been saturated
If this situation happens against either the IGWLOG or IGWSHUNT log stream, Transactional
VSAM cannot continue and it will come down. The following are the syslog messages
generated in this scenario. While Transactional VSAM is down, system logger will keep an
internal connection to the log stream to preserve the copy of the data that cannot be
If this situation happens against a forward-recovery log stream, Transactional VSAM closes
the data set(s) associated with the log stream since it cannot process the log data.
If this happens against the log-of-logs log stream, Transactional VSAM disables the use of
the log stream but it continues to function.
3.4.3 CF failures
In case of a coupling facility failure or a connectivity to a coupling facility failure, system
logger detects the loss of connectivity to the single instance of the structure. Then the system
that recognized the failure condition initiates a rebuild for the structure, according to the
PREFLIST specified in the structure definition for the CFRM policy.
While the recovery is taking place, Transactional VSAM will not be able to access the log
streams being rebuilt and receives return code 861 temporary unavailable from system
logger. This situation should resolve as soon as the rebuild completes and the log stream is
When the system logger address space, Transactional VSAM automatically restarts and
reconnects to the log streams. Example 3-19 is a syslog of the scenario.
For the in-flight requests, retained locks are generated against the records that were held by
that unit of works. Refer to DFSMStvs Planning and Operating Guide, SC26-7348-00, to
understand how to resolve a situation with retain locks.
3.5 Performance
After your initial log streams allocation, performance data is produced in a number of forms
that can be useful to determine if any adjustments are necessary to your installation:
SMF 88 data produced by the MVS System Logger
SMF 70-78 data produced by various MVS components
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70 -78 records
Transactional VSAM log streams are both funnel and active log streams. For the active log
streams, the Undo log set, Transactional VSAM will take care of maintaining currency of data
within the log streams. For this reason, after an accurate tuning, we should see that offload
are eliminated or minimized for these log streams.
On the other log streams, forward-recovery and log-of-logs, Transactional VSAM does not
provide any mechanism for maintaining the currency of the data. For these reasons, on these
log streams, a large amount of data is expected and so offloads are expected as part of a
normal process.
There are some fields in the SMF88 that you might want to check against the active log
streams to determine if they are tuned properly: DASD SHIFT, STRUCTURE FULL, ENTRY
FULL and OFFLOAD.
As regard to the funnel type log streams, you should check the fields DASD SHIFT,
STRUCTURE FULL, ENTRY FULL and SC1/2/3 in the SMF88 for this particular log stream.
Refer to the 8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291 for a
description of these fields and what to do in case one of these conditions happens in your
installation.
If you are running Transactional VSAM with CICS, there is no effect on CICS logging for
DFHLOG and DFHSHUNT. There should be minimal impact for the log-of-logs and for the
forward recovery logging since they are funnel-type log streams. Mainly, you should ensure
that there is enough space on the DASD pool for the offload data sets, since the volume of
data is probably going to increase.
Within this chapter, we will use the term IMSplex to refer to one or more IMS systems and
associated address spaces running in a Parallel Sysplex with data sharing and shared
queues. The term shared queues group refers to those IMS control regions that are sharing
the message queues.
Figure 4-1 shows a high level view of the IMS components required for two IMSs to share a
common set of message queues.
EMHQ EMHQ
CHKPT MSGQ MSGQ CHKPT
CHKPT CHKPT
MSGQ EMHQ
SRDS1 SRDS1
CQS is responsible for the integrity of these queues - not IMS. When you are not using shared
queues, IMS recovers local message queues by using a copy of the message queues on the
IMS logs (for example, a SNAPQ or DUMPQ) and then applying later-logged changes to that
copy. When you are using shared queues, CQS follows an equivalent process. A copy of the
contents of the shared queues structure is written periodically to a data set called the
Structure Recovery Data Set (SRDS). Changes to the shared queues are logged by CQS.
However, CQS does not have its own internal logger like IMS does. Instead, CQS uses the
System Logger to log updates to the shared queues. Until CQS has successfully logged
these changes, no updates are made to the shared queue structure.
There are two SRDSs for full function and two for Fast Path EMH. This provides CQS with a
way to recover the structures even if the most recent SRDS is unusable for some reason.
However, this also means that CQS must keep all the log records back to the oldest structure
checkpoint.
Each structure checkpoint uses the older of SRDS1 and SRDS2. When it completes
successfully, CQS issues a call to the System Logger to delete those log records which are
older than the older of the two SRDSs. By taking frequent structure checkpoints, you can limit
the amount of log data kept by the System Logger in the log stream. We’ll address this in
more detail later in this chapter.
Note that, no matter which CQS invokes structure checkpoint, the same set of SRDSs are
used. A method of serialization is provided to prevent two CQSs from taking a structure
checkpoint at the same time.
Chapter 4. IMS Common Queue Server and the System Logger 115
start. There is, however, no loss of message queue integrity, and no loss of messages,
unless IMS is also cold started (COLDCOMM) since IMS has enough information on its logs
to resynchronize the queues.
Primary structure
This is the only shared queue structure that is always required in a shared queues group. It is
implemented as a list structure and is the primary repository for IMS full function messages
(and some control information). Within this structure there are list headers for input
transactions, output messages, remote MSC destinations, and several special purpose list
headers which are not of interest here.
In normal operation, there typically will be very few messages in the primary structure.
Messages only reside in the structure for the life of the transaction. As soon as the
transaction completes, the messages will be deleted.
Overflow structure
This list structure is optional. If it is defined, it is used to prevent the primary structure from
filling up. Individual queues (for example, a queue of messages to a printer which is out of
paper) may get long and utilize a lot of space in the structure. These queues are identified by
CQS and moved from the primary structure to the overflow structure, reclaiming space in the
primary structure and allowing normal processing to continue. Any more messages for those
queues are put directly on the queues in the overflow structure instead of the primary
structure. If the overflow structure fills up, only those queues in the overflow structure are
affected.
System Logger
As already mentioned, CQS does not have its own internal logger. It uses the services of the
System Logger (IXGLOGR) to log any changes to the shared queue structures. The System
Logger is a component of z/OS and executes in a single address space in each z/OS image.
All users of System Logger services (for example, CQS) in a system communicate with the
same Logger address space. When CQS wants to write a log record for a shared queue
structure change, it issues an IXGWRITE request to the System Logger, which then
externalizes the log record to the log stream identified on the write request. In an IMS shared
queues environment, this log stream always exists in a logger structure in the Coupling
Facility. In order to allow the sharing of the log streams across multiple z/OS images, CQS
does not support the use of DASD-only log streams.
Details of the System Logger can be found in Chapter 2, “System Logger fundamentals” on
page 7, and in z/OS MVS Setting Up a Sysplex, SA22-7625.
Each System Logger instance has its own staging data set or data space in which it keeps a
copy only of what that System Logger put in the structure. However, if there is only one CQS
active in the shared queues group, or only one is generating a significant amount of log data,
the log data will have been written by one System Logger, so the staging data set size
Chapter 4. IMS Common Queue Server and the System Logger 117
(defined in the LOGR policy) should be large enough to hold all the log records in the
structure. Because of the way space is used in the staging data set, the data set should be
much larger than the structure.
When sizing the logger structure (defined in the CFRM policy) and the offload data sets
(defined in the LOGR policy), you must allow for enough space in the log stream to contain all
the log record entries since the older structure checkpoint. The size of the structure
determines how frequently the System Logger will offload, but the size of the offload data sets
determines how much data can exist in the log stream.
L o g s trea m in c lu d e s a ll lo g d a ta n ee d e d to re c o ve r a s tru c tu re
Lo g rec o rd s o ld er th an o ld es t S R D S are d e le te d
L o g g e r stru c tu re c a n n o t b e la rg e e n o u g h to h o ld c o m p le te lo g s tre am
F o r e xam p le , 1 0M tra n sa ction s @ 2 K lo g da ta = 2 0 G B
M u st re ly o n offlo a d p ro ce ss
N ew e st LO G S T R E A M O lde st
C u rre n t
S ta g in g LO GR 5 4 3 2
D ata S ets S TR U C T
6 In U se 1 0
D a ta
N e xt D e le te d
S pa ce s (a v a ila b le )
The log stream shown in Figure 4-2 currently exists in the structure and four offload data sets.
The next offloads will complete filling offload data set “5” and then allocate number “6”. Data
sets “0” and “1” contain data that has been logically deleted, however the data sets will not be
physically deleted until the System Logger goes through allocation processing for a new
offload data set. There can be only 168 offload data sets allocated at one time, although the
sequence numbers in the data set names do not reset to “0”.
Message logging
Figure 4-3 shows how message and log data flow during the receiving and enqueuing of an
IMS input transaction. Similar functions occur for output messages. Every activity that
changes the shared queue structure is logged by CQS.
3b 3a
LOG
MSGQ Structures MVS
LOG
Staging
LOG
Data Set
EMHQ Structures
From other
systems
Chapter 4. IMS Common Queue Server and the System Logger 119
Shared log stream
There are multiple IMSs and multiple CQSs in a shared queues group. But there is only one
shared queue structure, and therefore only one log stream with updates to that shared queue
structure. Every CQS in the IMSplex must use the same log stream. Each CQS writes update
log records to that log stream and the System Loggers interleave those log records on the log
stream in the order in which they are received—that is, in time sequence.
Log writes
Figure 4-4 shows how log records are interleaved on the log stream by the System Logger in
the order in which they are written by the CQS clients.
CQSA CQSB
System
Logger
System
Logger
A B B A A B A A Next
Merged Log Stream
Figure 4-4 Shared log stream
1
1
2 MSGQ
CQSA
2
1
SRDS System
Logger
A B B A A B A A
Merged Log Stream
Log records
In a shared queues environment, both IMS and CQS create log records with similar functions.
For example, IMS logs an input message in a type x’01’ log record, and an output message in
a type x’03’ log record. When IMS requests CQS to put either type message on the shared
queue, CQS logs it as a type x’07’ log record. When IMS deletes a message from its local
queues, it writes a type x’36’ log record. CQS writes a x’0D’ log record when it deletes a
message from the shared queue. Both IMS and CQS logging occur in a shared queues
environment.
Chapter 4. IMS Common Queue Server and the System Logger 121
Log record types
There are 13 CQS log record types, each with one or more subtypes, that CQS uses to
manage itself and the message queue structures. For a description of the CQS log record
types, see IMS Common Queue Server Guide and Reference, SC27-1292. The CQS log
record DSECTs can be obtained by assembling macro CQSLGREC TYPE=ALL from
SDFSMAC (IMS macro library). For the IMS log record DSECTs, assemble macro ILOGREC
RECID=ALL in the same library. A description of these log records can be found in IMS V8
Diagnosis Guide and Reference, LY37-3742.
3
MSGQ Structures
EMHQ Structures 2
1 Dynamically
MVS
Offload allocated when
LOG
EMHQ Logger Structure Data Sets needed.
When the System Logger detects that the logger structure has reached the highoffload
threshold, it reads enough log records from the log stream to reduce the logger structure
utilization to a user-defined lowoffload threshold. Before deleting them (freeing up the space
in the structure), they are written to one (or more) DASD logger offload data sets. They will
also be deleted from the duplex copy (data space or staging data set).
Chapter 4. IMS Common Queue Server and the System Logger 123
4.1.5 Importance of the log stream data
Unlike other subsystems like CICS, CQS only requires the log stream to recover the shared
queue structure if it fails (structure failure, Coupling Facility failure, or loss of connectivity from
all systems). It may be used by CQS to restart, but it is not required. If the logger structure
fails, or becomes full, or an IXGWRITE request to the System Logger fails, CQS immediately
initiates a structure checkpoint, eliminating the need for any log records. Of course CQS
cannot perform any more shared queue structure services until the log stream is available,
but there is no loss of message queue data unless there is a double failure - that is, if both the
log stream and the shared queue structure fail at the same time. Even though the System
Logger has its own means of log stream recovery, it is usually wise to keep the two structures
on different Coupling Facilities to avoid a single point of failure.
Note that there is only one CQSSGxxx global PROCLIB member in the shared queues group.
All CQSs use the same member (or members which are identical). The LOGNAME
parameter must match the LOGSTREAM NAME parameter in the LOGR policy.
The meanings of these parameters are briefly described below with considerations for CQS
and IMS shared queues. For a more complete description of the parameters themselves, see
Chapter 2, “System Logger fundamentals” on page 7, and z/OS MVS Setting Up a Sysplex,
SA22-7625.
NAME
Defines the name of the CFRM policy. This policy must be active for the definitions to be
effective. The CFRM policy is activated using the command:
SETXCF START,POLICY,TYPE=CFRM,POLNAME=POLICY1
INITSIZE
This is the initial size of the structure, in 1 KB increments. Since this structure will almost
always become full before a structure checkpoint is taken, the actual size does not matter
too much. Eventually, all log records in the structure will have to be offloaded regardless of
the size. A smaller structure means that less memory is needed in the Coupling Facility
and in the central processor (CPC) to duplex the structure in a data space. If you have
memory constraints, making it smaller will require more frequent offloads, but have little
effect on the overall performance. Making it larger will reduce the number and frequency
of offloads, but in the end, the same amount of data will be offloaded. You might also use
a target offload frequency (for example, once every 30–60 seconds during peak
transaction volumes) to set the size and HIGHOFFLOAD values (described below). A 50
MB logger structure size is suggested as a reasonable size at which to begin. If the
structure needs to be made larger to reduce the number of offload processes, the
structure size can be altered up to its maximum size set using a SETXCF START,ALTER
command.
SIZE
This is the maximum size to which the structure can be altered without updating the
CFRRM policy and rebuilding the structure. Note that, unlike CQS and the message
queue structures, the System Logger does not alter the size of the structure from its
current size. It must be done by the user using the command:
SETXCF START,ALTER,STRNM=structure-name,SIZE=new-size
DUPLEX
Indicates whether the structure may be duplexed, using System-Managed Duplexing, for
availability. ENABLED means that the structure is automatically duplexed when it is
allocated. ALLOWED means that it is not done automatically by XES, but can be turned on
by the operator if desired. Duplexing of the logger structure can have significant
Chapter 4. IMS Common Queue Server and the System Logger 125
performance consequences. See the performance section later in this chapter for more
information. The following command may be used to enable duplexing:
SETXCF START,REBUILD,DUPLEX,STRNAME=MSGQ.LOGR.STRUCTURE
ALLOWAUTOALT
Indicates whether the system may automatically alter the structure size or
entry-to-element ratio. This should always be set to NO for logger structures, since the
System Logger monitors and alters the structure attributes itself. Allowing the system to
automatically alter the structure size may produce undesired results.
REBUILDPERCENT
Indicates that if connectivity to the structure is lost by more than this percentage, it should
be rebuilt on another Coupling Facility where the connectivity is better. This should be set
to 1 (percent) or allowed to default so that it will always be rebuilt on another Coupling
Facility if connectivity from one of the systems fails.
PREFLIST
Identifies the Coupling Facilities which are candidates to contain this structure. For rebuild
or duplexing to work, there must be at least two.
EXCLLIST
Requests that the structure not reside on the same Coupling Facility as the structure(s)
named in the parameter. We recommend that you put the logger structure on a different
Coupling Facility than the shared queue structure to avoid a single point of failure. This
does not prevent the logger structure from being allocated on the same Coupling Facility if
there is no other CF available.
Note that there is nothing in this definition to indicate that the structure is a list structure, or
that it is to be used by the System Logger (unless you interpret this from its name). The name
(MSGQ.LOGR.STRUCTURE) must match the name defined in the LOGR policy.
DEFINE LOGSTREAM
NAME(MSGQ.LOG.STREAM)
STRUCTNAME(MSGQ.LOGR.STRUCTURE)
HLQ(IMSPLEX0)
STG_DUPLEX(YES)
STG_SIZE(50000)
STG_DATACLAS(STAGING)
DUPLEXMODE(COND)
LOGGERDUPLEX(COND)
LS_SIZE(256000)
LS_DATACLAS(OFFLOAD)
It is important that the LOGR structure be defined in the (active) CFRM policy before the
LOGR policy is updated to contain your new log streams. It is also necessary to define, in the
LOGR policy, the logger structure first and then the log stream. The following are short
descriptions of the parameters in the LOGR policy. For a more complete description, see
Chapter 2, “System Logger fundamentals” on page 7 and z/OS MVS Setting Up a Sysplex,
SA22-7625.
DEFINE STRUCTURE
You must define the logger structure to be used by the log stream. The following parameters
are used by the System Logger to set some of the characteristics of the logger structure when
it is first allocated (first connect time). Not all possible parameters are shown in this example.
STRUCTNAME
This name must match the name in the CFRM policy and in the log stream definition to
follow.
AVGBUFSIZE
This parameter is the average size of a (CQS) log record and is used by the System
Logger to set the initial entry-to-element ratio. Only a few CQS log records log the content
of the message. Many only log the fact that a message has been read and moved to
another queue, or has been deleted. Some log system events, like structure checkpoint
started or ended. Most of these other log records tend to be small but numerous and can
make the average size of a log record small. This is a difficult number to predict but the
good news is that the System Logger will monitor this ratio every 30 minutes and adjust
the ratio if necessary. If you are already running shared queues in production or test (with
transactions similar to production) you may use the logger utility (IXCMIAPU) report
function or the IXGRPT1 program to find the average buffer size. If this information is not
available, we recommend that you set this value to 512 (bytes) and let the System Logger
adjust it if necessary.
MAXBUFSIZE
This value determines the maximum size log record that can be written to the log stream.
It also determines the size of the data elements in the structure. Any value less than or
equal to 65276 will cause the System Logger to allocate the structure with 256-byte data
elements. Values over this will result in 512-byte data elements and should be avoided
(waste of space). For IMS full function or fast path EMH, there is no reason to specify any
value other than 65276.
LOGSNUM
This determines how many log streams can share the LOGR structure. For CQS, this
number should always be one. You should not share a LOGR structure with both the full
function and fast path EMH log streams. Their usage of structure resources is likely to be
very different.
Chapter 4. IMS Common Queue Server and the System Logger 127
DEFINE LOGSTREAM
The following parameters define the characteristics of the log stream. Not all possible
parameters are shown in this example.
NAME
This is the name of the log stream. It is the only name known to CQS and must be the
same as the LOGNAME parameter in CQSSGxxx.
STRUCTURENAME
This is the name of the logger structure that this log stream will reside in. It must be the
same as the name defined in the DEFINE STRUCTURE command in this LOGR policy,
and must have been defined in the CFRM policy.
HLQ
Defines a high level qualifier for the log stream offload data set names and the staging
data set names. In the above example, the staging data set name and the offload data set
names will have a high level qualifier of IMSPLEX0.
STG_DUPLEX
This determines whether the interim log stream will be duplexed to a staging data set or to
a data space. Duplexing to a data space is generally the most desirable from a
performance perspective. However, staging data sets may be necessary for highest
availability, especially with ICFs or with DASD mirroring. With Internal Coupling Facilities
you probably want to specify STG_DUPLEX(YES) and DUPLEXMODE(COND). For a
DASD mirroring environment, you would specify STG_DUPLEX(YES) and
DUPLEXMODE(UNCOND).
STG_SIZE
The System Logger will always duplex the log stream, but you have the choice of whether
to duplex it in a data space or on DASD in a staging data set. This parameter sets the size
of the staging data set in 4 KB increments. Because of the way space is used in the
staging data set (see 8.2.2, “Sizing interim storage” on page 275), this should be several
times the size of the structure to avoid unnecessary offloads, and to allow maximum use of
the allocated structure size. Note that the structure size specified in the CFRM policy is in
1KB increments.
STG_DATACLAS
This parameter specifies the name of the SMS data class that is to be used when
allocating the staging data set. Staging data sets should have VSAM share options set to
(3 3), so the data class specified on this parameter should have those share options
specified. Additionally, the CI Size must be 4 KB.
DUPLEXMODE
This parameter is used when STG_DUPLEX(YES) is set and determines the conditions
under which the log stream should be duplexed to the staging data sets.
DUPLEXMODE(COND), for conditional, means to use the staging data sets only if the
system’s connection to the Coupling Facility contains a single point of failure. A single
point of failure exists if the CF is volatile (no power backup) or if it resides on the same
CPC as the z/OS system connecting to it. We recommend setting this value to COND,
which will use the staging data sets only if the data space and the structure are failure
dependent unless you are using DASD mirroring, in which case you would want
UNCOND.
LOGGERDUPLEX
This parameter determines whether the System Logger will use its own duplexing method
(staging data set or data space) if the structure is being duplexed in the Coupling
Facilities. COND means that if the structure is duplexed, and the two structure instances
Chapter 4. IMS Common Queue Server and the System Logger 129
There are other parameters that can be specified in the LOGR policy, but most are not of
interest to CQS or are determined by installation standards. Even some of the above may be
determined by installation standards.
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
Where ‘xxxx’ is zero or more parameters defining the output of the command. This command
does not display the current utilization statistics of the log stream. It just tells you the status of
“Printing the log stream” on page 122 shows a sample job that can be used to print the log
stream itself. All normal DFSERA10 control statements apply.
While the structure checkpoint relieves the shortage, it will have a temporary impact on the
availability of the log stream and CQS will not be able to process any IMS PUT requests until
the structure checkpoint is complete and CQS has deleted the tail of the log stream. To avoid
this problem, you can run the IXCMIAPU utility periodically to determine how many offload
data sets are in use. If you find that the number of offload data sets is close to 168, you
should either increase the size of the offload data sets (LS_SIZE parameter) so that you don’t
need so many offload data sets, or format a new LOGR CDS with a larger DSEXTENT value,
which will allow you to have more than 168 offload data sets.
Example 4-6 shows a sample job that will let you monitor the log stream offload data set
usage. The output of this job reports information about the log streams and the logger
structure itself. Among other information, it tells you exactly how many offload data sets are
currently in use. It also provides structure information, such as what average buffer size was
specified and what the effective buffer size really is. In this example, the System Logger will
have changed the entry-to-element ratio.
Chapter 4. IMS Common Queue Server and the System Logger 131
In the beginning, you should do this often enough to get an idea of how long it takes to fill an
offload data set during peak processing periods. You can use this information to adjust the
size of your offload data sets (LS_SIZE) and your structure checkpoint frequency.
4.4.1 Non-zero return and reason codes from the System Logger
When the System Logger returns a non-zero return code to a CQS request, the reason code
indicates the problem. Messages issued by CQS are described in 4.4.2, “Important
messages” on page 133. CQS can take one of the following actions, based on the reason
code and whether CQS thinks this is a problem that will soon be resolved:
Wait for the System Logger to correct the problem and issue an ENF48 signal. When CQS
gets the ENF48, it continues processing. No messages are issued by CQS. This occurs
under the following conditions. The reason code returned to CQS is in parentheses after
the reason text below, in case you want to explore this further.
– Log stream structure full. Offload in progress (860)
– Logger CF rebuild in progress (861)
– Logger structure rebuild in progress (862)
– Logger structure or CF failed (863)
– No connectivity to CF (864)
– Staging data set full (865)
– System Logger address space initializing (891)
If the System Logger is not available (890) when CQS tries to connect, or becomes
unavailable after CQS has already connected, CQS will issue a message (CQS0350W)
and wait for the System Logger to start and send an ENF48 signal.
If CQS receives a bad return and reason code from an IXGWRITE request, it will issue a
message indicating the reason, take a structure checkpoint, and continue processing. The
possible causes are:
– Loss of data in the log stream (405)
– Possible loss of data in the log stream (407)
If CQS receives a bad return and reason code from an IXGCONN (connect) request, it will
issue a message (CQS0350W) indicating the reason, and then take some action
depending on the error as follows:
– Possible loss of data (407)
CQS abends with a U0014
– DS directory full (408) or previous offload error (409)
CQS takes a structure checkpoint and continues processing
If CQS gets a bad return code and reason code during IXGBRWSE (read) processing for
structure rebuild, CQS aborts the rebuild and issues message CQS0354E. Since this is
usually done only for structure recovery, you may have to redefine and reinitialize the
structure.
CQS log connect DS directory full - or - CQS log connect previous offload error
CQS takes a structure checkpoint and issues a delete call to the System Logger to delete log
records no longer needed for recovery, and continues processing.
CQS log write loss of data - or - CQS log write possible loss of data
CQS takes a structure checkpoint and continues processing. The structure checkpoint
establishes a recovery point for the shared queue structure that will not require the (possibly)
lost data.
Chapter 4. IMS Common Queue Server and the System Logger 133
CQS0354E LOG READ FAILED, LOG RECORD COUNT count
Count is the number of records read before the error
This message indicates CQS log stream read processing failed. If it occurs during CQS
initialization, then CQS will abend with a U0018. If it occurs during structure rebuild, then
rebuild will terminate. This could mean the message queue structure it was trying to rebuild is
unusable and may have to be deleted and reinitialized.
There are several considerations for CQS with respect to the System Logger. One of the key
items is the impact of a structure checkpoint, and therefore how often one needs to be taken.
A second key item is the use of the logger staging data sets or duplexing of the logger
structure, and how they could impact throughput and response times.
Before a structure checkpoint can be taken, all access to the shared queue structure must be
temporarily quiesced, meaning that the CQS address spaces will not process any message
traffic to or from IMS. Since only one of the CQSs performs the structure checkpoint, it is
necessary for that CQS to notify others to quiesce, and then to know that they have done so.
This process is done by updating the CFRM CDS (using the IXLUSYNC macro) and requires
several I/Os per CQS1. This is what typically takes the most time for the structure checkpoint
process, since it must be done to quiesce operations, and then again to resume them after
the checkpoint is complete. The actual reading of the message queues into the data space is
normally quite fast, but of course will depend on how many messages are actually in the
structure when the checkpoint is taken. The writing of the data to the SRDSs is
asynchronous, and therefore does not affect the amount of time the CQSs are quiesced for.
There can be a measurable impact to IMS service every time a structure checkpoint is taken,
so you do not want to do this too frequently. This impact could be as short as a few
milliseconds, or as long as a few seconds, depending on several factors such as the number
of CQS address spaces and the speed of the DASD. On the other hand, you do not want to
have so many DASD volumes worth of data that a recovery of the shared queues structure
would take a prohibitive amount of time. These factors must be carefully weighed in your
environment to establish what is reasonable for your installation. z/OS 1.8 provides an
enhancement called CFRM Performance Enhancement Stage 2, which should be enabled to
provide optimum performance for the structure checkpoint process.
1
The CFRM performance enhancement in z/OS 1.8 significantly reduces the number of requests to the CFRM CDS
for this processing, and is expected to result in a sizeable improvement in structure checkpoint time.
At this logging rate, you will generate 7.2 GB of log stream data per hour. Since you will have
all the log data for two structure checkpoint intervals, plus more to allow for the asynchronous
deletion of the older data sets, you should be able to calculate the required amount of space
in the offload data sets. Of course your transaction volume could be less than the example
above, or quite likely it could be significantly more with multiple IMS images in a shared
queues group. You must decide how disruptive structure checkpoints are in your environment,
especially at peak times, and weigh this against the amount of offload data you can afford to
keep and how long it would take to recover the shared queues structure in the unlikely event
of a failure. Structure checkpoint impact and time to recover in the event of a failure will vary
by workload and by the hardware being used, so there is no substitute for testing and
measuring this impact in your own environment.
CQS will typically issue just a fraction over four IXGWRITEs to the logger per full function
transaction. These writes are synchronous to the transaction process similar to the way IMS
Checkwrites are processed, except that each write is done as a separate block by the MVS
Logger. This means that the total transaction throughput will be limited to whatever I/O rate
the DASD volume can sustain. Striping of the staging data sets can provide some relief in that
the I/O rate to any single volume will be reduced, which, for some DASD subsystems may
also reduce the I/O response time. However, the total I/O rate across multiple volumes, and
thus the transaction rate, does not increase in direct proportion to the number of stripes, so
use care in setting expectations.
Chapter 4. IMS Common Queue Server and the System Logger 135
take this into account when sizing the staging data sets. The logger will initiate an offload
process based on the HIGHOFFLOAD threshold being reached on either the structure or the
staging data set, whichever is reached first. If you do not account for the unused space in the
staging data set (the difference between the actual data size and the 4 KB block), you could
end up initiating offload very frequently because you might be reaching the threshold sooner
than expected. This is not necessarily a problem unless the usable space left in the staging
data set is not enough to keep it from becoming full and cause processing to stop.
Staging data sets, when used, are critical to performance, and as such should be placed on
the best performing DASD available. Striping of these data sets may be used to reduce the
I/O rate to any given volume, and in some cases reduce the response time to the DASD. This
may also allow somewhat higher total I/O rates, which would then accommodate additional
transaction volume.
If staging data sets become the limiting factor to transaction throughput, it might be necessary
to create additional IMS images on separate LPARs (to get additional logger address
spaces). More parallel images should allow for considerable growth potential.
4.5.5 Measurements
In order to better understand the impact of staging data sets and mirroring, we performed
several measurements with an IMS shared queues environment. An application workload
was created to drive IMS, with input and output messages of about 2,000 bytes each. Since
we were only concerned about the Transaction Manager side of IMS, the application did not
perform any database processing — just one GU for the input message and one ISRT for the
reply. The applications ran in full function MPP regions with the Pseudo Wait For Input
(PWFI) option, but with a processing limit count of 10 in order to get the 08/07 log records for
gathering certain transaction statistics. PWFI is a message region option that may be used to
avoid unnecessary scheduling overhead.
When looking at the results of our measurements, you should concentrate on the absolute
difference in transaction response times from one measurement to the next. Because the
transactions did not do any database processing, the response times were very low, meaning
that the relative impact of configuration changes was very high. If you were to implement the
same changes in a production environment, you would expect to see your response times
change by similar milliseconds to what we observed, not by similar percentages.
We first ran with the logger structure and duplexing of the log stream to a data space to
create the base case measurements. We then tried using a single staging data set per log
stream, followed by creating multiple (2) stripes for the staging data set. We also made a run
using system-managed duplexing for the logger structure. As you will see below, some of the
runs were made with different numbers of terminals or message regions. This was done to be
sure that there were no artificial bottlenecks in our configuration. Several measurements were
made in each configuration to verify that the results were repeatable.
RMF records Coupling Facility structure activity in SMF Type 74, Subtype 4 records. The CF
activity can be monitored in real time using RMF Monitor III, or the RMF SMF records can be
used to create an RMF Postprocessor report.
Chapter 4. IMS Common Queue Server and the System Logger 137
4.5.8 Measurement methodology and reports
As anyone familiar with performance monitoring knows, it is very difficult to get exactly the
same number from two different products that are monitoring the same thing. Part of this may
be due to small differences in precisely what is being measured. Part may be due to
differences in how they gather the information (sampling versus measuring, for example).
And part may even be due to small differences in the interval being measured, especially
when there are hundreds of transactions being processed every second. These differences
sometimes make it difficult to get precise values for some of the numbers being gathered.
We tried to get the numbers as close as possible by coordinating the RMF intervals with the
taking of an IMS checkpoint and the switching of the OLDS. Our sequence of operations for
each individual measurement was as follows:
1. Switch SMF data sets (I SMF command).
2. Wait for RMF report interval (set at 1 minute - on the minute).
3. Switch OLDS.
4. Take an IMS simple Checkpoint.
5. Wait 10 minutes.
6. Take another IMS Checkpoint.
7. Switch OLDS.
8. Wait for the next RMF interval (slightly less than 1 minute).
9. Switch OLDS.
10.Take an IMS simple Checkpoint.
11.Turn on the DC Monitor.
12.Wait 3 minutes.
13.Turn off the DC Monitor.
14.Take another IMS Checkpoint.
15.Switch OLDS.
16.Switch SMF again.
This procedure allowed us to keep very comparable data for each set of measurements.
While the DC monitor was not absolutely necessary for this test, it helped us cross check our
results.
The first measurement in Table 4-1 is with the logger structure being duplexed to a data
space. This was used as our base measurement to establish what could be achieved within
our hardware, software, and application environment.
Before moving on to the next measurement, did you notice that the number of logger
structure requests per transaction is almost 5 (9770/1792), not over 4 as was previously
stated? This is because of the additional CF requests required to offload the log data as the
structure reaches the predefined full threshold.
The results of the next test, shown in Table 4-2, are with duplexing the logger structure to a
single staging data set that was being PPRCed over 20 km.
Staging Data Set Resp Time (ms) 2.1 1.9 2.0 (avg.)
The IBM DS8K was able to sustain the rates and response times shown. Note that the DASD
had the Parallel Access Volume (PAV) feature enabled, allowing more than one I/O at a time
to be started to the volume.
You can see that the transaction throughput for each IMS image was limited by the I/O to the
staging data set, and that the transaction response time has increased due to the additional
time taken to write to the staging data sets. Given that each transaction results in roughly four
IXGWRITE requests, and that the staging data set response time was about 2 ms, you would
expect the transaction response time to increase to roughly 20 ms. (11 ms. without staging
data set, plus 4 writes at 2 ms. each). In fact, the response time increased to about 42 ms.
The difference is a result of additional queue time in IMS that resulted from the increased time
it was taking each transaction to get in and out of IMS.
The next test, shown in Table 4-3, was done with the staging data sets using two stripes. You
can see that the I/O rates and response times for each volume were lower than with the single
staging data set, and the total I/O and transaction rates were higher. However, the transaction
rates did not double as a result of having two stripes, as one might have hoped.
Table 4-3 Log Stream duplexing with 2-stripe staging data sets
Metric IM1A IM2A Total/average
Chapter 4. IMS Common Queue Server and the System Logger 139
Metric IM1A IM2A Total/average
Staging Data Set Resp Time (ms) 1.5/1.3 1.5/1.2 1.4 (avg.)
The results shown in Table 4-4 are with four stripes for the staging data sets. As you can see,
there was no additional improvement in throughput, although the individual data sets had less
activity. This would infer that, for this particular workload, IMS was only driving two
IXGWRITE requests concurrently, and therefore did not benefit from the ability to drive more
than two concurrent writes to the staging data set. The use of striping for VSAM data sets is
discussed in VSAM Demystified, SG24-6105.
Table 4-4 Log stream duplexing with 4-stripe staging data sets
Metric IM1A IM2A Total/average
Staging Data Set Resp Time (ms) 1.2/1.4/1.4/1.4 1.4/1.2/1.5/1.3 1.35 (avg.)
The next measurement was to keep the four-stripe staging data sets, but to turn off the PPRC
mirroring to understand the effects of using staging data sets but with no distance involved.
Another way to look at this is to see the effect of the 20 km distance on the staging data sets.
Table 4-5 shows these results. As you will see, the total transaction throughput increased,
while transaction response time decreased. This can be mainly attributed to the lower DASD
response time to the staging data sets without the 20 km mirroring.
Table 4-5 Log stream duplexing to four-stripe staging data sets but NO PPRC
Metric IM1A IM2A Total/average
Staging Data Set Resp Time (ms) .5/.6/.6/.5 .6/.4/.6/.6 .55 (avg.)
Table 4-6 Log stream with CF Level 14 system-managed duplexing for the logger structure
Metric IM1A IM2A Total/average
One final measurement was to see what would happen if we duplexed the SMQ structure
instead of the logger structure (thereby hopefully eliminating the need to ever do a structure
recovery). Table 4-7 shows the results of this configuration.
While the SMQ structure response times did not show the drastic increases that the logger
structure suffered, there are more structure accesses per transaction, so there was not as
significant of an improvement as one might have expected from just looking at the structure
response times.
Chapter 4. IMS Common Queue Server and the System Logger 141
4.5.10 Summary of measurement results
There are a lot of numbers in the above tables and, as with any measurements, they only
show relative results for the environment in which they were done. Your message sizes and
hardware configuration will almost certainly be different. However, the point was to try to show
how CQS might react to different methods of duplexing and therefore allow you to have some
idea of what to expect in your own environment. Here are some summary points from the
measurements that were done:
Duplexing the logger structure to a data space is by far the best option for performance.
However, this may not be a valid option for certain configurations such as ICFs, volatile
CFs, and when using DASD mirroring.
Duplexing to staging data sets on the IBM DS8K makes the use of staging data sets a
much more viable option than with earlier DASD subsystems. The DS8K was able to
sustain very high I/O rates while maintaining good response times, even when mirroring at
a distance of 20 km.
Enabling striping for the staging data sets can give some throughput improvement over a
single stripe. Perhaps more importantly is that striping can lower the I/O rate per volume,
enabling improved DASD response times.
System-managed duplexing of the logger structure is probably not as good an option as
using staging data sets.
System-managed duplexing of the shared queues message structure, while not having as
severe an impact to response time as the logger structure, can still be a limiting factor to
throughput.
If staging data sets are implemented, then additional IMS images may be required in some
cases to provide the necessary transaction throughput.
So, finally, there are several options available depending on your configuration and availability
needs. While these measurements give some idea of what might be the impact of different
processing options, there is no substitute for testing in your own environment with your own
applications.
For CQS, or any log writer, the first goal is to not let the logger structure fill up. This means
that offload performance must be adequate to relieve structure constraints before they
become a problem. The report (RPT1) shows different types of writes, shows structure full
conditions, and average buffer size. All these numbers are for the SMF monitor interval only -
they are not cumulative, so they may change significantly as different workloads become
prevalent.
A type 1 write means that CQS wrote a log record while the structure was below its high
threshold. These should be the most common.
The SMF 88 records do not show the second important goal — not letting the log stream fill
up (that is, all the offload data sets and the logger structure are full). This occurs when there
are no more offload data sets available. This can be tracked using IXCMIAPU as described in
4.3.4, “Monitoring for offload conditions” on page 131.
Threshold recommendations
The only thresholds of interest to CQS are the HIGHOFFLOAD and LOWOFFLOAD
thresholds in the log stream definition in the LOGR policy. Since CQS rarely needs to read
these logs after they are written, the LOWOFFLOAD threshold should always be set to zero
(0%) — that is, when offload processing is invoked, always offload as much as possible. The
HIGHOFFLOAD threshold should be set between 50 and 80 (%). We recommend 50% since
this leaves plenty of room in the structure in case offload processing gets delayed.
Chapter 4. IMS Common Queue Server and the System Logger 143
144 System Programmer’s Guide to: z/OS System Logger
5
The period between the start of a particular set of changes and the point at which they are
complete is called a unit of work (UOW). A UOW is a sequence of actions which must
complete before any of the individual actions can be regarded as complete. A UOW is
terminated by a sync point. The sync point may be issued implicitly at task end, or explicitly
when the task issues an EXEC CICS SYNCPOINT. In the absence of user sync points being
explicitly issued within the transaction, the entire transaction is one UOW. After changes are
committed (by successful completion of the UOW and recording of the sync point on the
system log), they become durable, and are not backed out in the event of a subsequent
failure of the task or system. If a transaction consisting of multiple UOWs fails, or the CICS
region fails, committed UOWs are not backed out.
The log records on the system log stream that are associated with a given UOW are
“chained” together. In the context of the System Logger function, the term chain refers to the
grouping of records for a particular UOW.
The interface to the System Logger is via the CICS Log Manager domain, referred to as the
logger domain. CICS resource managers, such as file control, communicate with the recovery
manager (RM) component of CICS. The recovery manager associates the request with the
unit of work (UOW) and passes the request to the logger domain. The logger domain places
the data into a buffer and then calls the System Logger using an IXGWRITE call to pass the
data to be written to the log stream. When the UOW completes (that is, issues a sync point),
CICS can then delete all log records associated with the UOW.
An application may also request user-defined data to be recorded in a user journal using an
EXEC CICS WRITE JOURNALNAME command. The application execution interface will
pass the request to the logger domain, where an IXGWRITE call is issued for the log stream
associated with the journal name.
In order for CICS to connect to a log stream, the log stream must be defined in the System
Logger policy. From a CICS point of view, the System Logger policy is a resource respository
much like the CICS System Definition (CSD) file.
The log stream definition must exist in the System Logger policy before CICS can connect
(think of a connect as an OPEN) and use it. If the log stream resources have not been
predefined, CICS will attempt to dynamically define them as needed.
CICS provides support for the dynamic installation of many of its resources. Following in that
tradition, log streams can be dynamically defined to the System Logger. To facilitate the
dynamic definition of log streams, the names and characteristics must be supplied via
models.
In the CICS System Logger environment, two types of models may be required.
The first is a journal model defined in CICS which provides a linkage between the journal
name and the log stream to be used. The STREAMNAME parm in the JOURNALMODEL
identifies the log stream to be used by CICS. The CICS journal models replace the journal
control table used in CICS/ESA V4.1 and earlier.
For non-system logs (user journals, forward recovery logs, and auto journals), if a
JOURNALMODEL has not been defined, the name used would be
&userid..&applid..DFHJ0xx, where xx is the journal number.
The second type is referred to as an MVS model. MVS log stream models are defined in the
System Logger policy using the IXCMIAPU utility. The model contains the log stream
characteristics to be assigned when the log stream is dynamically created. MVS models
sysname.DFHLOG.MODEL and sysname.DFHSHUNT.MODEL are required entries in the
System Logger policy if CICS is to dynamically create the DFHLOG and DFHSHUNT log
streams. “sysname” is the name of the z/OS image as specified in the IEASYSxx in
SYS1.PARMLIB. Figure 5-1 shows how CICS decides on the name of the log stream to be
used for DFHLOG (as an example).
Is a JOURNALMODEL
Yes Connect to the log
stream name contained
defined for DFHLOG? in the
JOURNALMODEL entry
No
Figure 5-1 How CICS decides which log stream name to use
When CICS requests a log stream to be dynamically created for DFHLOG or DFHSHUNT, an
IXGINVNT DEFINE request will be issued, pointing to an MVS model named
sysname.DFHLOG.MODEL or sysname.DFHSHUNT.MODEL respectively. The name of the
MVS model used for the log stream create may be changed in the CICS XLGSTRM exit. A
sample exit is provided with CICS Transaction Server V2.2 in member DFH$LGLS of
SDFHSAMP. For earlier releases, a sample exit is available via a ServerPac which can be
downloaded from:
http://www.ibm.com/software/ts/cics/txppacs/cs1e.html
All characteristics of the log stream to be defined may be changed in the XLGSTRM exit
except the log stream name. Prior to calling the exit, CICS will have already cataloged the Log
Stream Name in the CICS catalog..
Tip: All log streams defined using a given MVS model will have the same attributes, unless
altered in the XLGSTRM exit. Having the same attributes for all log streams could result in
incorrect definitions for the type and volume of data written, or it could result in all log
streams being placed in the same structure.
The log stream names for DFHLOG and DFHSHUNT can only be changed when CICS is
initial started. For other types of starts (cold, warm, and emergency) the log stream name is
obtained from the CICS catalog.
Note that CICS allocates two buffers for each log stream: this enables CICS to write while an
IXGWRITE is in progress for the alternate buffer.
During a normal shutdown, CICS will flush the log buffers and issue a disconnect call
(IXGDISC) for the log streams. However, it’s important to note during an immediate shutdown
(CEMT P SHUT,I) the buffers are not flushed for user journals.
To avoid loss of user journal records, use a normal shutdown with the shutdown assist
program (DFHCESD) active. Add a program to the Program List Table for ShutDown
(PLTSD) to issue a SET JOURNAL FLUSH for each user journal. Even though the shutdown
assist program may force an immediate shutdown, it will happen after the PLTSD programs
have run.
Another method is to add the wait option on writes to user journals; however, use of the wait
option could lead to performance and response time issues.
CICSC
CICSB
CICSA
Application Programs
Recovery Manager
UOW coordination
System logging
Figure 5-2 shows the relationship of the resource managers, the logger domain, and the
System Logger function.
5.2 Definitions
To implement the System Logger in a CICS environment, a number of definitions are required
as shown in Figure 5-3. The figure is organized by task on the left with the related policy listed
on the right. Each of the z/OS policies can be considered similar in concept to the CICS
System Definition (CSD) file.
The utility used to define resources in the System Logger and CFRM policies is IXCMIAPU,
which is similar in function to DFHCSDUP for CICS.
T A A F Q
Define Journal Models CICS Resource Definitions
O O O O O
R R R R R
Log_Structure_1
Log_Structure_2
Define CF Structure Log_Structure_3 CFRM Policy (z/OS)
Log_Structure_4
Log_Structure_5
When a CICS region is started, it connects to the DFHLOG and DFHSHUNT log streams
which make up the system log. If journal models have been defined for DFHLOG and
DFHSHUNT, CICS uses the log stream name (LSN) found in the model for the connect.
For non-system logs, CICS searches for a journal model, for example DFHJ07 for user
journal 7. If a journal model is found, the LSN provided is used. If a journal model is not found,
JOURNALMODEL
The JOURNALMODEL may contain an explicit log stream name (for example,
JIMG.JIMSAOR.DFHLOG) or a TEMPLATE value (for example, &applid..DFHLOG), in which
case the symbolic qualifiers are used to build the actual log stream name.
DEFINE JOURNALMODEL(SYSSHUNT)
TYPE(MVS) GROUP(TEST) JOURNALNAME(DFHSHUNT)
DESCRIPTION('DFHSHUNT LOGSTREAM EXPLICIT DEFINITION')
STREAMNAME(TCOM.IYCLZCCA.DFHSHUNT)
For example, if the Log Stream Name (LSN) is IYOT1.DFHLOG, and the HLQ is
CICSLVL2, the offload data set name would be CICSLVL2.IYOT1.DFHLOG.Axxxxxxx
When the log stream is defined, the first offload data set will be allocated. If the LSN is
greater than 26 characters and the HLQ is 8 characters (the sequence number will always
be 8 characters), the allocation will fail.
The failure is fairly easy to spot when the log stream is being defined with IXCMIAPU.
When the log stream is being dynamically defined during a CICS initial start, the failure is
not so easy to spot. CICS will terminate with a DFHLGxxx message with an IXC251I
message is written to the console.
Once the log stream name is defined, CICS will issue an IXGCONN request to connect to the
log stream. If the log stream has not been defined in the System Logger policy, the System
Logger returns IXGRSNCODENOSTREAM (RC 8 reason code 080B).
During a CICS initial start, if the log stream for DFHLOG (or DFHSHUNT) is not found, upon
receiving an 080B, CICS attempts to create the log stream via an IXGINVNT DEFINE request
using the MVS model sysname.DFHLOG.MODEL. The model used for DFHSHUNT is
sysname.DFHSHUNT.MODEL. In all cases the log stream name remains the same — the
one used for the original IXGCONN call.
For a non-system log (user journal, forward recovery log, or auto journal), the name of the
logger model used consists of the first two qualifiers of the log stream name with MODEL
appended (for example, if the log stream name is JIM.JON.HARRY - the model name will be
JIM.JON.MODEL). The MVS models must exist in the System Logger policy (that is, a
DEFINE LOGSTREAM has been issued for a log stream called JIM.JON.MODEL with
MODEL(YES) specified).
If the create request for either DFHLOG or DFHSHUNT fails, CICS will abend, with a
message in the range of DFHLG0503 through 0511 being issued.
DFHSIT Parameters
The CICS System Initialization parameters which affect the interaction with the System
Logger are AKPFREQ (Activity Key Point Frequency) and LGDFINT (Log Defer Interval).
AKPFREQ
The activity keypoint frequency value (AKPFREQ) specifies the number of times CICS
appends log records to the buffer associated with the DFHLOG log stream before an activity
keypoint is initiated. It does not reflect how much data is held in the buffer prior to it being
written to the log stream. The data is written as required (based on the buffer filling, or the
force option being specified on the call to the CICS logger domain). A keypoint is a snapshot
of in-flight tasks in the system at the time. The activity keypoint interval is defined as the
interval of time between two consecutive activity keypoints.
During the activity keypoint, CICS initiates the tail trimming process for DFHLOG and
DFHSHUNT. CICS determines the history point (the oldest record required for transaction
backout) for DFHLOG and DFHSHUNT and issue an IXGDELET call to the System Logger to
logically delete blocks of data older than the history point. Logically deleted data will be
CEMT I SYS may be used to view and dynamically change the value for AKPFREQ.
LGDFINT
LGDFINT specifies the “log defer” interval. The log defer interval is the length of time CICS
delays a forced journal write (a write which is considered immediate) before issuing the
IXGWRITE call. The intent allows additional records to be placed in the buffer and reduce the
number of IXGWRITE calls to the System Logger.
The LGDFINT mechanism applies only to DFHLOG and DFHSHUNT log streams.
However, when a buffer fills it is written without waiting for the log defer interval.
When a journal write call is passed to the logger domain with the wait option, the record is
simply appended to the current buffer. The buffer is written either when it fills and the
application will wait for the completion of the IXGWRITE.
When a journal write call is passed to the logger domain with the force option, the logger
domain is synchronously issuing an IXGWRITE and the record is immediately written to the
log stream.
The LGDFINT default value in releases prior to CICS Transaction Server V2.2 was 30
milliseconds (ms). In V2.2 the default was changed to 5 ms. The recommendation is
LGDFINT be set to 5 for all releases.
CEMT I SYS may be used to view and dynamically change the value for LGDFINT.
CICS provides several sample jobs (DFHILG1-7) in the SDFHINST library to assist with log
stream definitions. However, the jobs do not contain installation-specific information. The jobs
should be used as JCL examples. The following samples are provided to show parameters
which affect performance and suggested settings in a CICS environment. However, note that
the sizes shown must be replaced with values which match the needs of the log stream being
defined.
Log streams
CICS can use CF-Structure log streams or DASD-only log streams. The definition and
recommendations differ depending on the type being used. Definitions for a CF-Structure
based log stream will be discussed first, and then the DASD-only log streams in “DASD-only
log stream” on page 164.
FULLTHRESHOLD
FULLTHRESHOLD (added in OS/390 2.9) specifies a percentage value used by automatic
alter processing and structure full monitoring. If the structure exceeds this percent utilization,
auto alter may adjust the structure (if you specified ALLOWAUTOALT(YES)) and issue
messages to the console. The value specified on this keyword should be larger than the
HIGHOFFLOAD for the log streams in this structure.
MV2C 01145 03:51:49.50 00000080 *IXC585E STRUCTURE LOG_JG2 IN COUPLING FACILITY SVCF04, 979
979 00000080 PHYSICAL STRUCTURE VERSION B5E2748F D0885E02,
979 00000080 IS AT OR ABOVE STRUCTURE FULL MONITORING THRESHOLD OF 80%.
979 00000080 ENTRIES: IN-USE: 930 TOTAL: 1105, 84% FULL
979 00000080 ELEMENTS: IN-USE: 2401 TOTAL: 8841, 27% FULL
MV2C 01145 03:51:49.52 00000280 IXC588I AUTOMATIC ALTER PROCESSING INITIATED 980
980 00000080 FOR STRUCTURE LOG_JG2.
980 00000080 CURRENT SIZE: 3072 K
980 00000080 TARGET SIZE: 3072 K
980 00000080 TARGET ENTRY TO ELEMENT RATIO: 1192 : 3078
980 00000080 TARGET EMC STORAGE PERCENTAGE: 0.00
MV2C 01145 03:51:58.30 00000280 IXC590I AUTOMATIC ALTER PROCESSING FOR STRUCTURE LOG_JG2 982
982 00000080 COMPLETED. TARGET ATTAINED.
982 00000080 CURRENT SIZE: 3072 K TARGET: 3072 K
982 00000080 CURRENT ENTRY COUNT: 2921 TARGET: 2921
982 00000080 CURRENT ELEMENT COUNT: 7542 TARGET: 7542
982 00000080 CURRENT EMC COUNT: 0 TARGET: 0
MV2C 01145 03:52:53.33 00000080 IXC586I STRUCTURE LOG_JG2 IN COUPLING FACILITY SVCF04, 998
998 00000080 PHYSICAL STRUCTURE VERSION B5E2748F D0885E02,
998 00000080 IS NOW BELOW STRUCTURE FULL MONITORING THRESHOLD.
Because the offload capability provided by System Logger is threshold driven, you do not
want XES adjusting the structure size at the same time System Logger is trying to manage
the log streams within the existing structure space. Similarly, because System Logger
provides its own function for dynamically adjusting the entry-to-element ratios, you do not
want XES making similar adjustments independently of System Logger. Therefore, you
should always specify ALLOWAUTOALT(NO) for any System Logger structure.
Additional information can be found in the topic “Define the Coupling Facility Structures
Attributes in the CFRM Policy Couple Data Set” in z/OS MVS Setting Up a Sysplex,
SA22-7625.
SIZE
SIZE(nnnn) Specifies the maximum amount of space to be allocated for the structure in the
CF. The number is specified in units of 1K (1024 bytes). The maximum structure size is the
largest size to which the structure can be dynamically altered. Specifying too large a
maximum structure size can waste CF resources.
INITSIZE
INITSIZE(nnnn) Specifies the initial amount of space to be allocated for the structure in the
CF. The number is specified in units of 1K (1024 bytes). The INITSIZE value must be less
than or equal to the SIZE value.
MINSIZE
MINSIZE(nnnn) MINSIZE specifies the smallest size in units of 1K (1024 bytes) to which the
structure can be altered.
The structure used for the log stream can affect performance. Key factors include the number
and characteristics of the log streams which share the structure. We recommend limiting the
number of log streams which can reside in the structure (LOGSNUM specified on the
structure definition) to ten. All log streams in a structure should have similar characteristics.
For example, TORs, AORs, and FORs typically have different log stream record size and
volumes, so their DFHLOG and DFHSHUNT log streams should typically be in different
structures.
Figure 5-7 Defining a structure for CF-Structure log streams in the System Logger policy
SIZE
The size of a structure is specified in the CFRM policy. Each structure is divided into entries
and elements. Each IXGWRITE uses one entry and one or more elements, depending on the
length of data written.
The entries in the structure are shared between all connected log streams on an as-needed
basis, while the elements are divided equally across the number of connected log streams in
the structure. When another log stream connects to the structure, the elements are
dynamically redistributed. Similarly, when a log stream disconnects from the structure, the
elements previously allocated to that log stream are redistributed equally across all remaining
log streams in the structure.
MAXBUFSIZE
The MAXBUFSIZE value you specify is returned to CICS when it connects to a log stream in
that structure. CICS sets up its internal log buffers to be the same size as MAXBUFSIZE. For
user journals, where the application does not use the wait option, it may be advantageous to
specify a smaller size, as the buffer only gets written to the log stream when it fills. As a
general rule, we recommend a MAXBUFSIZE of 64000.
Three elements will be used for an average write (1100/512 and round up). The
entry-to-element ratio is therefore 1:3. Beginning with OS/390 1.3, System Logger will
dynamically adjust the entry-to-element ratio.
System Logger samples the structure use prior to adjusting the entry-to-element ratio. If the
log streams using a given structure have very dissimilar characteristics, the sample may not
reflect the data which will be written in the next interval. This would lead System Logger to
adjust the ratio to a value which could result in a shortage of entries. For example, imagine an
FOR which normally writes 1000 800 byte records per second, and an AOR which averages
500 100 byte records per second are sharing the same structure. One entry is required for
each IXGWRITE. Further assume the structure is allocated to hold 2000 800 byte writes, with
a MAXBUFSIZE of 64000. If System Logger finds the FOR had dominated the last interval
(normally about 30 minutes) it will bias the ratio towards the needs of the FOR—in this case
1:4 (800/256 and round up).
Now, if during the next interval, the AOR dominates, writing 5000 100 byte records, it is
possible to exhaust the entry pool without hitting HIGHOFFLOAD.
When the total number of entries in the structure become 90% full, all log streams in the
structure are completely offloaded (that is, offload processing is initiated and completes when
LOWOFFLOAD threshold is reached)
The effective average buffer size (the current average amount of data written per IXGWRITE
call), is included in an IXCMIAPU report, as shown in Figure 5-8. Note this is the average
across all the log streams in the structure—some log streams may have far smaller log blocks
and others may have larger ones. Ideally all the log streams sharing a given structure would
have similar average log block sizes.
Figure 5-8 Using IXCMIAPU report to get Effective Average Buffer Size
The current entry-to-element ratio can also be calculated from data available in the Coupling
Facility Activity report produced from the SMF 74 records using the RMF Post Processor
utility, ERBRMFPP. A sample Coupling Facility Activity Report is shown in Figure 8-2 on
page 287.
For the forward recovery log stream and log 0f logs, the recommended values are
AUTODELETE(NO) and RETPD(xx) where is xx is the number of days the data needs to be
kept before allowing any deletion. This value is based on installation business needs. If you
are planning to keep this data for a long period, be prepared to manage offload data sets.
HIGHOFFLOAD
The HIGHOFFLOAD parameter, in conjunction with the size of the log stream structure, has a
major impact on the amount of virtual storage used by the System Logger. For a CF-Structure
log stream, if staging data sets are not being used, all the data in the CF portion of the log
stream is duplexed to the System Logger-owned data space. If staging data sets are used
with a CF-Structure log stream, the data is written to the staging data set rather than the data
space.
If the HIGHOFFLOAD value is too high, the log stream may fill before offload processing can
free sufficient space in the log stream. CICS is not aware the offload process is taking place,
and will continue writing to the log stream. This can lead to an entry or structure full condition,
which causes log writes to be suspended for 3 seconds.
LOWOFFLOAD
The LOWOFFLOAD value defines the amount of data which may be retained in the log
stream interim storage following an offload process. In the CICS environment, the
LOWOFFLOAD value should be high enough to retain the data required for backout but low
enough to keep the number of offloads to a reasonable number.
LOWOFFLOAD should be set between 40 and 60% for DFHLOG and DFHSHUNT. It should
be set to 0 for user journals, forward recovery logs, and auto journals.
It should also be noted setting the LOWOFFLOAD to a higher value may mask poorly
behaving transactions. It may appear the log stream is working properly (for example little or
no data is offloaded) when in fact large amounts of storage are being consumed to retain
records which would be offloaded with a lower setting. Remember the goal is to contain the
data needed for recovery using a minimum of interim storage, with no data being moved to
the offload data sets.
LS_SIZE
LS_SIZE defines the allocation size, in 4 KB blocks, for the offload data sets. It should be
specified large enough to contain several offloads, possibly up to a day's worth. DFHLOG and
If you have log streams which offload large volumes of data, find a balance between a size
small enough so the system can always find free space, while at the same time, minimizing
the number of times new offload data sets need to be allocated.
It’s very important to specify LS_SIZE large enough to limit the number of times an additional
data set is allocated, to reduce the exposure to delays during the allocation process. The size
to be specified is based on the amount of data written during the prime processing window of
the day. The amount of data written can be determined using the SMF Type 88 records
produced for the log stream by the System Logger.
If the extent size of the SMS data class specified on the LS_DATACLAS (or the value
specified in LS_SIZE) is too small, frequent DASD shifts (allocation of a new offload data set)
can occur. Frequent DASD shifts have a negative effect on performance and expose the
system to a depletion of DASD space. The number of offload data sets is limited by the
DSEXTENT value specified when you format the LOGR Couple Data Set. The DSEXTENT
value defines the number of System Logger directory entries. Each directory entry can point
to a maximum of 168 offload data sets. Prior to OS/390 1.3, the number of extents was limited
to one; with OS/390 1.3 and later, the number is limited only by the amount of DASD
available.
Attention: If LS_SIZE is not specified in the log stream definition, and an extent size is not
specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member. The default value in ALLOCxx is 2 tracks. Refer to the z/OS
MVS Initialization and Tuning Reference, SA22-7592 for more information about this
member.
LS_DATACLAS
It is very important to remember log stream staging and offload data sets are single extent
VSAM linear data sets, and the SHAREOPTIONS must be specified as “3,3”. If the
SHAREOPTIONS are anything other than “3,3” there is a risk the System Logger will be
unable to read offloaded data and post CICS with return code 8, reason code 804
(IxgRsnCodeNoBlock). This will cause CICS to abend with a DFHLG0772. Therefore, you
should make sure the SMS Data Class specified on the LS_DATACLAS parameter is set to
use SHAREOPTIONS 3,3.
With either of the above messages, an associated IEC161I message will be produced.
IEC161I 052(009)-084 error opening a SHAREOPTIONS 1,x data set or
IEC161I 052(015)-084 error opening a SHAREOPTIONS 2,x data set.
In all cases, the log stream will be considered broken and CICS will terminate.
Following application of OW54863, the System Logger will check the SHAREOPTIONS of the
staging and offload data sets at connect time. If the SHAREOPTIONS are not set to (3,3),
message IXG267I will be issued. If the System Logger is unable to open the data set,
message IXG288I will be issued.
Either an IDCAMS LISTCAT or ISMF display may be used to verify the SHAREOPTIONS are
set to 3,3.
LOGGERDUPLEX(COND) indicates the System Logger will provide its own duplexing of the
log data unless the log stream is being duplexed with System-Managed Duplexing and the
duplexing is providing the required level of failure independence.
For a more detailed discussion, refer to “Duplexing log data for CF-Structure based log
streams” on page 42.
STG_SIZE
For a CF-Structure log stream, STG_SIZE defines the size of the staging data set to be
allocated if STG_DUPLEX and DUPLEX_MODE(YES) are specified. If
STG_DUPLEX(UNCOND) is specified, the data in the CF-Structure log stream will always be
duplexed to the staging data set. If STG_DUPLEX(COND) is specified, the data in the
CF-Structure log stream is duplexed to the staging data set only if the CF becomes volatile or
becomes failure dependent.
The size of the staging data set (STG_SIZE) must be at least large enough to hold as much
data as the log stream storage in the CF.
The rule of thumb is STG_SIZE must be large enough to hold the data written during an
activity keypoint interval, plus the length of time of the longest running unit of work.
If you are migrating to CICS TS and starting to use System Logger with CICS for the first
time, DFHLSCU should be run against the CICS/ESA 4.1 system log and the output used as
a starting point for STG_SIZE and the size used for the CF structure definition.
Space within the staging data set is allocated to log blocks in 4096 byte increments,
regardless of the buffer size. So, for example, if the average log block size is 2000 bytes, the
effective space in the staging data set is reduced by about 50%. Bear this in mind when
setting the size of the staging data set.
Attention: When staging data sets are used with a CF-Structure log stream, STG_SIZE
must be specified large enough to hold at least as much data as the CF-Structure log
stream.
The structure storage is divided equally among the active log streams. If the number of log
streams connected to the structure will vary, the STG_SIZE value should be chosen based
on the least number of log streams which will normally be connected.
Offload processing is triggered based on the smaller capacity of either the structure log
stream storage or the staging data set.
STG_DUPLEX
STG_DUPLEX(YES) with DUPLEXMODE(COND) means if the CF becomes volatile, or
resides in the same failure domain as the System Logger, the log stream data will be
duplexed to the staging data set; otherwise it is duplexed to buffers in the System Logger data
space. A CF is in the same failure domain when the CF LPAR and the z/OS LPAR reside in
the same physical hardware box, or if the CF is volatile regardless of where it is. Duplexing to
the staging data set means the cost of an I/O will be incurred for each write. Therefore we
strongly recommend you provide a configuration where the structure containing the log
OFFLOADRECALL
OFFLOADRECALL should be set to NO for CICS log streams. This option was added via
APAR OW48404. This parameter applies in the situation where the System Logger is to
perform an offload of data and the target data set has been migrated by DFSMShsm.
Specifying NO indicates to the System Logger a new offload data set is to be allocated rather
than attempting a recall. This prevents the System Logger from waiting for the recall and
avoids the risk of CICS being unable to write to a log stream which has filled waiting for the
offload to proceed.
The following discussion presents the parameters which affect DASD-only log stream
performance in a CICS Transaction Server environment.
AUTODELETE(YES) lets the System Logger (rather than CICS) decide when to delete the
data. When a new offload data set is allocated and AUTODELETE(YES) is specified, the
System Logger will delete the data in the old offload data set. If CICS needs the data for
backout, the result will be an 804 return code and CICS will terminate with a DFHLG0772.
For the forward recovery log stream and log of logs, the recommended values are
AUTODELETE(NO) and RETPD(xx) where is xx is the number of days the data needs to be
kept before allowing any deletion. This value is mainly based on the installation business
needs. If you are planning to keep this data for a long period, be prepare to manage offload
data sets.
HIGHOFFLOAD
The HIGHOFFLOAD parameter, in conjunction with the size of the log stream, has a major
effect on the amount of storage used by the System Logger. Before data is written to the
staging data set, it is written to the System Logger data space.
If the HIGHOFFLOAD value is too high, there can be insufficient space to accommodate data
written to the log stream during offload processing. This can lead to a staging data set full
condition which causes log writes to be suspended. Also, for DASD-only log streams, space
in the staging data set is not freed until the offload completes. Therefore, it is very important
to factor in the peak times when calculating the staging data set size and HIGHOFFLOAD
values.
LOWOFFLOAD
The LOWOFFLOAD value defines the amount of data which may be retained in the log
stream interim storage following an offload process. In the CICS environment, the
LOWOFFLOAD value should be high enough to retain the data required for backout but low
enough to keep the number of offloads to a minimum.
LOWOFFLOAD should be set between 40 and 60% for DFHLOG and DFHSHUNT, and to 0
for user journals, forward recovery logs, and auto journals.
It should also be noted setting the LOWOFFLOAD to a higher value may mask poorly
behaving transactions. It may appear the logstream is working properly (for example little or
no data is offloaded) when in fact large amounts of storage are being consumed to retain
records which would be offloaded with a lower setting. Remember the goal is to contain the
data needed for recovery using a minimum of interim storage, with no data being moved to
the offload data sets.
LS_SIZE
LS_SIZE defines the allocation size for the offload data sets. It should be specified large
enough to contain several offloads, possibly as much as a day's worth. DFHLOG and
DFHSHUNT should only offload a minimal amount of data. For user journals, all data is
offloaded.
If you have log streams which offload large volumes of data, find a balance between a size
small enough so the system can always find space, while at the same time, minimizing the
number of times new offload data sets need to be allocated.
If the extent size of the LS_DATACLAS (or the value specified in LS_SIZE) is too small,
frequent DASD shifts (allocation of a new offload data set) will occur. Frequent DASD shifts
have a negative impact on performance and expose the system to a depletion of DASD
space. The number of offload data sets is limited by the DSEXTENT value specified in the
LOGR Couple Data Set. The DSEXTENT value defines the number of System Logger
directory entries. Each directory entry can point to a maximum of 168 offload data sets. Prior
to OS/390 1.3, the number of extents was limited to 1; with OS/390 1.3 and above, the
number is limited only by the amount of DASD available.
Attention: If LS_SIZE is not specified in the log stream definition, and a size is not
specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member. The default value in ALLOCxx is 2 tracks. Refer to the z/OS
MVS Initialization and Tuning Reference, SA22-7592.
LS_DATACLAS
It is very important to remember log stream staging and offload data sets are single extent
VSAM linear data sets, and the SHAREOPTIONS must be specified as “3,3”. If the
SHAREOPTIONS are anything other than “3,3” there is a risk the System Logger will be
unable to read offloaded data and post CICS with return code 8, reason code 804
(IxgRsnCodeNoBlock). This will cause CICS to abend with a DFHLG0772. Therefore, you
should ensure the SMS Data Class specified on the LS_DATACLAS parameter is set to use
SHAREOPTIONS 3,3.
With either of the above messages, an associated IEC161I message will be produced.
IEC161I 052(009)-084 error opening a SHAREOPTIONS 1,x data set or
IEC161I 052(015)-084 error opening a SHAREOPTIONS 2,x data set.
In all cases, the log stream will be considered broken and CICS will terminate.
Following application of OW54863, the System Logger will check the SHAREOPTIONS of the
staging and offload data sets. If the SHAREOPTIONS are not set to (3,3), message IXG267I
will be issued. If the System Logger is unable to open the data set, message IXG288I will be
issued.
Either an IDCAMS LISTCAT or ISMF display may be used to verify the SHAREOPTIONS are
set to 3,3.
STG_SIZE
STG_SIZE is specified based on the amount of data to be contained in the log stream. The
rule of thumb is it must be large enough to hold the data written during a peak activity
If you are migrating to CICS TS and starting to use System Logger with CICS for the first
time, DFHLSCU should be run against the CICS/ESA 4.1 system log and the output used as
a starting point for STG_SIZE.
Attention: If STG_SIZE is not specified in the log stream definition and a size is not
specified in the SMS data class referred to by STG_DATACLAS, the value is taken from
the ALLOCxx parmlib member. The default value in ALLOCxx is 2 tracks, which would
result in very frequent offloads for that log stream. Refer to the z/OS MVS Initialization and
Tuning Reference, SA22-7592.
MAXBUFSIZE
MAXBUFSIZE may be specified for a DASD-only log stream, it defines the largest block
which can be written to the log stream. The default value is 65532 and should be used in a
CICS environment.
MAXBUFSIZE is returned to CICS at connect time and CICS in turn uses this value as the
size of its internal log buffers. For user journals, where the application does not use the wait
option, it may be advantageous to specify a smaller size, as the buffer is only written to the
log stream when it fills.
STG_DUPLEX
STG_DUPLEX(YES) with DUPLEXMODE(COND) are not applicable to DASD-only log
streams.
OFFLOADRECALL
OFFLOADRECALL should be set to NO for CICS log streams. This option was added via
z/OS APAR OW48404. Specifying NO indicates to System Logger if a required offload data
set has been migrated by DFSMShsm, then a new offload data set is to be allocated. This
prevents System Logger from waiting for the recall, which could result in the staging data set
filling before the offload completes.
Attention: With the exception of DFHLOG and DFHSHUNT, DASD-only log streams can
be shared within the z/OS image. User journals and forward recovery logs fall into this
category. Please note, this could have an impact on IOSQ time to the related staging data
sets.
Another important point, if you have a DASD-only user journal shared between multiple
CICS regions in the same image, then you must ensure all the CICS regions sharing the
journal always run on the same z/OS image. If one CICS is moved to another image, only
the CICS regions on the first z/OS image to connect to the log stream will be successful.
The MVS model associates a log stream with the desired characteristics. Model usage makes
it easier to dynamically define CICS log streams. The disadvantage is all log streams using
the model have the same characteristics.
The example shows a DASD-only log stream; if a Coupling Facility log stream is required,
replace the DASD-only parameters with those for a CF-Structure log stream.
When IXCMIAPU is used to predefine the CICS log streams (including the MVS log stream
models) the user requires the following authorizations:
ALTER access to RESOURCE(MVSADMIN.LOGR) CLASS(FACILITY)
ALTER access to this profile is required to delete and define log structures in the System
Logger policy. For users who only want to read the definitions, READ access is sufficient.
For example:
PERMIT MVSADMIN.LOGR CLASS(FACILITY) ACCESS(ALTER) ID(your_userid)
For CICS regions which dynamically create (autoinstall) log streams using the IXGINVNT
service, the CICS region user ID must have the following authorization:
ALTER access to RESOURCE(log_stream_name) CLASS(LOGSTRM)
ALTER access to this profile is required in order for CICS to be able to define new log
streams in the System Logger policy. A profile is required for each log stream. It may be
more efficient to use a generic profile by region such as region_userid.applid.* where
region_userid.applid are the first two qualifiers of the log stream names.
UPDATE access to RESOURCE(IXLSTR.structure_name) CLASS(FACILITY)
UPDATE access to this profile is required to allow CICS to specify a structure name when
it dynamically creates a log stream.
For example, consider the log streams are to be named region_userid.applid.DFHLOG
and region_userid.applid.DFHSHUNT, the following permissions would allow the CICS
region to define DFHLOG and DFHSHUNT as Coupling Facility log streams. The access
is defined as follows:
PERMIT region_userid.applid.* CLASS(LOGSTRM) ACCESS(ALTER) ID(region_userid)
PERMIT IXLSTR.structurename CLASS(FACILITY) ACCESS(UPDATE) ID(region_userid)
If the log streams to be used by the CICS region have been predefined to the System
Logger, CICS is only required to have UPDATE authority to the log stream profiles in order
to be able to use them. For example:
PERMIT region_userid.applid* CLASS(LOGSTRM) ACCESS(UPDATE) ID(region_userid)
Staging data sets used with a Coupling Facility log stream are of the form:
HLQ.LSN.system_name
Staging data sets are allocated when the first exploiter connects to the log stream, and exist
only for the period of time it is connected to the log stream. When the last connector
disconnects, the data is offloaded and the staging data set deleted.
The sequence number begins with A0000000 when the first offload data set is allocated (this
happens as soon as you add the log stream definition to the System Logger policy). The
number will be incremented each time a new offload data set is allocated to the log stream.
If/when the log stream is deleted and redefined, the number will be reset to A0000000.
CICS knows nothing about the offload data sets and an INITIAL start of CICS does not
alter/reset the sequence number.
Figure 5-14 Staging and offload data sets for IYOT1.DFHLOG log stream
The RETPD parameter on the log stream definition, allows you to specify a retention period
for log stream data. With RETPD, you specify the number of days the data in the log stream is
to be kept, even if the data has been marked for deletion using an IXGDELET call.
For example, if you specify RETPD(7) in the System Logger policy for a log stream, the
retention period for data in that log stream is 7 days from the time the data is written to the log
stream. System Logger processes the retention period on a offload data set basis. Once the
retention period for all the data in the offload data set has expired, the data set is eligible for
deletion. The data might not be physically deleted as soon as it hits the retention period. The
point at which the data is physically deleted depends on when the data set fills and the
specification of the AUTODELETE parameter. To understand when the data sets will be
physically deleted, refer to 2.7.2, “When is my log data or offload data set physically deleted?”
on page 65.
Note: The System Logger retention period applies to the age of the log data, not the data
set.
AUTODELETE(NO) means the log data can be physically deleted only after the data has
been marked for deletion via an IXGDELET call and after any retention period specified for
the log stream has expired. AUTODELETE(NO) is the default.
AUTODELETE(YES) means log data can be physically deleted either when the data is
marked for deletion (by IXGDELET) or when a retention period specified for the log stream
data expires. AUTODELETE(YES) is designed to speed physical deletion of log data.
Specifying anything other than AUTODELETE(NO) and RETPD(0) for DFHLOG and
DFHSUNT can have a disastrous effect on CICS, affecting both performance and availability.
With RETPD>0, even though CICS attempts log tail management, all data will be offloaded to
the offload data sets and held for the number of days specified for RETPD.
AUTODELETE(YES) lets System Logger (rather than CICS) decide when to delete the data.
When a new offload data set is allocated and AUTODELETE(YES) is specified without a
retention period, System Logger will delete the data on the old offload data set. If CICS needs
the data for backout, the result will be an 804 return code from System Logger and CICS will
terminate with a DFHLG0772.
Figure 5-15 contains a summary of when the offload data sets are deleted, based on the
AUTODELETE and RETPD specifications.
AU TO DELETE(NO ) RETPD (0) Log data sets are eligible for deletion w hen all data has been
deleted via an IXGDELET call. This com bination m ust alw ays
be used for DFHLOG and DFHSHUNT.
AU TO DELETE(NO ) RETPD (xx) All data is offloaded from interim storage to the offload data
sets. Offload data sets are eligible for deletion w hen all data
has been deleted via an IXGDELET call and the retention
period has expired. This com bination should not be used for
DFHLOG and DFHSHUNT.
AU TO DELETE(YES) RETPD (xx) All data is offloaded from interim storage. Offload data sets
are eligible for deletion w hen either all the data has been
deleted or the retention period has expired. This
com bination should not be used for DFHLOG or DFHSHUNT.
AUTO D ELETE(YES) R ETPD(0) Offload data sets are deleted w hen the next offload data set is
allocated. This com bination should not be used for DFHLO G
and DFHSHUNT as it is possible for recovery data to be
deleted, m aking backout im possible .
Figure 5-15 Offload data set deletion
When DFSMShsm is about to migrate (or restore) a data set, it holds the serialization lock
(ENQ) for the file. If System Logger attempts to allocate or connect to the file at this time,
Media Manager (a component of DFSMS) will return an error. The error as presented does
not indicate a temporary condition, so it’s treated as though the file is inaccessible and a
gap-type error or an offload failure is returned to CICS depending on which operation is in
progress.
Examples would be return code 8, reason code 84A, or return code 4 with reason code 403.
CICS treats this as a log integrity error and terminates with message DFHLG0772.
There are options to enable disaster recovery of CICS systems using log streams. The first is
to simply carry the CICS libraries to the remote site, define (or delete and redefine) the log
streams and issue an INITIAL start of CICS. However any transactions in-flight at the point of
failure would not be backed out, leaving an exposure for data issues.
The other option is to use a disaster recovery product such as Geographically Dispersed
Parallel Sysplex™ with Peer to Peer Remote Copy (GDPS/PPRC) or Extended Remote Copy
(GDPS/XRC) to propagate the DASD data to the remote site. Using either of these products
allows the mirroring of staging data sets, the LOGR CDS, the z/OS catalogs, all CICS data
sets, and all the System Logger data sets to provide a consistent state at the disaster
recovery site. Only when the secondary site has the data in a consistent state can an
emergency restart of the CICS regions be performed.
It is important to note Coupling Facility log stream must be duplexed to staging data sets in
order for this process to work.
With a synchronous mirroring technology, secondary data consistency does not come
automatically, it needs to be managed. This is one of the main reasons for the existence of
GDPS. GDPS/PPRC is a Continuous Availability solution, making major improvements to
application availability by automating error detection and error response.
Propagation delays resulting from long distances mean in many cases synchronous data
mirroring would have a large performance impact. This is one of the main reasons for the
existence of eXtended Remote Copy (XRC), a software-based data mirroring solution which
operates asynchronously.
It is important to remember since the copy technology is asynchronous, some data loss is to
be expected in a failover. On the other hand, the design of XRC ensures the data at the
remote site is time consistent, whereas this is not guaranteed with PPRC.
For information about sizing the permanent storage, refer to the discussion about “LS_SIZE”
on page 160 for CF-Structure log streams and “LS_SIZE” on page 165 for DASD-only.
There are many variables which must be taken into account when sizing a log stream, making
it difficult to get it perfect the first time. Once an initial size is determined, the log stream
performance must be monitored using the SMF Type 88 records produced by the System
Logger, and adjustments made as required.
Understanding the volume of data and the rate at which it is written is critical when sizing the
log stream interim storage.
At this point, a review of the basic System Logger concepts found in Chapter 1, “Introduction
to System Logger” on page 1 is in order.
To optimize use of the data space, and reduce the potential impact on z/OS storage,
residency time of the data should be kept to a minimum. For the CICS system log (DFHLOG
and DFHSHUNT), the data should be retained in interim storage until the associated UOW
commits or backs out. For non-system logs, all data is offloaded to the offload data sets so
the interim storage (CF structure or staging data set) should be sized to provide minimal
residency time.
Offload data sets contain data which has been offloaded from interim storage. Data is
offloaded from interim storage as part of the offload process, usually initiated when the
HIGHOFFLOAD threshold is reached. Offload data sets may be subsequently archived using
a product like DFSMShsm.
Once a starting size has been identified, the SMF Type 88 records should be used to tune
the log stream based on the activity during the key processing intervals.
When calculating the size of interim storage for a log stream, the following log stream
characteristics are important:
The number of IXGWRITE requests issued during a specified time interval.
– CICS requests the System Logger to record information in a log stream using an
IXGWRITE call. Each buffer passed may contain multiple CICS log records.
Each CICS system log stream will require enough storage to hold the data written in an
Activity KeyPoint (AKP) interval + the duration of the longest UOW. Structures should be
large enough to hold the sum of the data written for all connected log streams in the interval.
When migrating to CICS Transaction Server from an older release of CICS, the Log Stream
sizing migration utility (DFHLSCU) should be run against the system journal (DFHJ01) and
each user journal from the older release. DFHLSCU is discussed further in “DFHLSCU - Log
Stream Sizing utility” on page 186.
If pre-CICS Transaction Server journals are available, skip to “DFHLSCU - Log Stream Sizing
utility” on page 186.
Example 5-1 shows the error messages received when DFHLOG was allocated to a 2 MB
structure, when attempting to initialize CICS at CF Level 12.
The non-system logs (user journals, forward recovery logs, and auto journals) are considered
to be funnel-type log streams (all data is offloaded). The size of the interim storage should be
much smaller than the space allocated to the log data set in CICS V4.1. Oversizing
non-system logs increases the working set of the System Logger and may result in overall
system paging problems.
To be able to arrive at a ballpark value for the amount of interim storage required for the log
stream, collect data relating to the number of transactions, transaction duration, and the
journal activity in the CICS V4.1 region. The CICS statistics interval should be set to match
the SMF interval. In the sample case, the SMF interval and CICS statistics interval were set to
five minutes for a CICS V4.1 region. The CICS statistics interval is set using the CEMT
command while the SMF interval is set in SYS1.PARMLIB.
When using the z/OS Workload Manager (WLM) in goal mode, it is possible to define a report
class for CICS transactions. The report class is used to show the number of transactions
ended in the SMF interval, the transaction rate (number of transactions ending per second),
and the response time.
Figure 5-16 is an example of the information provided when a report class is used. In this
case all JOR* transactions have been grouped into a report class called RJORIY1 to identify
the transactions as having run in the IYOT1 region.
The information presented is for an SMF interval, which has been set to five minutes. The
number of transactions which ended in the interval was 16479, the transaction rate was 54.93
per second, and the average transaction duration (response time) was163 seconds.
Figure 5-16 RMF Report Class for the JOR* Transactions in a R410 region
Figure 5-17 provides the interval statistics for journals in a CICS V4.1 region during the same
five minute window used in Figure 5-16. The activity for Journal 1 indicates 1039743 records
were appended to the buffer, with 196349 blocks written. The average blocksize size was 560
bytes.
It’s important to understand the number and size of the records in CICS Transaction Server
are different than those written in CICS V4.1. So, although these numbers provide some
insight, the result will normally not be as accurate as using the DFHLSCU utility.
JOURNALS
________
Journal Journal Records Blocks Buffer Ave. O/P Last Vol Tapes Tapes Waits on Archives Datasets
ID Type Written Written Full Blk size Written Opened Left Archive Submit. Opened
_______________________________________________________________________________________________________
Note: The original formula used a value of 310 for fixed costs. As function has been added to
the CFCC code, the value has increased. Testing with CF Level 12 has shown the minimum
System Logger structure size is 4068K. For the purposes of this book, the fixed costs value is
being changed to 4068K. Subsequent tests show the resulting structure is slightly larger than
required, so the log stream activity should be monitored and the size adjusted to meet the log
stream requirements.
Using the formula for INITSIZE, we can estimate the size required using the CICS V4.1
information, based on the following information:
Transaction rate 54.93 per second.
Transaction duration .163 seconds.
63 journal buffer appends per transaction.
654.5 (196349 writes /300 seconds in the interval) journal writes (IXGWRITEs) per sec.
Average buffer size is 560 bytes.
AKPFREQ is set to 4000.
When a resource manager calls the CICS logger domain and the record is added to the CICS
log buffer -- it is considered a buffer append. AKPFREQ defines the number of buffer appends
before an activity keypoint is initiated.
akpintvl = AKPFREQ /((number of transaction in interval * buffer appends per trans)
= (4000 buffer appends) / (54.93 tran/sec * 63 buffer appends/trans)
= 4000/3460.6 = 1.16 seconds or 51.8 times per minute
Remember, the size required is workload dependent. Any deviations in the workload might
alter the amount of interim storage required.
There seems to be a additional variable with CF Level 12 based on the maximum structure
size (SIZE) specified in the structure definition. Testing using a 5 MB structure, based on the
above calculations, with log defer (LGDFINT) set to 5 milliseconds and 0, did not produce the
transaction throughput expected.
Example 5-2 Sample IXGRPT1 report along with data reported from RMF and DFH0STAT
BYT WRITTN BYT WRITTN BYT WRITTN AVERAGE
BY USERS TO INTERIM TO DASD #WRITES ---# WRITES COMPLETED------ BUFFER
-LOGSTREAM NAME- STRUCTURE NAME-- IXGWRITES STORAGE INVOKED TYPE1 TYPE2 TYPE3 SIZE
BYT DELETD # DELETES BYT DELETD # DELETS ---------------EVENT---------------
INTERIM ST W/O DASD INTERIM ST W/ OFF- DASD STRC NTRY STG STG RE-
W/O DASD WRITE W/DASD WRITE LOAD SHFT FULL FULL THLD FULL BLD
___________________________________________________________________________________________________________________
(A) AKPFREQ 1000 LGDFINT 5 10M structure HIGHOFFLOAD 80 LOWOFFLOAD 50
12/12/02 0:45:00 AM (SMF INTERVAL TIMESTAMP 'B8A9F9222BB00000'X)
IYOT1.CICS22.DFHLOG LOG_JG2_10M 4560403 5881856 0 7417 7371 46 0 614
4418914 7190 0 0 6 0 0 0 0 0 0
**********************************************************************************************************************
(B) AKPFREQ 1000 LGDFINT 00 10M structure HIGHOFFLOAD 80 LOWOFFLOAD 50
12/12/02 0:55:00 AM (SMF INTERVAL TIMESTAMP 'B8A9FB5E60100000'X)
IYOT1.CICS22.DFHLOG LOG_JG2_10M 320447741 531816704 0 1039948 1025325 14622 0 308
320157518 1039384 0 0 592 0 0 0 0 0 0
DASD-only
The following formula calculates the value to be specified on the STG_SIZE parameter of the
log stream definition; that is, the size is expressed as a number of 4K blocks:
Staging DS size [No. of 4K blocks] = (AKP duration) * No. of log writes per second for
system log
where:
AKP duration = (CICS TS 390 AKPFREQ) / (No. of buffer puts per second)
The values for the number of log writes per second and buffer puts per second can be taken
from your CICS/ESA 4.1 statistics.
The are also subtle differences in the amount of data written to the log/journal. In all cases,
each block written will contain a x'28' (decimal 40) byte header. For User journals, CICS
appends 68 bytes of information to each record written. For forward recovery and auto journal
log streams, 84 bytes of CICS information plus the length of the record key is appended to
each log record. Refer to CICS TS for z/OS Customization Guide, SC34-5989 for information
regarding the record format.
Another difference is the point in time the data is actually written to the log stream. For a User
and auto journal, the write happens when the buffer fills. For a forward recovery log, the data
is written at sync point.
In the following descriptions, the goal is to define the log stream so residency time is about
one minute. To reduce the overall impact to the z/OS image, the residency time should be
kept short, therefore reducing the working set for the System Logger.
For a DASD-only log stream, data is written in 4K (4096 bytes) control intervals (CI). This
means the size of the actual data placed into interim storage is rounded to a 4096 byte
boundary. Divide MAXBUFSIZE by 4096 to determine the number of CIs required to hold a
full buffer. The number of CIs also represents the number of pages required in the System
Logger data space (for both DASD-only and CF-Structure log streams). When MAXBUFSIZE
is set at 65532, it will hold up to 16 CIs of data.
For CF-Structure log streams, the data placed into interim storage is rounded to the element
boundary (256 or 512 bytes). For additional information refer to “IXGRPT1 observations and
possible actions” on page 195.
User Journal
For purposes of discussion, JORC is a CICS transaction which writes to a user journal. It
writes 80 byte records and there are 42 writes per task. The transaction rate is 6 transactions
per second, running in sequential order.
For DASD-only log streams, MAXBUFSIZE should be set to 65532. With a MAXBUFSIZE of
65532, subtract 40 bytes for the header, leaving 65492 bytes for data. Each record is 148
bytes (80 bytes of data plus 68 bytes of CICS information). Dividing 65492 by 148 yields a
record count of 442 will fit in the buffer.
442 records * 148 bytes/record = 65416 + 40 header = 65456 bytes will be used in each
buffer.
Since we know each transaction writes forty-two 148 byte records and the rate is 6
transactions a second, the data written in one second is 42*148*6= 37296 bytes. Divide
37296/4096 and rounding up indicates 10 CIs of data are written each second. The buffer
holds 16 CIs of data so the buffer will fill every 1.6 seconds or 37.5 times a minute. This
equates to 600 CIs/minute (16 CIs per second * 37.5 fill intervals per minute).
If you want to have an offload occurring roughly once every minute, you must size the data
set so that the HIGHOFFLOAD value equates to 600 CIs. For example, if HIGHOFFLOAD is
set to 85%, STG_SIZE would be set to 706 ((100/85) * 600).
The SMF Type 88 data shown in Figure 5-18 reports the results. The SMF interval has been
set to five minutes, note there have been five offloads in the five minute interval. Also note the
STG THLD field is also equal to five, indicating there were no IXGWRITE calls issued for this
log stream while the offloads were running.
For a CF-Structure log stream the process is the same, but you must determine how much of
the structure will be occupied by the log stream. A point to remember is the data is rounded to
a 256 byte boundary when the buffer is written (assuming you used the recommended
MAXBUFSIZE of 64000).
With the same transaction rate and record size (42 148-byte records per transaction with a
transaction rate of six transactions a second), the data written in one second is 42*148*6=
37296 bytes.
Using a CF-Structure log stream which has a MAXBUFSIZE of 64000, 432 records can be
written to the buffer ((64000-40)/148).
432 records * 148 bytes/record = 63936 + 40 header = 63976 bytes will be used in each
buffer. The size is then rounded to a 256 byte boundary, making it 64000.
Using a HIGHOFFLOAD value of 85%, the portion of the CF structure available to this log
stream should have a size of 2.59 MB (2.2 MB * 1.18) in order to provide a residency time of
one minute.
System Logger requires some space for control information, so the size should be rounded
up. The structure size should be based on the sum of the calculated values for each stream,
plus about 4 MB for System Logger control information (based on CF Level 12).
Auto Journal
To size a DASD-only auto journal, the process is much the same as described for a User
journal. However, in the case of an auto journal CICS will add 84 bytes, plus the length of the
key to each block of data. A 40 byte header is also written at the beginning of each block. The
sample used in this case is the same transaction (JORC) (without the writes to the user
journal). It reads from a VSAM file and rewrites the same record, with JNLUPDATE bring
specified for the file. The records are 80 bytes with a 6 byte key, there are 30 log writes per
task, and the transaction rate is 6 per second.
MAXBUFSIZE is set to 65532 (this is a DASD-onlylog stream). Subtract 40 bytes for the
header, leaving 65492 bytes for data. Each record is 170 bytes (80 bytes of data + 6 byte key
+ 84 bytes of CICS information). Dividing 65492 by 170, 385 records can be written in each
buffer. Therefore, 385 records * 170 bytes per record + the 40 byte header = 65490 bytes will
be used in each buffer.
We know each transaction writes thirty 170-byte records and the rate is 6 transactions a
second, so the data written in one second is 30*170*6 = 30600 bytes.
Divide 30600 bytes/second by 4096 bytes/CI and round up for a value of 8 CIs of data. The
buffer holds 15 CIs of data (65492/4096) so the buffer will fill every 1.875 seconds or 32 times
per minute.
If the desired offload rate is once every minute, the staging data set must be sized so the
HIGHOFFLOAD value equates to 480 CIs. For example, if HIGHOFFLOAD is set to 85%,
STG_SIZE would be set to 565 ((100/85) * 480).
Figure 5-19 Sample IXGRPT1 report for a DASD-only Auto Journal log stream
For a CF-Structure log stream, the process is the same, but you must determine how much of
the structure will be occupied by the log stream. Another point to remember is the data is
rounded to a 256 byte boundary when the buffer is written (assuming you used the
recommended MAXBUFSIZE of 64000).
With the same transaction rate and record size (thirty170 byte records per transaction with a
transaction rate of 6 transactions a second), the data written in one second is 30*170*6=
30600 bytes. A 40 byte header is added at the start of each buffer.
Using a CF-Structure log stream which has a MAXBUFSIZE of 64000, 376 records can be
appended to each buffer ((64000-40)/170).
376 records * 170 bytes/record = 63920 + 40 header = 63960 bytes will be used in each
buffer. The size is then rounded to a 256 byte boundary, making it 64000.
Writing 30600 bytes per second gives a buffer fill rate of once every 2.0 seconds
(64000/30600) or 30 times per minute.
Using a HIGHOFFLOAD value of 85%, the portion of the CF structure available to this log
stream should have a size of 2.27 MB (1.92 MB * 1.18) in order to provide a residency time of
one minute.
System Logger requires some space for control information, so the size should be rounded
up. The structure size should be based on the sum of the calculated values for each stream,
plus about 4 MB for System Logger control information (based on CF Level 12).
Once again, the JORC transaction is used with a transaction rate of 6 per second. Since the
records are forced at sync point, the number of records logged in the UOW must be
understood. In the sample, the transaction issues 7 read/updates followed by a rewrite in
each UOW. The records logged are 80 bytes in length with a 6 byte key. There are multiple
Each record is 170 bytes (80 bytes of data + 6 byte key + 84 bytes of CICS information). The
amount of data written for each UOW, is (7 records per UOW) * (170 bytes per record) + 40
(header) = 1230 bytes. So even though MAXBUFSIZE is set to 65532, the actual buffer space
used is only 1230 bytes per UOW. There are 6 UOWs per task. With a transaction rate of 6
transactions per second, each writing 6 buffers (1 for each UOW), there are a total of 36
1230-byte buffer writes per second (44,280 bytes).
For DASD-only, each buffer write requires a 4 KB CI, even though there are only 1230 bytes.
Therefore, 36 CIs are used each second, 2160 (36*60) are used in a minute. In this case,
2160 CIs times 1.18 (assuming HIGHOFFLOAD of 85%) = a STG_SIZE of 2549 for a
residency time of one minute.
Using an STG_SIZE of 2549 CIs, the SMF Type 88 data Figure 5-20 shows 5 offloads in the 5
minute SMF interval. Note the number of staging thresholds is 55, indicating an average of 10
log writes were performed during each of the offload periods. Ten isn't anything to worry
about; however, if the number begins to grow it may be an indication of problems in the
offload processing, such as allocation of a new offload data set. Another option would be to
increase the STG_SIZE slightly to allow more data to be written between each offload.
Figure 5-20 Sample IXGRPT1 report for a DASD-only Forward recovery log
For a CF-Structure log stream, the process is the same, but you must determine what
percentage of the structure will be occupied by the log stream. Also remember the data is
rounded to a 256 byte boundary when the buffer is written (assuming the recommended
MAXBUFSIZE of 64000 is used).
The transaction rate and record size (six 1230-byte records per transaction with a transaction
rate of six per second) remain the same.
Using a CF-Structure log stream which has a MAXBUFSIZE of 64000, the size of the data
written (1230) is rounded to a 256 byte boundary, 1280 bytes.
There will be 36 buffers written in a one minute interval (6 per transaction and 6 transactions
per second), so the data written is:
1280 bytes/buffer * 36 buffers/minute = 46080 bytes per minute.
Using a HIGHOFFLOAD value of 85%, the portion of the CF structure available to this log
stream should have a size of 55 KB (46080 * 1.18) to provide a residency time of one minute.
System Logger requires some space for control information, so the size should be rounded
up. The structure size should be based on the sum of the calculated values for each stream,
plus about 4 MB for System Logger control information (based on CF Level 12).
When migrating to CICS Transaction Server from an older release of CICS, the Log Stream
sizing migration utility (DFHLSCU), provided in CICS Transaction Server, should be run
against the CICS V4.1 system journal (DFHJ01). It’s best to use the journal from a busy day
in order to size for the peak workload.
DFHLSCU divides the CICS V4.1 journal into time segments based on the INTERVAL
parameter supplied as input for the job. It then analyzes the log records found in each
segment to determine the busiest segment based on the logging activity. The busiest
segment is then used to determine the parameters for your log stream definitions and space
requirements.
DFHLSCU reads the CICS V4.1 journal and converts the record sizes to the equivalent
values for CICS Transaction Server. Multiplying the number of each record type by the record
sizes for CICS Transaction Server provides the amount of data which will be written in a given
interval.
The IXGSIZE service of the System Logger is then called to provide a size estimate for the
interim storage portion of the log stream.
A value of 0 should not be specified for the INTERVAL value. A value of 0 indicates all
records on the journal are to be considered as written in the same interval, that is, no
time-segmenting is to occur and the period covered by the entire data set is to be used. The
result will be a recommendation for a very large interim storage for the log stream.
When using DFHLSCU to define the size for DFHLOG, the value specified for TRANSDUR
should reflect the length of time between sync points in the applications. The default for
TRANSDUR is 3 seconds; remember this is not transaction response time unless the
transaction does not issue sync points, that is, the transaction contains only one unit of work.
The actual value for the transactions in the region being migrated should be used.
If the transactions consist of a single UOW, the response time may be used.
Refer to the manual CICS TS for z/OS Operatins and Utilities, SC34-5991 for further details.
Tip: The transaction rate and response time may be obtained by defining an RMF Report
Class for each group of transactions or for all transactions within a region. The report in
Figure 5-21 shows the transaction rate is 34.61 trans/sec with a response time of 0.259
seconds. Report Classes can be defined for CICS V4.1 as well CICS Transaction Server.
Refer to “Defining Service Classes and Performance Goals” in z/SO MVS Planning:
Workload Management, SA22-7602.
5.3.6 Performance
Obtaining the best performance is a matter of tuning for the optimum data residency time in
interim storage. For CICS system log streams (DFHLOG and DFHSHUNT), data required for
backout and recovery should be available in interim storage for the duration of the unit of
work. For non-system log streams, the data residency time should be such that a steady
movement of data from interim storage to the offload data sets is observed while requiring a
minimal amount of storage to duplex the data within the System Logger data space.
The performance of CICS log streams is influenced by the sizing, type, and placement of the
log streams. In addition, activity keypoint frequency (AKPFREQ), and the log defer interval
It’s important to remember the IXGWRITE calls are issued under the CICS Quasi-Reentrant
(QR) TCB, hence the CPU time is charged to the transaction.
Performance tools
Performance data is available from several sources:
SMF Type 88 records produced by the z/OS System Logger.
SMF Type 110 data produced by CICS.
Includes both statistical and performance data.
SMF Type 70-78 data produced by RMF (or an equivalent product).
There are several tools which aide in the analysis of log stream performance problems:
DFH0STAT - a CICS-supplied sample transaction (STAT) collects the CICS statistics and
writes them to the CICS JES log. Refer to “DFH0STAT” on page 188 for details.
DFHSTUP (CICS Statistics Utility Program) - used to post-process the CICS SMF Type
110 sub type 2 statistical records. Refer to “DFHSTUP” on page 192 for details.
CICS Performance Analyzer (part of the CICS Tools portfolio) - used to post-process the
CICS SMF 110 sub type 1 performance records and SMF Type 88 records. Refer to “CICS
Performance Analyzer” on page 193 for details.
IXGRPT1 (sample program provided with z/OS) formats and reports the SMF Type 88
data produced by the z/OS System Logger. Refer to “SMF Type 88 records and IXGRPT1
program” on page 291 for an explanation of the report fields. Refer to “IXGRPT1
observations and possible actions” on page 195 for a description of the fields which are
interesting in a CICS environment.
Various RMF reports (Coupling Facility Activity reports, Workload Activity reports) based
on the data captured in the SMF 70 -78 records. Refer to “RMF Coupling Facility Activity
Report” on page 287 for details.
The sample DFSORT jobs provided with this book in 8.6.5, “DFSORT jobs to format SMF
88 records” on page 297. These reports provide similar information to the IXGRPT1
program, however they allow you to summarize all the activity by log stream rather than by
interval, and they are also more readable than the IXGRPT1 output.
DFH0STAT
(Use: Dynamically gather CICS statistics)
Applid IYOT1 Sysid JIM Jobname IYOT1 Date 01/30/2000 Time 01:56:47 CICS 5.3.0
__________________________________________________________________________________________________________________
System Status
_____________
MVS Product Name. . . . : MVS/SP6.1.0
Activity Keypoint Frequency. . . . . . . : 4,000
Logstream Deferred Force Interval. . . . : 30
Use Sys Max Block DASD Retention Auto Stream Browse Browse
Logstream Name count Status Log Structure Name Length Only Period Delete Deletes Starts Reads
_________________________________________________________________________________________________________________
IYOT1.DFHLOG 1 OK YES 65,532 YES 0 NO 3 34 0
IYOT1.DFHSHUNT 1 OK YES LOG_JG 64,000 NO 0 NO 1 0 0
IYOT1.J02 1 OK NO 65,532 YES 0 NO N/A N/A N/A
In the log stream statistics we see each log stream connected to this CICS region. If the log
stream resides in a CF structure, the structure name is given; if it is a DASD-only log stream,
the structure name is blank. In the example, IYOT1.DFHLOG and user journal J02 are
DASD-only log streams, while IYOT1.DFHSHUNT is a CF-Structure log stream in structure
LOG_JG.
The values under Max Block Length are worth noting. This value is specified in the log stream
or structure definition and is returned to CICS when it connects to the log stream. For a
CF-Structure log stream the blocksize is specified as MAXBUFSIZE on the structure
definition. The value specified in MAXBUFSIZE determines the element size for the log
streams in the structure. If the MAXBUFSIZE is specified equal to or less than 65276, the
element size is 256; if greater than 65276 the element size is set to 512.
For DASD-only log streams, MAXBUFSIZE may be specified on the log stream definition.
MAXBUFSIZE defines the largest block which can be written to the log stream. The default
value is 65532.
In either case, the MAXBUFSIZE value is returned to CICS and is used to determine the
CICS log stream buffer size. Note, for user journals, unless the application uses the WAIT
option, the IXGWRITE call is issued when the buffer fills. Refer to the Average Bytes column.
This is the average buffer size written using IXGWRITE calls. For DFHJ02 the average size is
65,485. It is sometimes advantageous to reduce MAXBUFSIZE on a user journal to force the
data into the log stream more frequently. This reduces the residency time and allows quicker
access to the data from batch applications.
It’s also worth noting in the case of a hard failure (MVS, CICS, or the hardware) where the
data has not be written to the log stream, it will be lost. For DFHLOG and DFHSHUNT, when
the region is emergency restarted, in-flight tasks would be backed-out using the information
which had already been written to the log.
In the case of a user journal, the data in the buffer would be lost. There is no transaction
backout associated with data lost in a non-system log buffer.
The columns entitled DASD Only, Retention Period, and Auto Delete reflect the attributes
specified for the log stream in the System Logger policy.
The value under Browse Starts is a count of the number of times a browse start request is
issued. Prior to CICS Transaction Server V2.2, a large value may be observed for DFHLOG
in a low volume region, due to CICS using a Browse Start to verify the System Logger is still
operational. In CICS Transaction Server V2.2, a change was implemented to call the System
Logger function CHECK_CONNECTION_STATUS and as a result this number may not be as
large as in a CICS Transaction Server V2.2 system.
The Browse Reads column reflects the number of times CICS reads the log stream to obtain
information for transaction backout.
The number of Write Requests is the number of times CICS called the System Logger via an
IXGWRITE. The number of Buffer Appends is a count of the times a record was added
(appended) to the CICS log buffer. The number is normally larger than the number of Write
Requests due to calls to the CICS logger domain which do not include the force option. For
example, the records produced during activity keypoint processing are not written with the
force option. In contrast, the before images for a recoverable VSAM file are written with the
force option specified. Unfortunately it is not possible to predict what percentage of writes will
be with the force option, it depends on the work load. If the workload is comprised of mostly
updates for a recoverable VSAM file, most of the records on DFHLOG will be forced. If the
bulk of the records are the result of an activity keypoint we simply append the records without
force.
Buffer Full waits is a count of the number of attempts to append a record to the current log
stream buffer while the buffers were logically full. This situation arises when the current log
stream buffer does not have sufficient space to accommodate the journal record, and the
IXGWRITE is still in progress for the alternate log stream buffer.
Force Waits is the total number of tasks suspended waiting for an IXGWRITE call to
complete.
Buffer Full Waits and Force Waits can be an indication there is a delay in I/O processing.
They can also be an indication the log defer interval is too large. Additional items to check are
the CF service times for a Coupling Facility log stream or DASD I/O time for DASD-only log
streams.
If Buffer Full and Force waits are seen consistently, verify the value for LGDFINT is set to 5. If
the Task Journal Wait Time (JCIOWTT) is very close to the LGDFINT value, then the
LGDFINT value should be decreased. Prior to CICS Transaction Server V2.2, the default
value was 30. Normally the recommendation is not to reduce the value lower than 5,
however, in a very high volume region it may be advantageous to set as low as 0 for
CF-Structure log streams. In addition, CF service time (for CF-Structure log streams) or
DASD I/O time should be investigated.
Setting LGDFINT to zero causes the data to be written to the log stream (via an IXGWRITE)
immediately without waiting for additional records to be added to the buffer.
The Peak Waiter field contains the high water mark of the number of tasks (UOWs) waiting
for a buffer to be written. The Current Waiter field is the number of tasks (UOWs) waiting for a
buffer to be written at the point in time the statistics were collected.
With CICS Transaction Server V2.2, DFH0STAT has been enhanced. The format has been
changed for ease of reading and information has been added to calculate (and display) the
number of log stream writes per second. The samples in Figure 5-23 and Figure 5-24 on
page 192 show the format of the new reports.
Applid IYOT1 Sysid IYO1 Jobname IYOT122 Date 08/11/2002 Time 13:50:13 CICS 6.2.0
____________________________________________________________________________________________________________________
System Status
_____________
MVS Product Name. . . . . . . : MVS/SP7.0.4 CICS Transaction Server Level . . : 02.02.00
CICS Startup. . . . . . . . . : INITIAL
CICS Status . . . . . . . . . : ACTIVE RLS Status. . . . . . . . . . . . : RLS=NO
Storage Protection. . . . . . : ACTIVE RRMS/MVS Status . . . . . . . . . : OPEN
Transaction Isolation . . . . : ACTIVE
Reentrant Programs. . . . . . : NOPROTECT VTAM Open Status. . . . . . . . . : OPEN
IRC Status. . . . . . . . . . . . : OPEN
Force Quasi-Reentrant . . . . : No TCP/IP Status . . . . . . . . . . : OPEN
-------------------------------------------------------------------------------------------------------------------
Applid IYOT1 Sysid IYO1 Jobname IYOT122 Date 08/12/2002 Time 08:31:13 CICS 6.2.0 PAGE 11
___________________________________________________________________________________________________________________
Logstreams - Resource
_____________________
Use Sys Max Block DASD Retention Auto Stream Browse Browse
Logstream Name Count Status Log Structure Name Length Only Period Delete Deletes Starts Reads
____________________________________________________________________________________________________________________
IYOT1.CICS22.DFHLOG 1 OK YES LOG_JG_20M 64,000 NO 0 NO 1,896 0 0
IYOT1.CICS22.DFHSHUNT 1 OK YES LOG_JG_20M 64,000 NO 0 NO 1 0 0
_____________________________________________________________________________________________________________________
Logstreams - Requests
_____________________
Write Average Buffer Buffer Force Current Peak Retry
Logstream Name Requests Bytes Written Bytes Appends Full Waits Waits Waiters Waiters Errors
____________________________________________________________________________________________________________________
IYOT1.CICS22.DFHLOG 445,574 443,483,499 995 1,895,148 0 428,880 1 10 1
IYOT1.CICS22.DFHSHUNT 0 0 0 0 0 0 0 0 0
DFHSTUP
(Use: Evaluate the CICS statistics on a CICS statistics interval or daily basis)
The CICS statistics utility program, DFHSTUP, is an offline utility which processes CICS
statistics information contained in SMF Type 110 subtype 2 records. The CICS statistics
domain records interval statistics when the system initialization parameter STATRCD=ON is
specified. Other statistics record types (unsolicited, requested, and end-of-day) are written
regardless of the setting of the STATRCD option. For additional information about DFHSTUP
refer to CICS TS for z/OS Operatins and Utilities, SC34-5991.
A separate version of DFHSTUP is provided with each release of CICS, so the correct
version must be used to process the data.
CICS 5.3.0 Statistics Utility Program Report Date 05/31/2003 Report Time 09:10:01
End of Day Statistics Report
Collection Date-Time 05/31/2003-08:51:02 Last Reset 08:43:28 Applid IYOT3 Jobname IYOT3
_________________________________________________________________________________________________________________
JOURNALNAME STATISTICS
In the sample report, notice the log stream IYOT3.DFHLOG has been specified with a
MAXBUFSIZE of 60000, is allocated to structure LOG_JG2_20M, has a retention period of 0,
and auto delete is set to NO.
The EOD report shows the overall summary for the day. To collect interval statistics, the
interval may be set using the STATINT= system initialization parm, or it can be set via the
CEMT master terminal transaction.
CICS PA is a post processor for CICS SMF Type 110 subtype 1 records. It provides the ability
to summarize by CICS monitoring fields, and display the API calls and resources used, along
with CPU per transaction and response time.
In Release 2 of CICS Performance Analyzer, the product was enhanced to provide support
for the System Logger SMF Type 88, and SMF Type 101 records produced by DB2®. The
Logstream name MVSID Structure name First interval start Last interval stop Total Interval
IYOT1.CICS22.DFHLOG SYSD LOG_JG2_5M 17:15:00.00 5/27/2003 17:20:00.00 5/27/2003 0000:05:00
IYOT1.CICS22.DFHLOG LOG_JG2_5M 324226786 556595200 35060218 1138714 1072720 46589 19401 284
302169464 1067720 30935658 103114 378 5 5 3470 0 0 0
Performance Analysis
Following are considerations about performance for CICS log streams.
The placement and size of the log stream(s) you wish to tune must be understood. For
example, are the staging and offload data sets allocated to DASD pools which provide the
best performance? This not only includes the actual device access time, but activity which
could make the device unavailable. For example, a reserve from another system or high
activity data sets which could result in the request being queued.
Is there possible contention between log streams? For example, when there are multiple log
streams in a given structure, do they have similar characteristics, that is, the volume and
block size of the data written?
If the log stream in question resides in a CF, determine the largest average buffer size for log
streams in the structure. This value is used to determine the entry-to-element ratio. The
element size is determined by the MAXBUFSIZE value specified when the structure is
defined in the System Logger policy (using IXCMIAPU). When the value is equal or less than
65276, the element size is 256. If the value specified is greater than 65276, the element size
is 512.
For example, if the element size is 256 and the IXGWRITE is for 734 bytes, 3 elements are
required.
The entry-to-element ratio is dynamically adjusted based on a current snapshot of the usage
of all log streams connected to the structure. The snapshot will be taken about every 30
minutes and the ratio adjusted if necessary. For more information, refer to “The
entry-to-element ratio” on page 26.
If there are 3 log streams in the structure, with average buffer sizes of 1800, 1450, and 734,
System Logger will use the current real time average (how many records of each size) to
define the entry-to-element ratio. Assuming an element size of 256 bytes, if most of the
records are in the 1800-byte range the average would be 1:8. This means we expect to use 8
elements for each entry.
Consider the case where the application writes many short records, say 200 bytes, to the
same log stream resulting in an average size of 734. In this situation, one entry is still used for
each write, but only one of the eight assumed elements is used. The net effect is more entries
are used than predicted leading to an entry full condition before HIGHOFFLOAD can be
reached. Offload will be triggered, but there is no extra room to write additional records until
some space is recovered. In this situation the NTRY FULL count will be equal to or greater
than the number of offloads.
The important point to remember is a log stream performs best when it is contained in a
structure where all log streams have similar characteristics (that is, average buffer size and
amount of data written). Typically, the log streams for TORs, AORs, and FORs are different
and should not be mixed. Even among AORs, two AORs may have completely different log
stream characteristics. In addition, DFHLOG and DFHSHUNT should not be placed in the
same structure.
Prior to z/OS 1.2, CF writes greater than 4 KB are written asynchronously which can increase
response time. However, z/OS 1.2 introduced a new heuristic algorithm for deciding whether
a given CF request should be sent synchronously or asynchronously. This new algorithm is
discussed in Washington System Center Flash10159. The important point is that System
Logger knows whether a given IXGWRITE request will be processed synchronously or
CF Hardware
It’s very important to understand if the log streams will be in a structure which resides in a
standalone CF or in a CF which resides in the same CPC as one or more of the connected
systems.
A standalone CF is considered volatile when it no longer has a battery backup—that is, in the
event of a power loss, the data could not be preserved. If the CF is in the same physical CPC
as the z/OS LPAR, it is considered to be failure dependent, or in the same failure domain. In
either case, System Logger will (if STG_DUPLEX(YES) is specified for that log stream)
duplex the data to the staging data set rather than its data space. This ensures data integrity,
but increases the cost and response time for log writes.
A symptom of this condition is when the CICS address space is initializing and messages are
received indicating a staging data set is being formatted. Refer to “STG_SIZE” on page 162
for considerations during log stream definition.
The workload consists of up to three CICS regions (CICS Transaction Server V2.2 and V1.3)
executing under z/OS R1.4.
For the test runs, a transaction (JORM) was started via terminal input. The application reads
and writes 7 records from/to a VSAM file (FILEA), issues a sync point, then repeats the
process 6 times. It then issues an EXEC CICS Start for ten transactions (JORA-J). Each of
these transactions reads and writes 7 records from/to a unique VSAM (FILEA-J), issues a
sync point and repeats the process six times. It will then issue an EXEC CICS START for
itself. This will repeat up to the number of repetitions passed from JORM (x'7500'). The 10
tasks run in parallel for 30 minutes and the region is then canceled. In cases where 3 regions
are used, the process is the same in each region.
The only log streams that we are interested in these sample study are DFHLOG and
DFHSHUNT. The log streams are varied between a CF-Structure log stream and DASD-only.
No data is ever written to DFHSHUNT during the tests.
The data presented in each sample begins with the SMF Type 88 data followed by a
combination (hand crafted to reduce the presentation space) of data from RMF and the CICS
110 records. The RMF information is taken from the workload activity reports for the CICS
and System Logger address spaces. The CICS-specific information is taken from
summarized CICS 110 records using the CICS Performance Analyzer.
The sample on Figure 5-28 shows and explain the set od data collected for each run. These
collection of data summarizes what is required to understand the CICS and system logger
environment and should represent what kind of data you are collecting in your installation
whenever you are evaluating this environment.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
DASD 0.4 8.3 0.2 .197 0.005 50.1582 50.0519 .0988 0.1 0 2.3 0.1 2571.42 1025.06 1546.36
The number of transactions per second is taken from the transaction report class.
Average CPU per task, Average response time, Average JC Wait, and Average File Wait
times are taken from the CICS PA reports.
The data on the right starting with LOGR TCB is for the System Logger address space
(IXGLOGR), taken from the RMF report class reports.
To understand the effects of different LGDFINT values, three different runs of the workload
has been executed with different set up using a DASD-only log stream, however the results
are equally applicable to CF-Structure log streams. The following are the results of the three
runs to illustrate the different behaviors. The log stream was defined with a HIGHOFFLOAD
of 80, LOWOFFLOAD of 50 and a STG_SIZE of 2518. AKPFREQ was set at 1000.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
DASD 1.6 37.8 0.6 1.57 .0044 11.11 11.042 0.0608 0.1 0.1 8.4 0.1 2949.35 859.09 2090.26
Logstream Writes/sec: 10.42
The first sample is shown in Figure 5-29. LGDFINT was set at 30 milliseconds.
At first glance, the SMF Type 88 data indicates the log stream is working fine; no data is
being offloaded to the offload data set (BYT DELETD INTERIM ST W/DASD is zero). There
was a single staging threshold and one offload.
The problem is not the log stream function, but rather the fact that very little work is being
processed in the CICS region and the average response time is high.
From the RMF data, observe the CICS TCB time is very low (1.6 seconds), with a response
time of 11.11 seconds. Also note CICS is only issuing an average of 37.8 DASD I/O per
second. This DASD I/O has nothing to do with System Logger, but rather the CICS VSAM file
accesses which is a direct reflection of the number of file control requests in the region.
Finally notice the CICS region is only using 0.6% of an engine during this interval.
The average response time per transaction is 11.11 seconds with an average CPU per task of
0.0044 seconds. Note, of the 11.11 seconds response time, an average of 11.042 seconds is
spent waiting for journal I/O to complete, although there are no constraints in system logger.
The delay might be because CICS is waiting for the LGDFINT interval to expire before issuing
and IXGWRITE. In the next run, LGDFINT will be decreased.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
DASD 5.4 140.4 2.2 4 .0039 3.0288 2.9631 0.059 0.1 0.2 27.3 0.1 2850.76 859.08 1991.68
Logstream Writes/sec: 29.85
In the second sample, shown in Figure 5-30, LGDFINT was reduced to 5, all other parms
remained the same. This change brought the transaction throughput up from 1.57 per second
in sample 1 to 4 per second in sample 2, and the average response time has dropped from
11.11 to 3.0288 seconds.
When evaluating CICS transaction performance issues it’s important to remember there are
multiple parts in transaction response time. The two major categories are execution and
suspend time. Execution time is when the application, CICS management modules, exit
programs, and so on, are processing as part of the transaction. In the workload used, the
suspend time is comprised of waiting for VSAM file I/O and log/journal writes. Wait for
redispatch is the portion of suspend time after the ECB is posted until the task is
redispatched.
Reducing the value for LGDFINT from 30 to 5 means each force write will only be held for 5
ms, rather than 30 before the IXGWRITE is issued. This reduces the opportunity for additional
records to be added to the buffer, but it also reduces the time a task must wait for the log write
to complete.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
DASD 85.3 2277 35.2 56.83 .0038 0.1845 0.1224 0.0556 0.2 3.9 572.8 1.8 3092.09 859.08 2233.01
Logstream Writes/sec: 569.75
Due to the workload and the journal wait time in Figure 5-30 on page 201, the log defer
interval was removed by setting it to 00. Figure 5-31 shows some interesting results.
Setting LGDFINT to 0, means CICS will issue the IXGWRITE immediately after the log data is
appended to the buffer.
Notice the number of IXGWRITES has increased from 8041 in sample 2 to 170861 in sample
3, an increase of over 21 fold. It’s also interesting to note there are still multiple records per
buffer (the average buffer size is 1078), indicating tasks are adding data to the buffers in the
time it takes for each IXGWRITE to complete.
With the effective reduction in IXGWRITE time, there’s a significant increase in transaction
throughput. The transaction rate has increased from 4 transactions per second in sample 2 to
56.83 per second in sample 3, a 14 fold increase.
The average response time dropped to 0.1845, with a huge increase in the DASD I/O for both
CICS and System Logger. The increase in CICS TCB time from 5.4 to 85.3 CPU seconds
reflects a large increase in the amount of work being processed in the CICS region. Note that
0.1224 seconds of 0.1845 total seconds average response time per transaction are spent
waiting for log writes to complete.
The increase in DASD I/O in the System Logger address space clearly reflects the fact CICS
is issuing 569.75 log writes per second. From the RMF data (although not shown in
Figure 5-31) the DASD requests in the System Logger address space are averaging 1.3
milliseconds.
The average System Logger storage frames for the CICS log streams has grown from 8.56M
in the first sample to 9.15M in the third sample. The 0.59M increase is a small cost for the
increase in throughput, increasing from 4 transactions a second in sample 2 to 56.83
transactions a second in sample 3.
The log defer interval value (LGDFINT) may be changed using CEMT I SYS. Evaluation of
the results is much easier if the changes coincide with an SMF interval.
Although activity keypoint frequency was used in CICS/ESA V4.1, it has taken on a more
significant role in CICS Transaction Server. In CICS/ESA V4.1, AKPFREQ was a measure of
the physical I/O issued to the system journal (DFHJ01). In CICS Transaction Server, it is a
measure of the number of appends to the log stream buffer for DFHLOG. In CICS/ESA V4.1,
it was common practice to specify AKPFREQ to provide an activity keypoint every 15
minutes. In CICS Transaction Server, the value should be set to ensure an activity keypoint is
taken more frequently.
It’s important to remember tail trimming is initiated for DFHLOG and DFHSHUNT during the
CICS activity keypoint process. The value specified for AKPFREQ defines the frequency an
activity keypoint is taken, therefore the frequency of tail trimming, which has a major impact
on the data residency time. Trimming the tail of the log removes records which are no longer
required for backout and recovery, therefore making space available in interim storage.
With a larger AKPFREQ value, the length of time between activity keypoints increases,
therefore additional data is retained in interim storage. Either data will be offloaded, costing
I/O and overhead to the offload data sets, or the size of interim storage will need to be
increased, leading to additional storage requirements in the System Logger data space.
In a very busy region, it is not uncommon to observe an activity keypoint being taken every
minute.
When HIGHOFFLOAD is reached, System Logger executes the following tasks as part of the
offload process:
Physically delete any data which has been logically deleted because of the AKPFREQ
activity — and this is the goal for the DFHLOG and DFGSHUNT log stream.
If the previous task does not take the log stream below the LOWOFFLOAD point, data is
physically offloaded to the offload data set until the LOWOFFLOAD point is reached.
Remove data no longer required from the data space.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
CF64 179.0 3550 65.04 65.04 .0063 0.1183 0.0068 0.1032 0.5 12.2 101.1 6.0 14906.1 8933 5973.1
Logstream Writes/sec: 2981.83
Examination of the SMF Type 88 data reveals 121753484 bytes were deleted after being
moved to the offload data set. The number of NTRY FULL conditions was so large it does not
fit in the report -- symbolized by the ****. Both conditions suggest either the data residency
time is too long or the log stream size is too small. If this log stream were a DASD-only, the
symptom would probably be STG FULL.
For this reason, in the next sample, the following changes have been made:
CF structure storage size increased to 20MB
AKPFREQ value reduced to 4000
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
CF64 173.7 3529 66.1 73 0.0053 0.1191 0.0069 0.1035 0.2 15.3 90.1 5.3 15286 8933 6353
Logstream Writes/sec: 3370.32
Examination of the SMF Type 88 data for this sample shows data is no longer being deleted
after having been moved to the offload data set, with no negative events. The number of
initiated offload processes has decreased to 302, indicating better use of interim storage. This
The System Logger TCB, SRB and APPL% remained constant for the period.
In the following sample, the AKPFREQ has been further reduced to a value of 2500 and you
can observe the results in Figure 5-34.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
CF64 178.9 3545 66.2 77.38 0.0053 0.1185 0.0069 0.1030 0.2 15.2 92.1 5.2 14844.5 8933 5911.5
Logstream Writes/sec: 3524.03
The SMF Type 88 data show the results of trimming the tail even more frequently. The log
stream continues to run very well. The number of offloads is even lower because in this case
system logger probably was capable to go beyond the lowoffload threshold boundary while
physically deleting the records that have been logically deleted during the more frequent
AKPFREQ activity. As consequence, also the number of TYPE 2 writes is down, and there
are no negative events recorded.
The System Logger TCB, SRB and APPL% remained constant for the period.
The offload value in the SMF 88 records is the number of times the offload process is
initiated. Notice, there are no negative event indicators; all offloads are due to reaching the
HIGHOFFLOAD point. Good offloads are those initiated because we reach the
HIGHOFFLOAD value. Bad offloads are the ones which are the result of things like structure
full, and so on.
The negative side of reducing the AKPFREQ value is it increases the number of CSKP
transactions (activity keypoint) which run in the interval.
There is a balance point between the number of activity key points taken, the log defer
interval and the size of the log stream interim storage. Each should be considered when
evaluating log stream performance.
Not every region responds in this manner, so each region should be evaluated individually.
The number of activity keypoints should also be monitored using the DFHRM0205 messages.
The intent is not to cause an excessive number of CSKP tasks to run, but to optimize the log
stream operation. In a busy region, a target of one activity keypoint every 40 to 60 seconds is
good.
Tip: When changing the AKPFREQ (activity keypoint frequency) value using CEMT I SYS,
it is best to make the changes coincide with an SMF interval, making it easier to evaluate
the results of the change.
The next samples show the effects of having a forward recovery log for one VSAM file in the
region.
In sample 17 (Figure 5-35) there is a single CICS region, with DFHLOG allocated in a CF
structure (LOG_JG2_20M). The region also has a forward recovery log
(&applid..&SYSID..DFHJ03) for one of the files (FILEC). In the sample reported in
Figure 5-35 the user journal was defined as a DASD-only log stream with STG_SIZE of
25000 4K CIs, which can hold 102.4M of data.
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
CF64 215.3 4433 79.7 105.53 .0062 .1007 .0060 .0842 0.1 17.6 83.4 6.0 31757.0 12760 18997
3619.24 logwrites/second
System Logger is issuing DASD I/O at the rate of 83.4 per second. DFHLOG is defined as a
CF log stream. No data is being offloaded from DFHLOG and it does not have a staging data
set. Therefore in this case, all DASD I/O is associated with the user journal.
The greatest impact to the system is the 18997 page frames (77M) allocated by System
Logger to contain the data for both CICS log streams. To be technically accurate, there are
three log streams, however DFHSHUNT is connected but no data is being written. Notice the
excellent transaction rate (105.53 per second) with a response time of 0.1007 seconds.
DFHLOG is running very well, and in fact DFHJ03 is also working very well but you can see
some differences between the log streams. For the user journal, since all data is offloaded,
Under BYT DELETD INTERIM ST W/DASD will be the amount of data offloaded in the
interval. Notice the number of STG THLD (the number of writes when the log stream was at
or above the HIGHOFFLOAD threshold point) is over 130 times the number of offloads.
Because the log stream is so large CICS is able to issue 134 write requests in the time it take
System Logger to perform the offload. Using the average buffer size shown (1230), means
CICS is writing 164820 bytes while the offload process is taking place.
To determine if that’s a problem we must determine how much space is available above the
HIGHOFFLOAD threshold. STG_SIZE was specified as 25000 4K CIs, so using a
HIGHOFFLOAD of 80%, the threshold point is at 20000 CIs. The storage above the threshold
point is 5000 CIs or 20.48M. Since this is a DASD-only log stream and the average buffer size
is less the 4K, there is room for 5000 writes before filling the staging dataset. Remember each
buffer is rounded to a 4K CI boundary.
In the sample reported in Figure 5-36 the sizing formula discussed under “Forward Recovery
Logs” on page 184 was used to calculate the STG_SIZE for the forward recovery log as 2549
(10.4M).
Type CICS DASD APPL% # Tran/ Average Average Average Average Logr Logr DASD APPL% Storage Idle Net
TCB I/O Second CPU/Task Resp JC Wait File WT TCB SRB I/O Frames Frames Frames
CF64 225.8 4720 83.3 112.36 .0061 .0921 .0061 .0751 0.1 19.1 79.9 6.5 22579.9 12044.2 10535.7
4533.17 logwrites/second
Analysis of the data shows an increase in the offload number with an offload happening every
30 seconds, rather than every minute.
Compare the sample in Figure 5-36 with the sample in Figure 5-35 on page 206. The staging
data set allocation decreased and consequently the number of frames required by System
Logger (10535.7 versus 18997) to back the data in the data space has been decreased. Also,
since the staging data set is smaller, we are reaching the HIGHOFFLOAD threshold more
often, therefore causing the additional offload.
Figure 5-35 on page 206 sample illustrates a common error, where the size of a user journal
is defined to contain the same amount of data as a journal in a R410 system. The nature of
user journals is they are never accessed by the online CICS region, so all data will be
offloaded, that is, logtail management does not apply to user journals. As such there is little
LS_SIZE should be specified large enough to contain the offloaded data during the prime
processing period of the day.
Conclusion: STG_SIZE for user journals should be calculated and specified to provide a data
residency time of one minute or less, therefore reducing the amount of storage required by
System Logger to back the data in the data space.
Summary
Tuning CICS log streams for performance involves understanding the CICS region, the
operating environment and workload. External factors, such as DASD response time and CF
access time, make the task more challenging, but not insurmountable.
Data residency time is key to controlling the amount of storage required by the System
Logger for duplexing the data to the data space. Data residency time is also key to
establishing an even movement of data from non-system logs to the offload data sets.
Understand the tools which are available and how they can be used for log stream analysis.
As the environment changes, such as an increase in workload, a new level of the Coupling
Facility Control Code, new applications, a new release of the operating system and a new
release of CICS, ensure the log streams sizes are still valid.
In fact, to provide resource recovery for protected conversations, APPC/MVS needs to know
the names of local and partner LU log streams, and the negotiated sync point capabilities for
each local/partner LU pair. This information needs to be available and accurate for successful
resynchronization after a failure. To store this information, APPC/MVS uses a log stream.
APPC/MVS does not store conversation-specific information in the log stream. The log
stream is used to store data related to unique partner LUs that have protected conversations
with APPC/MVS. The log stream contains names of local and partner LU logs, and the
negotiated sync point capabilities for each local/partner LU pair.
For each protected conversation, information is stored in RRS log streams during the
two-phase commit process, but not in APPC/MVS log streams.
APPC/MVS can use both CF-Structure and DASD-only log streams. If you have workload
using APPC/MVS protected conversation on multiple images within a sysplex, or if you plan to
restart a workload using protected conversations on a different image, then you need to plan
for a shared log stream using the CF as the interim media. If you are planning to use
APPC/MVS from only one system, only one APPC/MVS will connect to the log stream, in
which case you can use a DASD-only log stream if you wish. In this case, only APPC/MVS
from this one system processes protected conversations. Other systems in a Parallel Sysplex
can use APPC/MVS but they will fail to process any protected conversations since they will
not be capable to connect to the log stream and will issue message ATB203I to document the
return and reason codes received from the system logger IXGCONN service.
The APPC/MVS log stream is an active log stream and on an interval basis, APPC/MVS trims
unneeded data from the log stream. There is no need to manage this log stream data using
the System Logger parameters RETPD or AUTODELETE, or through any utility. It is
There is one IXGWRITE in the log stream for each unique partner LU that uses protected
conversations. So, for example, if you have 50 partner LUs, of which 25 have established
protected conversations, you would have at least 25 IXGWRITESs. As you can see, there is
not very frequent activity on this log stream. When an LUDEL is performed, the element is
removed from the APPC log stream. When this is done, APPC invokes the purge log name
affinity processing, which communicates with all partner LUs that have established protected
conversations with this LU in the past. If the partner LU gives the OK to purge the affinities,
then APPC deletes an entry in the log stream corresponding to that protected partner LU and
its corresponding local LU. So, depending on the number of protected partner LUs and the
size of the structure, this will determine where the data resides (CF or on DASD).
Criticality/persistence of data
APPC/MVS keeps information about the conversation partners and their sync point in the log
stream in order to be able to rebuild the conversation in case of a failure.
For this reason, APPC/MVS data is critical to the installation, and recovery from a loss of the
data can be a complex process. To avoid a potential loss of data, we recommend that you
use unconditional duplexing with this log stream. Duplexing the log stream should not cause
a performance impact to the application since APPC/MVS doesn’t update the log stream very
frequently.
Losing data in the APPC/MVS log stream means that APPC/MVS loses all knowledge of all
partners’ log information and sync point capabilities. Refer to 6.1.4, “Recovery” on page 215,
for more information about the impact of losing the APPC/MVS log stream data and the steps
that need to be followed to restart the application.
This is the minimum storage that should be allocated for the interim media for the APPC/MVS
log stream. Refer to Example 6-1 for an example calculation.
Based on the above information, the minimum size for the interim storage for the APPC/MVS
log stream is:
(3000+5000+1000) x 300 bytes = 2,700,000 bytes.
This step is not required as you are using DASD-only log stream.
Logger definitions
Even though you can use DASD-only log streams, most installations configure the
APPC/MVS log stream as a CF-Structure log stream. For this reason, the following samples
use a CF-Structure configuration. Refer to “APPC/MVS log stream structure definition in the
CFRM Policy” on page 212 for more information about the CFRM parameters for the
APPC/MVS log stream structure.
LOGSNUM: The LOGSNUM parameter controls the maximum number of log streams that
may be allocated in the associated structure. We recommend specifying a LOGSNUM of 1,
meaning that only one log stream will be placed in the structure.
MAXBUFSIZE: APPC/MVS requires a buffer size of 65276 bytes. If you use a MAXBUFSIZE
value that is less than 65276, APPC/MVS issues message ATB209I and does not allow
APPC/MVS LUs to handle any protected conversations until the buffer size is corrected and
the LUs restarted.
AVGBUFSIZE: The APPC/MVS log stream contains one log block for each of the following:
Each local/partner LU pair that has established a protected conversation.
Each LU pair, if any, that has outstanding resynchronization work.
All log blocks are the same size: 248 bytes. Use 248 as the value for the average size of
APPC/MVS log blocks.
HIGHOFFLOAD: The HIGHOFFLOAD value specifies how full the log stream interim storage
should get before an offload process is initiated. We recommend using value not higher than
80%.
LOWOFFLOAD: The LOWOFFLOAD value defines the amount of data that is to be retained
in the log stream interim storage following an offload process. In the APPC/MVS environment,
the LOWOFFLOAD value should be between 40 to 60%.
STG_DATACLAS: Make sure you use an SMS data class that has share options of 3,3. Using
share options other than this can result in failures when System Logger tries to use the
staging data set.
LS_DATACLAS: Make sure you use an SMS data class that has share options of 3,3. Using
share options other than this can result in failures when System Logger tries to use the
offload data set.
For optimal performance for the offload data sets, we recommend using a data class that
specifies a CI Size of 24 K.
STG_SIZE: The STG_SIZE specifies the size, in 4K blocks, of the staging data sets for the
log stream. You can omit this parameter and system logger will allocate a staging data set
that will be equivalent to the coupling facility storage. In this case the staging data set is
always in sync with the size of the coupling facility structure. Remember that having a staging
data set smaller than the coupling facility structure might cause an offload even though the
structure storage has not been totally used because the data set gets filled up earlier than the
coupling facility storage.
LS_SIZE: The LS_SIZE specifies the size, in 4K blocks, of the offload data sets for the log
stream. You can use an initial value of 1024 and then update depending on their usage.
Both methods are valid, it depends on your installation and on the variety of the log
streams. If you do not have a big variety of offload data set, you can use SMS dataclas to
manage the allocation space and simply omit the LS_SIZE parameter. If your installation
has multiple different type of offload data set that will generate too many SMS Dataclas,
than you might want to consider to use LS_SIZE on each log stream.
.HLQ: The HLQ specifies the high level qualifier for both the offload data sets and the staging
data sets. If you do not specify a HLQ value, a default HLQ of IXGLOGR is used.
AUTODELETE and RETPD: It is very important that AUTODELETE(NO) and RETPD(0) are
specified (or use the AUTODELETE and RETPD parameter defaults which are NO and 0,
respectively) for the ATBAPPC.LU.LOGNAMES log stream. Using values other than these
could result in data being deleted before APPC/MVS is finished with it, or in data being kept
for far longer than necessary.
Security definitions
The APPC/MVS log stream can be protected in the Security Access Facility (SAF) LOGSTRM
class. The user ID associated with the APPC/MVS address space must have UPDATE
access to the log stream. The RACF statements to define the profile and grant access to it
are shown in Example 6-4.
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
This APAR will result in the ENQ on SYSZAPPC (APPC_PPLU_LOG) being treated as
RNL(NO).
The LU will not accept any protected conversations if the log stream is not defined. The
program that attempted the protected conversation will get a Sync level not supported return
code. DISPLAY APPC,LU,ALL will show SYNCPT=Y if the LU is syncpt-capable.
6.1.4 Recovery
You are not required to use staging data sets for APPC/MVS log data. However, if a system
or CF failure causes the loss of APPC/MVS log data, warm/cold mismatches between local
and partner LUs will result. To resolve such mismatches, you might have to:
1. Bring down APPC/MVS.
2. Use RRS ISPF panels to remove the expressions of interest that APPC/MVS LUs have in
units of recovery.
3. Restart APPC/MVS.
This manual intervention might be more costly than the potential performance impact of using
staging data sets. Because APPC/MVS writes infrequently to its log, the performance impact
should be minimal, and the use of STG_DUPLEX(YES) and DUPLEXMODE(UNCOND)
ensures that no data will be lost even if you lose both the z/OS system and the CF containing
the APC/MVS log stream.
6.1.5 Performance
After your initial log streams allocation, performance data is produced in a number of forms
that can be useful to determine if any adjustments are necessary to your installation:
SMF 88 data produced by the System Logger
SMF 70-78 data produced by various z/OS components
There are several tools which aide in the analysis of log stream performance problems:
IXGRPT1 formats and reports the SMF 88 data produced by the System Logger
ERBRMFPP reports on the data captured in the SMF 70 -78 records
APPC/MVS does not have a lot of activity. For this reason performance are rarely an issue for
this log stream.
The main fields in SMF88 that you should pay attention for this log stream are the OFFLOAD,
DASD SHIFT, STRUCTURE FULL, ENTRY FULL and STAGING THRESHOLD. Refer to
8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291 for a description of these
fields and what to do in case of one of this condition happens in your installation.
In a sysplex, however, because each system requires its own Logrec data set, you might
need to look at each LOGREC data set when an error occurs.
To eliminate the problem of having to manage multiple LOGREC data sets, an installation
can choose to define one CF-Structure Logrec log stream. Using a CF-Structure Logrec log
stream eliminates the following:
Running IFCDIP00 to initialize multiple LOGREC data sets
Having the LOGREC data set fill up on you
Scheduling the daily offload of LOGREC data sets
Concatenating multiple history data sets
Archiving Logrec records
The Logrec log stream is a funnel-type log stream. Each system writes records as they get
generated. The records never get referenced unless the installation browses the log stream
to retrieve information about specific errors.
The name of the Logrec log stream is fixed: SYSPLEX.LOGREC.ALLRECS. There can only
be one Logrec log stream in a sysplex, but each system can independently choose to record
the error data in the log stream or in the LOGREC data set.
Criticality/persistence of data
While Logrec data is a valuable tool to help you diagnose problems, the data would not be
considered critical. Loss of the data will not result in any adverse impact on the system or its
availability.
Logrec keeps the log records in the log stream merged from all the systems in the sysplex
that are connected to the log stream. In order to be able to fall back to the use of the
LOGREC data sets, we recommend that you IPL with a LOGREC data set initialized by
IFCDIP00 and then immediately switch to the Logrec log stream via a command. If you do not
IPL with a Logrec data set, you will not be able to change the Logrec recording medium from
LOGSTREAM to DATASET using the SETLOGRC command.
If you wish to share the Logrec across multiple z/OS instances, the log stream must be
placed in a CF structure. It is usually mapped to a dedicated Coupling Facility structure. In a
single system sysplex you can use a DASD-only log stream. This provides similar benefits to
a CF log stream, with the exception of course that it only contains data from a single system.
Logrec data can reside in the log stream indefinitely. If you choose this option, you need to
pay attention to the size of the offload data sets and on how to manage them. You need
sufficiently large offload data sets that you do not generate so many that you run out of
For an initial sizing of your Logrec log stream, check how many records are written per
second to the Logrec data set on each of your systems, aggregate them, and use the CFSizer
tool to determine the size of the CF structure. The tool can be located at the IBM Web site:
http://www.ibm.com/servers/eserver/zseries/pso
6.2.2 Definition
Subsystem definition
The suggested way to set up the Logrec environment is to IPL each system using its own
Logrec data set specified in the IEASYS parmlib member as in Example 6-5.
You can then switch to using the log stream by using the SETLOGRC command. This
process allows your installation to fall back to using the data set should you so wish.
Alternately, you can choose to use the log stream as the recording medium immediately from
the IPL. In this case, you specify LOGREC=LOGSTREAM in the IEASYS Parmlib member as
shown in Example 6-6.
In this configuration, if you become unable to use the log stream for some reason, the system
will lose the recording capability. This means that the system will continue to run, but any
Logrec records that are generated will be lost. However, if the log stream is not available at
IPL time, the system doesn’t complete initialization.
Logger definitions
Most installations use a CF-Structure log stream for Logrec. For this reason, the following is
an example on how to define the Logrec log stream into the LOGR policy. Refer to “Logrec log
stream structure definition in the CFRM Policy” on page 218 for the further informations on
CFRM parameters for the Logrec structure.
Example 6-8 Logger policy definition sample for Logrec log stream
//DEFINE EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DATA TYPE (LOGR)
DEFINE STRUCTURE NAME(LOGREC)
LOGSNUM(1)
AVGBUFSIZE(4068)
MAXBUFSIZE(4068)
MAXBUFSIZE: MAXBUFSIZE must be at least 4068 because Logrec writes records in one
page blocks.
AVGBUFSIZE: On the structure definition, AVGBUFSIZE specifies the average size, in bytes,
of individual log blocks that can be written to log streams allocated to the coupling facility. You
can use the 4068 value suggested that fits most of the installation.
LOWOFFLOAD: The LOWOFFLOAD value defines the amount of data which may be
retained in the log stream interim storage following an offload process. In the Logrec
environment, the LOWOFFLOAD value should be 0 since there is no need to keep any data
in the interim storage.
Caution: Be sure you either specify an LS_SIZE value on the log stream definition or you
use an LS_DATACLAS where you have space allocation defined. If LS_SIZE is not
specified in the log stream definition, and an extent size is not specified in the data class
pointed to by LS_DATACLAS, the value is taken from the ALLOCxx Parmlib member. The
default value in ALLOCxx is 2 tracks. Refer to the z/OS MVS Initialization and Tuning
Reference, SA22-7592.
Both methods are valid, it depends on your installation and on the variety of the log
streams. If you do not have a big variety of offload data set, you can use SMS dataclas to
manage the allocation space and simply omit the LS_SIZE parameter. If your installation
has multiple different type of offload data set that will generate too many SMS Dataclas,
than you might want to consider to use LS_SIZE on each log stream
HLQ: The HLQ specifies the high level qualifier for both the log stream data set name (and
the staging data set name if used). If you do not specify a high level qualifier, a high level
qualifier IXGLOGR is defaulted.
AUTODELETE and RETPD: If your installation is planning to use the Logrec log stream as
the accumulation place for the errors records, you should specify AUTODELETE(YES) and
RETPD(x), where x is the longest time you would like to keep the data in your installation. In
such a configuration, it is recommended that you migrate the offload data sets to avoid high
usage of DASD space. At the beginning, when you activate this configuration, you should
monitor the amount of offload data sets that are created to avoid potential directory full
condition on the LOGR inventory couple data set.
Security definitions
The Logrec log stream can be protected in the Security Access Facility (SAF) LOGSTRM
class.You can provide default READ access so all the users will be able to browse and
retrieve records from this log stream. If you have batch job to archive Logrec records, you
need to give UPDATE permit to that user ID in order to perform deletion of records.
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
The STATUS line is only displayed if the current medium is LOGSTREAM. Its values can be:
CONNECTED
NOT CONNECTED
LOGGER DISABLED
If the STATUS shows as CONNECTED, then the log stream is connected and active.
Running EREP
There is a sample job, IFBEREPS, in SYS1.SAMPLIB that can be used as a template for
running EREP jobs. It must be modified to match your installation’s setup. The job can be
used to extract data from the Logrec log stream, create history data sets, and clear records
from the log stream.
6.2.4 Recovery
As described in 6.2.1, “Functional description” on page 216, your installation can prevent any
loss of data condition if the configuration is planned carefully. Follow the suggested method to
implement and to activate the Logrec recording on the log stream media.
6.2.5 Performance
After your initial log streams allocation, performance data is produced in a number of forms
that can be useful to determine if any adjustments are necessary to your installation:
SMF 88 data produced by the MVS System Logger
SMF 70-78 data produced by various MVS components
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70–78 records
Usually this is not a critical log stream from a performance perspective. There are some fields
in the SMF88 that you might want to check against this log stream: DASD SHIFT,
STRUCTURE FULL, ENTRY FULL. Refer to 8.6.3, “SMF Type 88 records and IXGRPT1
program” on page 291 for a description of these fields and what to do in case of one of this
condition happens in your installation.
6.3 OPERLOG
The MVS operations log (OPERLOG) function of the MVS console services component
provides a sysplex-wide merged message log by using the MVS system logger services.
There is only one OPERLOG log stream within the entire sysplex but the recording of the
messages into the log stream can be activated on a system basis. You might have systems
that need to merge in the OPERLOG log stream and other systems that can continue to
record independently on their syslog.
The messages are logged in the form of message data blocks (MDB). An MDB is a structured
control block that contains a complete representation of a message, including both text and
control information. These messages are written into the log stream in chronological order as
they are received and processed by system logger services; this does not assure that the
message are written in the log stream in the order they are generated since they might get to
the logger in a different order than the one they are generated. This might be visible when you
retrieve records and you can see that records from different systems are not ordered correctly
by time stamp. This process can also be influence by the speed of the processor where the
application using logger services is actually running.
Criticality/persistence of data
OPERLOG keeps the log records in the log stream merged from all the system in the sysplex
that are connected to the log stream. Since a system can record to both OPERLOG and
SYSLOG and if a system cannot record to the OPERLOG log stream it automatically
switches to SYSLOG even though SYSLOG was not activated, data on OPERLOG log
stream are not considered to be critical. Losing the OPERLOG capability forces the
installation to fall back to individual syslog.
OPERLOG is anyway not considered the final archival place for operations log data. Usually,
installations keep the active portion of the operations data in OPERLOG, that is, for a week,
and then retrieve the data from the log stream to be achieved on more traditional media and
readable format.
OPERLOG is usually mapped to a dedicated Coupling Facility structure. You can control
OPERLOG duration of the data:
Through the log stream definitions AUTODELETE and RETPD if you want to let system
logger to perform the cleaning of the unwanted records
Through your installation scheduling environment by using the IEAMDBLG Program.
Refer to “IEAMDBLG Program” on page 228 for more details.
For an initial sizing of your OPERLOG log stream, you can simply go in your current
environment and see how many writes per second are happening currently on each of your
system (that is, using SDSF), aggregate them and use the Web-based tool to determine the
size of the coupling facility structure. The tool can be located at the IBM Web site:
http://www.ibm.com/servers/eserver/zseries/pso
Once that you enable the function, you can the use RMF Coupling Facility Report and SMF88
data to understand if the structure size and offload data sets size require any adjustments.
6.3.2 Definition
In this section we review definitions.
To enable an image to use the operlog, you can defined the set up in the CONSOLxx parmlib
member or use the VARY command to activate or deactivate it after IPL has completed.
The name of the OPERLOG log stream is fixed, SYSPLEX.OPERLOG. So, when a system is
enabled to use the OPERLOG log stream, it will connect to SYSPLEX.OPERLOG log stream.
Structure definition in the CFRM Policy for the OPERLOG log stream
Before using the OPERLOG log stream, you need to define that the correspondent Coupling
Facility structure in the CFRM policy and make sure that the CFRM policy has been activated
in the sysplex through the SETXCF command. Here is an initial sample to define the Coupling
Facility structures for the OPERLOG log stream.
Logger definition
Most of the installation use OPERLOG as a coupling facility log stream, although you can use
a DASD-only log stream if you re running a monoplex or single system sysplex or if you want
to enable OPERLOG only on one system in your sysplex. The following is an example of how
to define the log stream to the LOGR policy. Remember, before executing the LOGR policy,
check that the corresponding CFRM structure has been defined in the CFRM policy and
activated in the sysplex. Refer to “Security definitions” on page 226 for the further
informations on CFRM parameters for the OPERLOG structure.
Example 6-13 OPERLOG log stream definitions for the LOGR policy sample
//OPERLOG JOB CLASS=A,MSGCLASS=A
//POLICY EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DATA TYPE(LOGR)
DEFINE STRUCTURE NAME(OPERLOG)
LOGSNUM(1)
MAXBUFSIZE(4096)
LOGSNUM: On the structure definition, LOGSNUM specifies the number of log streams that
you want to allocate to the same coupling facility structure. The value you specify determines
how many pieces the structure is divided into and how much room there is in each piece. For
OPERLOG, the suggested mapping is one log stream per structure.
AVGBUFSIZE: On the structure definition, AVGBUFSIZE specifies the average size, in bytes,
of individual log blocks (MDBs) that can be written to log streams allocated to the coupling
facility. You can use the 512 value suggested that fits most of the installation or you can use
the following method to evaluate the correct value for your installation.
To determine the MDB size in the operation log stream, extract data from the OPERLOG log
stream using the LOGR subsystem data set interface. You can use the LOGR subsystem for
existing eligible applications that need to access log stream data in data set format. The JCL
for the MDB extract job are as shown in Example 6-14.
The IEBGENER utility program SYSUT1 DD-statement in the previous JCL allocates the
OPERLOG log stream through the subsystem LOGR. You can use the above value to define
your log stream in your LOGR policy.
LS_DATACLAS: With this keyword, you can specify the SMS Dataclass that is used for the
allocation of offload data sets. The Automatic Class Selection (ACS) routines can override
this value so you should ensure the desired dataclass is used. In addition to the size of the
data set, the dataclass defines the CI Size for the data set along with the share options.
Offload data sets may use a CI size up to 24K; in general, the larger CI size provides better
performance, however, if the log stream consists mostly of log blocks of a much smaller size,
the 24K CI size may be wasteful
LS_SIZE: The LS_SIZE specifies the size, in 4-K blocks, of the log stream DASD data sets
for the log stream.
Caution: Be sure you either specify an LS_SIZE value on the log stream definition or you
use an LS_DATACLAS where you have space allocation defined. If LS_SIZE is not
specified in the log stream definition, and an extent size is not specified in the data class
pointed to by LS_DATACLAS, the value is taken from the ALLOCxx Parmlib member. The
default value in ALLOCxx is 2 tracks. Refer to the z/OS MVS Initialization and Tuning
Reference, SA22-7592.
Both methods are valid, it depends on your installation and on the variety of the log
streams. If you do not have a big variety of offload data set, you can use SMS dataclas to
manage the allocation space and simply omit the LS_SIZE parameter. If your installation
has multiple different type of offload data set that will generate too many SMS Dataclas,
than you might want to consider to use LS_SIZE on each log stream.
HLQ: The HLQ specifies the high level qualifier for both the offload data set name (and the
staging data set name if used). If you do not specify a high level qualifier, a high level qualifier
IXGLOGR is defaulted. The data set names format for the OPERLOG log stream data sets is
hlq.SYSPLEX.OPERLOG.Annnnnnn where nnnnnnn is a running sequence number.
STG_DUPLEX(NO) indicates that System Logger never uses staging data sets, regardless of
the nature of the connection to the structure on which the log stream resides.
Since OPERLOG can tolerate a loss of data condition, your installation can decide how
sensitive is this data and set up the duplexing consequently.
Note: If you do not need to keep operations data, then the suggested way is to let system
logger delete old records once they expire by specifying the AUTODELET(YES) and
RETPD>0 parameters on the log stream definition.
If your installation needs to maintain operations data for a long time, then it is probably
suggested to move the data out of the log stream, put then in a readable format and store
them on a traditional support, that is, tape. In this case, you might specify
AUTODELETE(NO) and RETPD(0) and then use the IEAMDBLG Program to archive the
data on your installation schedule. Any time data are moved from the log stream to the new
support, IEAMDBLG also deletes the old records since they are not needed any longer.
Security definitions
The OPERLOG log stream can be protected in the Security Access Facility (SAF) LOGSTRM
class. OPERLOG log stream should have READ access as default so everybody can browse
the operlog data and UPDATE access level only to those users that need the capability to
delete records from the log stream, that is, the user ID associated with the job running the
IEAMDBLG program.
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
Enabling/Disabling OPERLOG
OPERLOG can be turned on and off on each system within the sysplex with the following
command, providing the MVS system logger is activated (Example 6-16).
V OPERLOG,HARDCPY,OFF
IEE338I OPERLOG INACTIVE AS HARDCPY
The intended scope of an OPERLOG is a sysplex. However, a given system in the sysplex
may or may not be using OPERLOG at any particular time. The operator commands that
control the status of OPERLOG and the initialization parameter that activates it at IPL have a
SDSF considerations
The following considerations apply when using SDSF and OPERLOG:
You can understand if you are browsing OPERLOG or SYSLOG by looking on the upper
left corner of the log display. SDSF displays which media is currently browsing and you
can switch from OPERLOG to SYSLOG by using the LOG OPERLOG or LOG SYSLOG
command at any time.
If you are browsing the OPERLOG while structure rebuild takes place either due to a
failure or to maintenance procedure, the log stream data will be unavailable for the time it
takes to rebuild the log stream in the alternate coupling facility. For the duration of this
interval, you are notified that data is not available with an error message in your upper
right corner as shown in Figure 6-1.
In order to deallocate the OPERLOG log stream, all the active connections should be
removed. Connections to the OPERLOG log stream are mainly SDSF users and until the
last TSO user exits from SDSF, the log stream cannot be deallocated. You can discover
which user is currently connected to the log stream by using the DISPLAY LOGGER
command as shown in Figure 6-2.
6.3.4 Recovery
The OPERLOG is operationally independent of SYSLOG; that is, an installation can choose
to run with either or both. A failure of the OPERLOG when the OPERLOG is active and
SYSLOG (or the hardcopy message log) is not active causes SYSLOG to be activated
automatically in an effort to reduce the impact to the operations and problem determination
tasks. Other systems that were not affected by the failure will continue to write to the
OPERLOG.
6.3.5 Performance
After your initial log stream allocation, performance data is produced in a number of forms
that can be useful to determine if any adjustments are necessary to your installation:
SMF 88 data produced by the MVS System Logger
SMF 70-78 data produced by various MVS components
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70–78 records
Operlog is a funnel type log stream: this means that we will expect offloads to be created as
result of the OPERLOG process. There are some fields in the SMF88 that you might want to
check against this log stream: DASD SHIFT, STRUCTURE FULL, ENTRY FULL and
SC1/2/3. Refer to 8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291 for a
description of these fields and what to do in case of one of this condition happens in your
installation.
On the other hand, if the RMs never participate in the same transactions, they could be
placed in DASDONLY log streams on each system. This configuration can occur either in a
single system sysplex with one RRS image, or in a sysplex where each image runs
independent workloads from each other (not very common).
RRS images on different systems in the sysplex run independently. However, RRS images
that are in the same logging group share the same log stream to keep track of the work. If a
system in the same logging group fails, RRS on a different system in the same logging group
within the sysplex can use the shared log streams to take over the failed system’s work. This
means that the CF log streams allow the failed Resource Managers to restart on a different
RRS image and that RRS then uses the shared logs to takeover the work. The takeover
happens as a result of the failed Resource Managers restart. The Resource Managers must
restart before the transactions are taken over and assigned to another RRS image. The
shared logs provide the installation with the choice of where the Resource Managers can
restart.
If there is only one system connected to the structure where the log streams reside or the log
streams are DASD-only, then no other system can take over the failed system’s work. In this
situation, any outstanding sync points are resolved when RRS restarts using the logging
group and the resource managers are active within the logging group.
You can have multiple RRS logging groups in a sysplex with different workloads. Each RRS
group has a different set of log streams. At start time, RRS knows which group it belongs to
from its procedure, and it then connects to the log streams for the specific group. The
groupname identifier is part of the log stream name so they can differentiate from each other.
The default log groupname is the sysplex name.
Example where your installation might want an RRS log group being a subset of the systems
in a sysplex:
You can restart RRS with a different log group name to cause a cold start and keep the
data in the old logs.
More frequently, you can use different log group names to subdivide the sync point work in
a sysplex. For example, use a different log group for a test system.
Table 6-1 lists the RRS log streams and the related contents.
RRS main UR state log ATR.lgname.MAIN.UR The state of active URs. RRS periodically
moves this information into the RRS
delayed UR state log when UR completion
is delayed.
Note: The ARCHIVE log stream is an optional log stream and your installation can decide
to use this log stream based on the following needs:
If you need information to manually resolve units of recovery in catastrophic situations
where RRS loses information about ‘non completed’ unit of recovery, for example
situation where RRS loses its own log data and it cannot recover UR. You can access
the ARCHIVE log stream to see which URs have completed so you can avoid
processing completed transactions again.
If your installation needs to maintain a history of completed transactions, that is, for
accounting.
If you choose not to use the ARCHIVE log stream, a warning message is issued at RRS
start up time about not being able to connect to the log stream, but RRS continues its
initialization process.
Criticality/persistence of data
RRS keeps information about units of recovery and their process in the log stream for the
registered resource managers. This allows the coordination of the two phase commit protocol
across multiple resource managers. For this reason, RRS data are very critical to the
installation and it is not easy to deal with loss of data related to RRS log streams.
The critical piece of data for RRS is contained in the RM.DATA log stream. It is strongly
recommended that you consider unconditionally duplexing the resource manager data log
(ATR.lgname.RM.DATA). This log is small and infrequently updated, so its impact on
performance is minimal, but any loss of data, unresolved gap, or any permanent error will
force an RRS cold start
Since duplexing the logs can impact performance, it is suggested to conditional duplex all the
other log streams as RRS is capable to tolerate unresolved gap in case the log stream suffers
damage, although RRS will not be able to recover the lost data. (For a description of the
meaning and consequence of cold start in an RRS environment, refer to Systems
Programmers guide to: RRS, SG24-6980.)
Because of the differences in activity rate among the multiple RRS log streams and also the
possibility to easily manage their coupling facility storage sizing, it is suggested to map each
coupling facility log stream to a unique coupling facility structure.
In case your installation has a constraint in the available number of coupling facility structures
in your CFRM policy, you can think about grouping multiple RRS log stream in a single
coupling facility structure. In this configuration:
Re-evaluate the need for the ARCHIVE log stream in your installation and if your
installation doesn’t not make any use of the log stream data, delete the log stream. Before
deleting the log stream, verify this action with all the resource managers to make sure they
do not take advantage of this data in normal operations.
Combine the RM.DATA and RESTART log streams in the same structure.
Combine the MAIN.UR and DELAYED.UR log stream in the same structure.
RRS log streams belong to the active log stream with the exception of the ARCHIVE. RRS
has a trimming mechanism, so it keeps the content of the log streams up the date with the
current workload running on the system. As for the ARCHIVE, this is a funnel-type log stream,
where RRS writes a record to the log stream for each completed transaction. RRS just writes
and never reads the ARCHIVE log and therefore never deletes archive log records. You
should use a combination of AUTODELETE and RETPD to manage this log stream.
6.4.2 Definition
Subsystem definition
There are no actual definitions in the RRS subsystem to map the log stream. Each member of
a RRS group connects to the group’s own set of log streams at start up time and the log
stream are structured with a fixed name, that is, ATR.groupname.DELAYED.UR where the
plexname is the sysplex name by default or the logging group name if multiple RRS logging
group are present within the same sysplex. Either the plexname or the logging group is the
connection between the RRS group and the set of log streams to be used.
Logger definition
RRS can use either Coupling Facility log streams or DASDONLY log streams. In an RRS
environment, it is rare to see a mixing of Coupling Facility log streams and DASDONLY log
streams. Usually the choice toward one media or another is mainly dictated by the capability
of sharing the log streams across multiple instance of RRS.
Structure definitions in the CFRM Policy for the RRS log streams
This task is only required if you are planning to use Coupling Facility log streams. Before
running any LOGR policy, you have to make sure that the correspondent Coupling Facility
structure has already been defined in the CFRM policy and that the CFRM policy has been
activated in the sysplex through the SETXCF command.
Here is a set of initial samples to define the Coupling Facility structures for the RRS log
streams. Usually these sizing values are good for most of the installation, at least as starting
point. We suggest that you use both RMF Coupling Facility report and the SMF88 output to
validate your log stream configuration.
Below are the examples for the definition of the structure in the LOGR policy.
With OS/390 R1.3, System Logger dynamically adjusts the Entry/Element ratio avoiding
potential problem, specially if you are not planning to share the same structure between
multiple log stream with in theory different characteristics.
AUTODELETE and RETPD: AUTODELETE and RETPD can have a disastrous effect on all
the RRS log stream except the ARCHIVE if specified other than AUTODELETE(NO) and
RETPD(0). With AUTODELETE(YES) and RETPD>0, even though RRS will attempt to
delete un-necessary log entries, all data will be off-loaded to the offload data sets and held for
the number of days specified for RETPD. AUTODELETE(YES) allows the System Logger
(rather than RRS) to decide when to delete the data. When a new offload data set is allocated
and AUTODELETE(YES) is specified, the System Logger will delete the data on the old
offload data set. Since data on the MAIn.UR are managed by RRS, you must let RRS
managed the life of the records on this log streams so there will not be the risk that RRS will
need records that have been deleted by logger because of the AUTODELETE option.
For the ARCHIVE log stream, RRS never uses information written on the Archive log; the
information is intended for the installation to use if a catastrophic problem occurs. You must
use retention period and autodelete support to delete old entries - specify these value big
LOWOFFLOAD: The LOWOFFLOAD value defines the amount of data which may be
retained in the log stream interim storage following an offload process. In the RRS
environment, the LOWOFFLOAD value should be high enough to retain the data required for
backout of the UR but low enough to keep the number of offloads to a minimum.
LOWOFFLOAD should be set between 40 and 60% for all the RRS log stream as described
in the examples and 0% for the ARCHIVE.
LS_SIZE: LS_SIZE defines the allocation size for the offload data sets. It should be specified
large enough to contain several offloads, possibly a day's worth. All RRS log streams except
ARCHIVE should only offload a minimal amount of data.
Caution: If LS_SIZE is not specified in the log stream definition, and an extent size is not
specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member. The default value in ALLOCxx is two tracks. Refer to the z/OS
MVS Initialization and Tuning Reference, SA22-7592.
It is very important to remember log stream staging and offload (log) data sets are single
extent VSAM linear data sets, and the shareoptions must be specified as '3,3'. If the
shareoptions are anything other than '3,3' there is a risk the System Logger will be unable
to read offloaded data and provide RRS with return code 8, reason code 804
(IxgRsnCodeNoBlock).
STG_SIZE: For a Coupling Facility log stream, STG_SIZE defines the size of the staging data
set to be allocated if STG_DUPLEX(YES). If DUPLEXMODE(UNCOND) is specified the data
in the Coupling Facility log stream will always be duplexed to the staging data set. If
DUPLEXMODE(COND) is specified the data in the Coupling Facility log stream is duplexed
to the staging data set only if the CF becomes volatile or failure dependent.
The size of the staging data set (STG_SIZE) must be large enough to hold as much data as
the log stream storage in the Coupling Facility. IF STG_SIZE is (), logger allocates a staging
data set large enough to hold the coupling facility structure size.
Data is written to the staging data set in 4096 byte increments, regardless of the buffer size.
LS_DATACLAS: With this keyword, you can specify the SMS Dataclass that is used for the
allocation of offload data sets. The Automatic Class Selection (ACS) routines can override
this value so you should ensure the desired dataclass is used. In addition to the size of the
data set, the dataclass defines the CI Size for the data set along with the share options.
Attention: For a shared Coupling Facility log stream which has connections to multiple
z/OS images when the offload process is triggered, the offload may be performed by the
logger address space on a different z/OS image. If the offload requires the movement of
data to the log (offload) data sets, and the current data set fills, a new data set will be
allocated. Unless the shareoptions are specified 3,3 the logger address space on the z/OS
image where RRS is running may not be able to access the data set.
STG_DATACLAS: With this keyword, you can specify the SMS Dataclass that is used for the
allocation of staging data sets. The Automatic Class Selection (ACS) routines can override
this value so you should ensure that desired dataclass is used. In addition to the size of the
data set, the dataclass defines the CI Size for the data set along with the share options.
Staging data sets must use a CI size of 4 K.
Important: the data class is the only way to specify the share options for a data set. You
MUST ensure that all System Logger data sets, including staging data sets, are allocated
with a dataclass that defines share options (3,3).
MAXBUFSIZE: MAXBUFSIZE may be specified for a DASDONLY log stream, it defines the
largest block that can be written to the log stream. The default value is 65532 and should be
used in a RRS environment.
Security definitions
The RRS log streams can be protected in the Security Access Facility (SAF) LOGSTRM
class. To enable the protection, you need to give READ access to the TSO user IDs or
groups that will need to retrieve log data through the RRS panels and the UPDATE access
level to the RRS address space user ID.
If your installation does not require this level of security, you can define the log stream with
READ as universal access. This will allow all the user ID in your installation to browse the
RRS log streams data.
SETROPTS CLASSACT(LOGSTRM)
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
RRS shutdown
Before shutting RRS down, you should shut down all the RRS applications. Once the RRS
application are down, issue the following commands:
SETRRS CANCEL command to shut down RRS.
D LOGGER,L,LSN=ATR.* and verify that the connections number is 0.
Power-on-Reset
Make sure that RRS disconnects from its log streams before shutting down the z/OS images
and performing a power-on-reset of the coupling facility and z/OS CECs. This action will
prevent loss of data or message ATR212I RRS DETECTED LOG DATA LOSS at IPL time.
When you are shutting down your system, after all the resource managers are down, you can
issue the SETRRS CANCEL command to close RRS and force it to disconnect from its log
stream. This will allow logger to offload the data and harden them on the offload data set.
S RRS
ATR221I RRS IS JOINING RRS GROUP A ON SYSTEM #@$1
IXG231I IXGCONN REQUEST=CONNECT TO LOG STREAM ATR.A.RM.DATA DID NOT
SUCCEED FOR JOB RRS. RETURN CODE: 00000008 REASON CODE: 0000080B
DIAG1: 00000008 DIAG2: 0000F801 DIAG3: 05030004 DIAG4: 05020010
ATR130I RRS LOGSTREAM CONNECT HAS FAILED FOR
MANDATORY LOGSTREAM ATR.A.RM.DATA.
RC=00000008, RSN=00000000
IEA989I SLIP TRAP ID=X13E MATCHED. JOBNAME=RRS , ASID=0082.
ASA2013I RRS INITIALIZATION FAILED. COMPONENT ID=SCRRS
6.4.4 Recovery
Log streams recovery
To perform RRS log stream recovery, restart and then shutdown all the RRS instances to
force RRS to connect and then disconnect to the log streams.This will try to clear and solve
any potential problem.
Although to perform a cold start you only need to redefine the RM.DATA log stream, it is
suggested to delete all the current log streams, define new ones and restart RRS. This will
clean all the previous information and perform a clean restart.
In case you want to keep the old logs for problem determination, then you only need to
redefine the RM.DATA and use the other old log streams.
Performance
After your initial log streams allocation, performance data is produced in a number of forms
that can be useful to determine if any adjustments are necessary to your installation:
SMF 88 data produced by the MVS System Logger
SMF 70-78 data produced by various MVS components
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70–78 records
All the RRS log streams with the exception of the ARCHIVE are active log stream: this means
that RRS takes care of maintaining currency of data within the log stream. For this reason,
after an accurate tuning, while we should expect offloads for the ARCHIVE log stream, we
should see that offload are eliminated or minimized for all the other log streams.
In addition, generally speaking, RRS log streams usually are not very critical from a
performance perspective. There are some fields in the SMF88 that you might want to check
against the active log streams to determine if they are tuned properly: DASD SHIFT,
STRUCTURE FULL, ENTRY FULL and OFFLOAD.
As regards to the ARCHIVE log stream, being a funnel type log stream, offload are expected
- for this reason you should check the fields DASD SHIFT, STRUCTURE FULL, ENTRY
FULL and SC1/2/3 in the SMF88 for this particular log stream.
Refer to 8.6.3, “SMF Type 88 records and IXGRPT1 program” on page 291 for a description
of these fields and what to do in case of one of this condition happens in your installation
In addition to these two log streams, APAR OW56107 introduced a third log stream, the
health checker. The SYSOPS function, on interval base, performs checks in the systems and
writes the results on this log stream for later retrieval.
Criticality/persistence of data
System Automation for OS/390 uses these log streams to accumulate messages and
information about the behavior of the systems to potentially trigger some event or reactions.
They are funnel-type log streams, where System Automation writes and the agents can
retrieve the data to understand what’s happening. System Automation does not manage the
records within the log streams: for this reason, you should use a combination of
AUTODELETE and RETPD to manage these log streams and let logger delete the records
after the period of time you decide you might need to keep the data for your installation.
In a multi systems sysplex, it is preferred to have these log streams defined as coupling
facility based log streams because it is possible to record data and to view data for each
system anywhere in the sysplex. In a monoplex or in a single system sysplex, DASD-only log
stream can be a good alternative configuration.
One structure should be shared between the History log stream and the Message log and the
other dedicated to the Health Checker log stream. If you are not contraint, you can also
dedicate a coupling facility structure to each log stream.
6.5.2 Definition
Subsystem definitions
There are no definition at subsystem levels since the name of the log streams are fixed.
When System Automation for OS/390 initializes, it connects to these log streams.
Structure definition in the CFRM Policy for the SAFO for OS/390
Example 6-39 Structure definitions sample
//SAFOLOG JOB CLASS=A,MSGCLASS=A
//POLICY EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DATA TYPE(CFRM)
STRUCTURE NAME(HSA_LOG)
SIZE(16384)
INITSIZE(8192)
FULLTHRESHOLD(0)
PREFLIST(FACIL02, FACIL01)
STRUCTURE NAME(ING_HIST)
SIZE(16384)
INITSIZE(8192)
Logger definitions
Example 6-40 shows how to define the log streams in the LOGR policy.
Security definitions
You can protect your log streams defining them as resources in the Security Access Facility
(SAF) LOGSTRM class. The NetView agents as well as the automation manager address
spaces need UPDATE access to the log streams.
6.5.4 Recovery
Data gap in log streams
When System Automation for OS/390 detects a gap in the sequence of logger records, it
logically deletes all the data following this gap regardless of the retention period. For
example, this can happen when an user manually deletes some logger data sets or offload
data sets are allocated with incorrect shareoptions.
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70–78 records
Refer to 8.6.4, “IXGRPT1 Field Summary and IXGSMF88 Cross Reference” on page 293 on
how to use the IXGRPT1 output.
Criticality/persistence of data
WebSphere Application Server is using this error log stream to accumulate error messages. It
is a funnel-type log stream, where WebSphere Application Server just writes and never reads
the log back; therefore never deletes archive log records. For this reason, you should use a
combination of AUTODELETE and RETPD to manage this log stream.
Depending on the WebSphere for z/OS configuration, you can either use Coupling Facility or
Dasd-only for this log stream. Dasd-only log stream can only be either dedicated to a single
instance of WebSphere for z/OS or shared across multiple instances of WebSphere for z/OS
running on the same z/OS image. Coupling facility based log stream is needed if you want a
single merged log stream.
6.6.2 Definition
Subsystem definition
WebSphere for z/OS manages its environment data through the Administration application
and writes the environmental data into the system management database. To add or change
environment variable data, you must enter environment data pairs (an environment variable
name and its value) on the sysplex, server, or server instance properties form. When you
activate a conversation, the environment variable data is written to HFS files. WebSphere for
z/OS determines which values are the most specific for an environment file. For instance, a
setting for a server instance takes precedence over the setting for the same variable for its
server, and a setting for a server takes precedence over the setting for the same variable for
its sysplex. If you modify an environment file directly and not through the Administration
application, any changes are overwritten when you activate a conversation or prepare for a
cold start.
When you activate a conversation, WebSphere for z/OS writes the environment data to an
HFS file for each server instance. The path and name for each environment file is:
cb-pathname/controlinfo/envfile/SYSPLEX/SRVNAME/current.env
One of the variables in the current.env file defines the log stream that this WebSphere for
z/OS instance will use. The name of the error log is specified using the environment variable:
LOGSTREAMNAME=<LOG_STREAM_NAME>
The log stream can be defined at Sysplex level and so all servers in the sysplex will share
the log stream and write their messages unless otherwise specified.
Or it can be defined at Server level and so forth all the server instances under this server
share and write to this log stream. This overrides the sysplex value for this particular
server.
Or it can be specified at Server Instance for the single instance running on a specific
system to write to this particular log stream.
Logger definition
The definition for the WebSphere for z/OS log stream can be obtain through the
customization dialog. During the installation task, one of the job that are created by the
installation clist is to define the log stream.
The user initiates the installation task by calling the clist via ‘ex hlq.sbboclib(bbowstrt)
options’
As a result, the user is presented with a menu to define resources. One of the tasks on the
main menu is to input the variable. If you select the task ‘Define Variable’ (option 2), you are
presented with 6 choices where you can enter all the variables to be used later in the
customization jobs.
Figure 6-3 Sample ISPF dialog to input variables to define log stream
Where:
Name: Name of your WebSphere for z/OS error log stream that will be created.
Data class: An existing DFSMS data class for the log stream data set allocation.
Storage class: An existing DFSMS storage class for allocation of the DASD staging data
set for this log stream.
HLQ for data sets: The high-level qualifier for your log stream data set name and staging
data set name that will be created.
Is logstream CF resident (Y|N): If you want the log stream to be created on a coupling
facility, specify “Y”. If on DASD, specify “N”.
If yes, specify structure name: If using the coupling facility, specify the coupling facility
structure to be used for the log stream. Only valid if you specified Y on the previous entry.
If no, specify: logstream size: Specifies the size, in 4K blocks, of the log stream DASD
data sets for the log stream being defined.
If no, specify: staging size: Specifies the size, in 4K blocks, of the DASD staging data set
for the log stream being defined.
For detailed information about setting up the error log stream (including how to define the
data sets, and give proper authority to server identities so they can write to it), see
WebSphere Application Server for z/OS V4.0.1: Installation and Customization, GA22-7834.
After you have completed to input your variables customization job are generated in your
hlq.data_set.CNTL. The member BBOERRLG contains the definition for the log stream.
If you chose to use a Coupling Facility log stream, remember that you need to define the
structure to the CFRM policy first.
Here is a set of initial samples to define the Coupling Facility structures for the WebSphere for
z/OS log stream. You can use the following value as initial size and then use both RMF
Coupling Facility report and the SMF88 output to validate your log stream configuration.
Example 6-43 Sample of CFRM definitions for the WebSphere log stream structure
//WASLOG JOB CLASS=A,MSGCLASS=A
//POLICY EXEC PGM=IXCMIAPU
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DATA TYPE(CFRM)
STRUCTURE NAME(WAS)
SIZE(8192)
PREFLIST(FACIL01,FACIL02)
Starting with OS/390 R1.3, System Logger dynamically adjusts the Entry/Element ratio
avoiding potential problem, specially if you are not planning to share the same structure
between multiple log stream with in theory different characteristics.
LOWOFFLOAD: The LOWOFFLOAD value defines the amount of data which may be
retained in the log stream interim storage following an offload process. Since WebSphere for
z/OS never reuses the data written in the lo stream, there is no point to keep any data in the
log stream. For this reason, the LOWOFFLOAD value should be 0 to force all the data out of
the interim device toward the offload data set.
LS_SIZE: LS_SIZE defines the allocation size for the offload data sets. It should be specified
large enough to contain several offloads, possibly a day's worth.
Caution: There is no LS_SIZE value generated in the job as result of the customization
dialog. Be sure that there is an allocation size for this data set specified in the associated
SMS Dataclas. If LS_SIZE is not specified in the log stream definition, and an extent size is
not specified in the data class pointed to by LS_DATACLAS, the value is taken from the
ALLOCxx Parmlib member or set via an ACS (Automatic Class Selection) routine. The
default value in ALLOCxx is 2 tracks. Refer to the z/OS MVS Initialization and Tuning
Reference, SA22-7592.
It is very important to remember log stream staging and offload (log) data sets are single
extent VSAM linear data sets, and the shareoptions MUST be specified as '3,3'.
MAXBUFSIZE: MAXBUFSIZE may be specified for a DASDONLY log stream, it defines the
largest block that can be written to the log stream.
Security definitions
The WebSphere for z/OS log stream can be protected in the Security Access Facility (SAF)
LOGSTRM class. Each WebSphere for z/OS Application Server user ID must be permitted
UPDATE access to the log stream.
The log stream name defined to RACF is the name specified on the NAME parameter of the
DEFINE LOGSTREAM statement in the LOGR policy.
The data stored is not in a readable format so WebSphere for z/OS provides a REXX EXEC
(BBORBLOG) that allows you to browse the data contained in the error log stream. By
default, BBORBLOG formats the error records to fit a 3270 display.
You can view the error log stream output using the BBORBLOG browser. To invoke the
browser, go to ISPF option 6 and enter:
ex ’BBO.SBBOEXEC(BBORBLOG)’ ’BBO.BOSSXXXX format option’
Where:
log stream name is the name of the log stream.
format option is the LRECL length of the log stream records.
– 80 This is the default. The log stream record will be formatted on a LRECL length of 80
characters. Additional lines will be wrapped.
– NOFORMAT This turns off formatting. The error log message appears as one log message
string in the browse file.
6.6.4 Recovery
There are no particular considerations from a recovery point of view for this log stream since
there are no critical data in it.
If, however, the server cannot connect to the log stream, the message is instead written to
CERR, which puts it in the SYSOUT of the job output and WebSphere for z/OS continues to
operate. This would be indicated by the message:
BBOU0025I ERRORS WILL BE WRITTEN TO CERR FOR JOB <server name>
6.6.5 Performance
Usually there are not many considerations from a performance perspective toward the
WebSphere for z/OS log stream. Measurement has been taken in both configurations, with
WebSphere for z/OS running with a log stream in a coupling facility and on a DASD-only log
stream, and no big difference has been noticed if recent technologies has been used for
DASD placement. After your initial log stream allocation, performance data is produced in a
number of forms that can be useful to determine if any adjustments is necessary to your
installation:
SMF 88 data produced by the MVS System Logger
SMF 70–78 data produced by various MVS components
There are several tools which aide in the analysis of log stream performance problems.
IXGRPT1 formats and reports the SMF 88 data produced by the MVS System Logger
ERBRMFPP reports on the data captured in the SMF 70–78 records
There are some fields in the SMF88 that you might want to check against this log stream:
DASD SHIFT, STRUCTURE FULL, ENTRY FULL. Refer to 8.6.3, “SMF Type 88 records and
IXGRPT1 program” on page 291 for a description of these fields and what to do in case one
of these conditions happens in your installation.
See Example 7-1 for some of the more common uses of the display logger command and
example output. For a detailed explanation of the entire command syntax, see z/OS MVS
System Commands, SA22-7627, topic 4.10.26.
D LOGGER,L or D LOGGER,LOGSTREAM
IXG601I 09.13.20 LOGGER DISPLAY 061
INVENTORY INFORMATION BY LOGSTREAM
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
#@$#.SQ.EMHQ.LOG I#$#LOGEMHQ 000000 AVAILABLE
#@$#.SQ.MSGQ.LOG I#$#LOGMSGQ 000000 AVAILABLE
#@$C.#@$CCM$1.DFHLOG2 CIC_DFHLOG_001 000000 AVAILABLE
D LOGGER,C or D LOGGER,CONN
IXG601I 09.18.44 LOGGER DISPLAY 068
CONNECTION INFORMATION BY LOGSTREAM FOR SYSTEM #@$2
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
ATR.#@$#PLEX.RM.DATA RRS_RMDATA_1 000001 IN USE
ATR.#@$#PLEX.MAIN.UR RRS_MAINUR_1 000001 IN USE
ATR.#@$#PLEX.DELAYED.UR RRS_DELAYEDUR_1 000001 IN USE
ATR.#@$#PLEX.RESTART RRS_RESTART_1 000001 IN USE
D LOGGER,C,LSN=SYSPLEX.OPERLOG,DETAIL
IXG601I 13.15.29 LOGGER DISPLAY 380
CONNECTION INFORMATION BY LOGSTREAM FOR SYSTEM #@$1
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
SYSPLEX.OPERLOG SYSTEM_OPERLOG 000002 LOSS OF DATA
DUPLEXING: LOCAL BUFFERS
JOBNAME: BARI ASID: 003A
R/W CONN: 000001 / 000000
RES MGR./CONNECTED: *NONE* / NO
IMPORT CONNECT: NO
JOBNAME: CONSOLE ASID: 000A
R/W CONN: 000000 / 000001
RES MGR./CONNECTED: *NONE* / NO
IMPORT CONNECT: NO
D LOGGER,STR,STRN=CIC_DFHLOG_001
IXG601I 09.23.46 LOGGER DISPLAY 083
INVENTORY INFORMATION BY STRUCTURE
STRUCTURE CONNECTED
--------- ---------
CIC_DFHLOG_001
#@$C.#@$CCM$1.DFHLOG2 NO
#@$C.#@$CCM$2.DFHLOG2 NO
#@$C.#@$CCM$3.DFHLOG2 NO
#@$C.#@$CWC2A.DFHLOG2 NO
#@$C.#@$CWE2A.DFHLOG2 NO
#@$C.#@$CWJ2A.DFHLOG2 NO
Specifying LIST LOGSTREAM(lsname) DETAIL(YES), where lsname is the log stream name
(wildcards are supported), generates a report listing all of the log streams matching the
portion of the name specified. The output includes the log stream definition, names of any
associated or possible orphan data sets, connection information, structure definitions for the
CF-Structure based log streams. Without the DETAIL(YES) keyword, only the log stream
definition are reported in the sysout.
In addition, if you need to obtain information about the Couple Data Set, their definition values
and the current usage, you need to run the IXCMIAPU utility with the DATA TYPE(LOGR)
REPORT(YES) keyword.
This information is valuable in determining your resource usage and planning for future
migrations. The information generated from this report can also be used to rebuild your
policy; we have included a sample REXX program that uses the IXCMIAPU output to
generate your policy definition; see Appendix A, “Rebuilding the LOGR Policy” on page 309
for details.
User Data:
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
SYSTEMS CONNECTED: 3
For example, an IPL with a different LOGR couple data set that does not match your current
catalog configuration will cause a lot of orphaned data sets to be created because of the
mismatch of the entries between the catalog and the LOGR inventory.
This is not a problem for logger as they are simply ignored by logger during log stream data
set access points and it is also safe to manually delete these data sets. Check for message
IXG252I, that is issued by System Logger when a data set is being orphaned by System
Logger.
The LIST option with DETAIL(YES) also identifies ‘Delete Pending’ data sets. These data
sets are offload data sets that are eligible to be deleted by system logger but for some
reason, they could not been successfully deleted. One of the most common causes is that
when system logger tried to delete the data set, some application was browsing the expired
data. In this case, system logger marks the data set ‘Delete Pending’ and will try to delete the
data set at the next offload. You can manually delete these data sets if you feel comfortable
that logger doesn’t need this data. But we suggest that you let system logger deal with them.
In case the command returns you an outstanding enqueue, you might want to re-issue the
command a few times over several minutes, and if the owner of the resource does not
change, then there might be a serialization problem.
If the problem persists, refer to the 2.10.1, “Collecting documentation for problem diagnosis”
on page 77 to verify which documentation is needed to debug the problem.
7.1.4 How to identify log streams with problems / damaged log stream
Unfortunately, there is no Display command that gives you a complete view of the log stream,
checking for example that all the offload data sets described in the couple data sets actually
exist on DASD and none of them have been deleted manually.
The only time that you realize you have such a problem is when you try to retrieve the data. At
that time logger will account for a gap of data in the log stream and it is up to the application
to recover from this situation. The exploiter symptoms, that is, messages, can also be useful
to determine what to do to recover the situation.
D, LOGGER,L,LSN=SYSPLEX.OPERLOG
D LOGGER,L,LSN=SYSPLEX.OPERLOG
IXG601I 17.37.35 LOGGER DISPLAY 132
INVENTORY INFORMATION BY LOGSTREAM
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
SYSPLEX.OPERLOG SYSTEM_OPERLOG 000003 LOSS OF DATA
SYSNAME: #@$1
DUPLEXING: LOCAL BUFFERS
SYSNAME: #@$3
DUPLEXING: LOCAL BUFFERS
SYSNAME: #@$2
DUPLEXING: LOCAL BUFFERS
User Data:
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
SYSTEMS CONNECTED: 3
For both CF-Structure based and DASD-only log streams, System Logger marks a log stream
as permanently damaged when it cannot recover log data from either DASD staging data sets
or the local buffers after a system, sysplex, or coupling facility failure. Applications are notified
of the damage via System Logger services and reason codes. Recovery actions are
necessary only if warranted for the application.
In the case that System Logger has been unable to recover data for a log stream, its status
when using the D LOGGER,L command will be “POSSIBLE LOSS OF DATA”.
Note: You should never delete offload data sets (except orphaned offload data sets)
manually. This will cause an unrecoverable loss of data.
Review the complete description of messages IXG311I, IXG312E, IXG114I, and IXG115I in
the z/OS MVS System Messages Volume 10 (IXC - IZP), SA22-7640-03, before responding
to any of these messages.
Note that several messages could appear at the same time for different log stream for which
offloading is taking place. It may be that only one log stream is actually having a problem, and
Another way to determine which log stream is actually causing the delay is to check in the
message IXG312E to see if the data set name ends with an explicit sequence number, such
as "A0000001". If this is the case, it usually means that this log stream is experiencing a
problem. If the data set name ends with ".<SEQ#>", then it is more likely that this log stream
is waiting for another log stream that is having a problem.
Still, if for any reason, you need to terminate the logger address space, you need to issue the
FORCE IXGLOGR,ARM command and the only way to restart it is through the S IXGLOGRS
procedure.
IXGLOGRS is the command processor to start the logger address space. IXGLOGRS only
starts the logger address space IXGLOGR and then it immediately ends.
Deleting offload data sets via IDCAMS does not help to solve this situation since the LOGR
couple data set keeps track of all data sets. Deleting them (via IDCAMS, for example) will not
cause the LOGR couple data set to be updated, and logger will still think the data sets exists,
and report missing data if an attempt is then made to access the data mapped (from the
contents of the LOGR couple data set) in those data sets.
To solve this situation you can either try to understand which log stream is generating the
high number of offload data sets or enlarging the extend portion of the LOGR couple data set.
To determine which log stream is using all the directory entries, you can run the IXCMIAPU
utility and then take the corrective action against the log stream, as described by the above
referenced messages.
If this does not solve the situation, the following is a list of actions you can take to solve the
problem:
1. Run the IXCMIAPU utility with the LIST option against the log streams to verify which log
streams are generating the high amount of offload data sets that are using all the
inventory entries. Check also if there is any anomaly in the definition of these log streams.
Very often a wrong parameter is the cause of the elevated number of offload data sets
being created. For example, a small value for LS_SIZE is very common to be found. This
means very small offload data sets and if the log stream is generating a huge amount of
data, this can cause many offload data sets being created using all the available directory
entries.
2. Define a new LOGR CDS with a bigger DSEXTENT value that will allow new offload data
sets to be allocated. This will give some time to the installation to recover.
Following is the procedure to define new LOGR couple data sets and to make them active in
the sysplex. Before allocating the new data set, you can display the current allocation with the
command D XCF,COUPLE,TYPE=LOGR or you can run the IXCMIAPU and look for the
DSEXTENT field in the output display. This tells you how many extent are allocated in the
current LOGR couple data set.
At this point, you can use the IXCL1DSU utility to format a new LOGR CDS. Make sure the
new CDS you format has the appropriate number of LSRs, LSTRRs, and a larger
DSEXTENTs.
Once you have the new LOGR couple data set allocate, you can make this as the alternate
LOGR couple data set in your installation by issuing the command SETXCF
COUPLE,ACOUPLE=(new_dsname),TYPE=LOGR.
If the addition of this couple data set is successful, then you can proceed and issue the
SETXCF COUPLE,TYPE=LOGR,PSWITCH to switch control from the current primary to the
new allocated one. Remember to allocate the new alternate since in this moment the
installation is running without an alternate LOGR couple data set.
In these cases, if your installation is aggressively migrating offload data sets after a short
period of time, there might be the possibility that the current offload data set might have been
migrated while the application was not running. In these cases. the HSM recall might
introduce a delay in your application.
To avoid undesired behavior, you can define whether offload processing is to recall the
current offload data.
On the DEFINE LOGSTREAM keyword, you can specify the OFFLOADRECALL parameter to
control this process. The values of the keywords are:
YES Offload processing should recall the current offload data set.
NO Offload processing should skip recalling the current offload data set
and allocate a new one.
Note: When you chose not to recall the current offload data set, you should be aware that
this might cause some wasted space on DASD once it is recalled since it was not a totally
filled up data set. Care should be taken when using this option to size the data sets
appropriately.
You can update this function at any time during normal operations. This keyword can be
updated even when the log stream is actively connected. In this case the change will be
marked as ‘pending’ and takes effect on the subsequent first connection to the log stream in
the sysplex:
For a structure-based log stream, the change will also take effect during the next structure
rebuild
For a DASD-only log stream, the change also will take effect upon the next offload data
In such a situation, logger will create an internal connection to the log stream to be able to
perform the offload.
Example 7-11 Sample job to force a connection to log stream by using SUBSYS on DD
//IEBGENER JOB ,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID.
//COPY EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=logstream_name,SUBSYS=(LOGR,IXGSEXIT),
// DISP=SHR,DCB=(RECFM=VB,BLKSIZE=32760)
//SYSUT2 DD SYSOUT=*
The straight way to delete the log stream without performing the offload of the data from
the interim storage is to run the DELETE LOGSTREAM on the system where the internal
connection exists. In this case, logger will be able to remove the internal connection and
perform the deletion of the log stream without completing the offload request.
Here is a list of the recommended steps to perform the deletion of the log stream in such a
situation:
1. Issue the D LOGGER,L,LSN=LOGGER.TEST where LOGGER.TEST is the log stream
that is having offload problem with associated message IXG301I RC8 RSN805. This
should give you an idea of how many connections exist against the log stream and from
which system.
2. Issue the D LOGGER,C,LSN=LOGGER.TEST to verify the connections against the log
stream. If the reply message IXG601I does not contain any information, this means that
the connection described in the previous command is an internal connection.
3. At this point, if you want to delete the log stream, you need to run the DELETE
LOGSTREAM NAME(LOGGER.TEST) command on the system that owns the internal
connection. You find the system as part of the reply of the D
LOGGER,L,LSN=LOGGER.TEST command.
Example 7-12 Deletion of the log stream with valid data in interim storage
IXG301I SYSTEM LOGGER FAILED TO OFFLOAD DATA FOR LOG STREAM 742
LOGGER.TEST IN STRUCTURE LOG_TEST_001. RETURN CODE: 00000008 REASON
CODE: 00000805 DIAG1: 00000004 DIAG2: 4714041D DIAG3: 0107001B
DIAG4: 00000000
D LOGGER,L,LSN=LOGGER.TEST
IXG601I 14.22.03 LOGGER DISPLAY 744
INVENTORY INFORMATION BY LOGSTREAM
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
LOGGER.TEST LOG_TEST_001 000001 IN USE
D LOGGER,C,LSN=LOGGER.TEST
IXG601I 14.24.41 LOGGER DISPLAY 746
CONNECTION INFORMATION BY LOGSTREAM FOR SYSTEM #@$3
LOGSTREAM STRUCTURE #CONN STATUS
--------- --------- ------ ------
NO MATCHING INFORMATION FOUND.
At this point, to delete the log stream with still valid data in the interim storage, you need to
submit the following JCL on system #@$#3 that is the one owing the connection
(Example 7-13).
The following are the main reasons to initiate the rebuilding of a structure that contains log
stream data:
Operator request because of the need of moving allocated storage from one coupling
facility to another one
Reaction to a failure
Implement a new CFRM policy
Operator request
An operator can initiate the rebuild of the structure because of the need to either change the
configuration of the coupling facility, put the coupling facility offline due to maintenance
request or altering the size of the coupling facility structure. The rebuild operation can happen
dynamically while application are connected to the log stream.
While the rebuild is in progress, system logger rejects any system logger service requests
against the log stream. Since this is only a temporary condition, most exploiters simply report
the failed attempt and re-drive it.
Your installation can decide to have the system automatically altering a structure when it
reaches an installation-defined or defaulted-to percent full threshold. In order to use this
function, you need to define the ALLOWAUTOALT parameter to YES in the CFRM policy.
If you specify the auto alter function, when an application connects to a coupling facility log
stream using the IXGCONN macro, System Logger issues the following request to connect to
the coupling facility list structure:
IXLCONN ............ ALLOWALTER(YES)
When these two tasks happen, XES can then automatically alter the size and ratio attributes
of the structure as needed.
System Logger manages the usable space within its own structure by allowing each log
stream to receive 1/n of the portion of the number of active connections. System Logger does
offloading of log data from the coupling facility to DASD offload data sets when their specified
thresholds are met. So it is very possible that logger structures will appear to be only half full
and logger structures are also good candidates for XES to take its space for other
constrained structures.
Because of these facts you should consider allowing Auto Alter processing for other
structures than logger structures first. If you specify ALLOWAUTOALT(YES) in the CFRM
policy, you also specify the parameter MINSIZE(n) in the same policy. The value of n should
be chosen in a way that enables the logger to handle the expected number of concurrent
active log stream connections.
Reaction to failure
The following coupling facility problems can occur, resulting in rebuild processing for the
structure:
Damage to or failure of the coupling facility structure.
Loss of connectivity to a coupling facility.
A coupling facility becomes volatile.
No matter which is the source of the problem, coupling facility or connectivity, system logger
initiates a rebuild to move the structure to another coupling facility to avoid loss of data. The
rebuild is initiate independently of the REBUILDPERCENT specified on the policy definition
for this structure.
If the structure was in simplex-mode and the failure or damage occurs to the only instance of
the structure, then all systems connected to the coupling facility structure detect the failure.
The first system whose system logger component detects the failure initiates the structure
rebuild process. The structure rebuild process results in the recovery of one or more of the
affected coupling facility structure’s log streams. All the systems in the sysplex that are
connected to the list structure participate in the process of rebuilding the log streams in a new
coupling facility list structure.
While the rebuild is in progress, system logger rejects any system logger service requests
against the log stream. The status will be one of the following:
The structure rebuild has completed successfully, the coupling facility structure and
associated log streams are available, and system logger requests will be accepted.
The structure rebuild was unsuccessful and connection to the structure is not possible
because the structure is in a failed state. Log data still resides in staging data sets if they
are used to duplex the log data for the log stream. If staging data sets were not used, the
data persists in the local storage buffers on each system. System Logger dynamically
allocates staging data sets to prevent a possible loss of data.
For a simplex-mode structure, Logger detects the loss of connectivity to the single instance of
the structure. Then the system that lost connectivity may initiate a rebuild for the structure.
System logger rejects logger service requests issued during the rebuild process. If XES
cannot allocate a new structure instance in a coupling facility that can be connected to all the
affected systems, system logger does one of the following, depending on whether the system
or systems that cannot connect to the new coupling facility structure were using staging data
sets:
If the system was using staging data sets, the rebuild process continues and the coupling
facility log data for the system is recovered from the staging data sets.
If the system was not using staging data sets, the rebuild process is stopped. The systems
go back to using the source structure. The application on the system that loses
connectivity to the coupling facility will lose connectivity to the log stream and they can
either fail or wait depending on their recovery process.
The systems that do not have connectivity to the old coupling facility structure issue an ENF
48 event indicating that they do not have connectivity to the log stream.The systems that can
connect to the source structure issue an ENF 48 event indicating that the log stream is
available to that system and can resume use of the log stream.
The installation should either update the CFRM active policy to make the new coupling facility
structure available to all the systems or else fix the hardware link problem and then have the
7.9 Tools
The following are tools that are useful to control the system logger environment:
The following is a recommended sample for the DUMP command to identify all the required
documentation you need to collect to debug a system logger problem.
You can use the IEADMC parmlib member facility, prepare the member in parmlib and at the
time of the error, simply enter the DUMP TITLE=(LOGGER PROBLEM),PARMLIB=xx
command or you can use the standard DUMP command with all the above mentioned
parameters.
For further information about how to set up the IEADMC parmlib member, refer to z/OS MVS
Initialization and Tuning Reference, SA22-7592.
7.9.2 SMF88
System logger report data through SMF88. To collect SMF88 records, you need to request
them through the parmlib member SMFPRM in the SYS and SUBSYS keywords either
specifically or as part of a range of SMF records. If you want to change the recording after
IPL, remember to issue the SET SMF=xx (where xx is the suffix of the SMFPRM member)
command to activate the parmlib changes.The following is an example of an SMFPRM
member to collect the logger SMF88:
SUBSYS(STC,EXITS(IEFU29,IEFU83,IEFU84,IEFU85,IEFUJP,IEFUSO,
IEFACTRT),
INTERVAL(SMF,SYNC),
7.9.3 IXGRPT1
IXGRPT1 is available in SYS1.SAMPLIB. This program can help you analyze system logger
SMF88 data for the systems in a sysplex. IXGRPT1 provides the following:
System logger interim storage related I/O activity
Nearness of the STRUCTURE FULL condition
Selected capacity planning information
The input to IXGRPT1 should be sorted by timestamp and log stream name. For sorting
purposes, analysis programs should use timestamp field SMF88LTD (note that this field is in
GMT format), created when the ENF signal was issued, rather than fields SMF88TME and
SMF88DTE, which indicate when a particular record was written. If IXGRPT1 detects a
sorting error in the input, an error message is produced and the program ends.
When you use the IXGRPT1 program, make sure to include type 88 subtype 1 records and
indicate whether or not you wish to include DASD-only log stream information in this report or
coupling facility data only.
Follow the instructions in the prolog of IXGRPT1 to run the utility or refer to JCL sample
IXGRPT1J to run the utility.
The following is a list of information that can be obtained through the IXGRPT1 tool to
document the interim storage I/O activity:
Number of bytes written by users via IXGWRITE during the interval (SMF88LWB)
Number of bytes written to interim storage during the interval (SMF88SWB)
Number of bytes written to DASD during the interval (SMF88LDB)
Number of bytes deleted from interim storage during interval without having been written
to the log data set (SMF88SIB)
Number of deletes from interim storage during interval without having been written to the
log data set (SMF88SII)
Number of bytes written to the DASD log data set and then deleted from interim storage
during the interval (SMF88SAB)
Number of deletes from interim storage during interval written to the DASD log data set
and then deleted (SMF88SAI)
Number of times the log stream was offloaded during interval (SMF88EO)
Number of times a request was made by system logger to write log stream data to DASD
during the expiring SMF interval (SMF88LIO)
Number of times system logger had to suspend before writing log stream data to DASD
because a previously-initiated write to DASD had not yet completed during the expiring
SMF interval (SMF99LIS)
IXGRPT1 gives you also information about the nearness of STRUCTURE FULL condition for
coupling facility log streams as follows. By analyzing the following fields, you can have an idea
if the storage for the coupling facility structure needs to be tuned. These informations apply
only to coupling facility log streams; for DASD-only log streams, these fields will be zeros.
Number of IXGWRITE invocations of completion type-1 (structure fullness in “normal”
range)
In addition, the two types of users have different requirements of System Logger. The
funnel-type exploiter is mainly concerned that the log stream never fills up, and that offloads
happen as efficiently as possible. The active exploiters ideally want all their data to always
reside in the interim storage, with few, if any, log records being moved out to offload data sets
before they are deleted.
Beyond the considerations that are unique to one or other type of exploiter, there are some
general recommendations that apply to both. We discuss these in this chapter as well.
And finally, if you are to undertake an exercise to investigate and possibly tune the
performance of System Logger, you must be familiar with the information provided in the SMF
Type 88 records, and how best to access that information.
The following sections provide recommendations to help you set up an efficient and
highly-available System Logger environment. Note, however, that some of these
recommendations may be different for specific exploiters; in that case, the recommendations
provided in each exploiter chapter (Chapter 3 through Chapter 6) will override the
recommendations we make here.
For an active exploiter, you would generally not expect to see more than one or two offload
data sets, and each would typically not contain many log records. Therefore, the LS_SIZE for
these offload data sets would typically be in the range of 10000 to 20000 (40 MB to 80 MB).
For the funnel-type exploiters, the first thing we need to know is how long you will keep the
data in the log stream. This could be as small as a number of hours, or as long as many days.
The duration will vary from one exploiter to another, and from one installation to another.
The other information you need to know is how much data is moved to the offload data sets in
a busy hour or a busy day. This information can be obtained from the IXGRPT1 report, as
described in “BYT Deleted interim ST w/DASD”. Refer to 8.6.4, “IXGRPT1 Field Summary
and IXGSMF88 Cross Reference” on page 293 for a description of the field. Remember that
Once you know roughly how much data you wish to keep in the log stream, you need to
decide on the size of each offload data set. You have two conflicting requirements here:
You don’t want to make the offload data sets so large that System Logger has difficulty
finding that much free space on a volume. Also, as discussed in “Deleting log data” on
page 64, old offload data sets may only get deleted when System Logger allocates a new
offload data set, so if the offload data sets are many times larger than necessary, you
could end up just wasting DASD space because new offload data sets rarely get allocated
and old ones could be kept on DASD for far longer than necessary.
On the other hand, having to allocate a new offload data set slows down the offload
process. And every time you go through allocation, you face the risk that you won’t be able
to obtain the required space, or of contention problems within the allocation process, both
of which will stop the offload from proceeding. So, you don’t want to be allocating offload
data sets too frequently either.
On balance then, try to select a size that will hold at least 10 offload’s worth of log data, while
staying within an amount of space that is easily obtainable in your installation. Also, try to
select a size that does not hold more than one day’s worth of data.
Ideally, offload processing should not be invoked more frequently than once every 30-60
seconds. On the other hand, if you run for a whole SMF interval at peak times and have no
offloads for a log stream, the interim storage is probably larger than necessary.
To estimate the amount of space required in the CF part of the log stream to hold this much
data, you need to use an IXGRPT1 report. Example 8-1 contains sample JCL to run an
IXGRPT1 report for just the log stream you are interested in. You should run this against one
day’s worth of SMF 88 data for a representative busy day.
In the resulting report, select the interval that has the highest “BYT Written to interim storage”
value. Divide this value by the number of minutes in the interval to get the per-minute write
rate. Increase this value by 50% to allow for unexpected spikes in activity and control data.
The resulting value indicates how much space there should be in the interim storage for this
log stream between the HIGHOFFLOAD and LOWOFFLOAD thresholds1. Because the
LOWOFFLOAD threshold for funnel-type log streams should always be 0%, we can ignore
this value in our calculations.
For example, assume the SMF88SWB for the busiest interval is 31493284 and the SMF
interval is 15 minutes. Dividing the 31493284 by 15 minutes gives a write rate of roughly 2 MB
a minute. Increasing by 50% brings this up to 3 MB a minute. If the HIGHOFFLOAD threshold
for this log stream is 70%, the CF structure should be sized so that the interim storage for this
log stream is roughly 4.25 MB (3 MB / 70%). This would result in an offload approximately
every minute during peak times. We will come back to the values to use for HIGHOFFLOAD
and LOWOFFLOAD in 8.4.1, “High and low offload thresholds for funnel-type log streams” on
page 284.
When calculating the structure size, you need to remember that the space in the structure is
divided equally between all the connected log streams in that structure. You also need to
allow something for the control space in the structure. So, if the structure normally contains
10 connected log streams, you would size the structure to be 4.25 MB x 10 plus 4 MB (based
on CFLevel 12) for control space, giving a structure size of 46.5 MB. This assumes that all the
log streams have similar write rates—if some of the log streams sharing the same structure
have higher write rates, you should use the write rate of those log streams to determine the
structure size.
Once again, we must use information from the IXGRPT1 report. There are two indicators that
you must watch for:
The frequency of offload processing. At peak times, there should not be more than one
offload every 30 seconds, and at a minimum there should be at least one offload per SMF
interval.
The amount of data that is moved to an offload data set. This information is kept in field
SMF88LDB in the SMF Type 88 record, and is shown in the field entitled “BYT Written to
DASD” in the IXGRPT1 report. For an active log stream, this should always be zero.
To size interim storage for an active log stream, you need to arrive at a size, and
LOWOFFLOAD and HIGHOFFLOAD values, that will result in about one offload per minute at
peak times and 0 bytes being moved to offload data sets.
To do this, we need some more information from the IXGRPT1 report. We need to know the
rate a which data is being written to the log stream—we can get that from the “BYT Written to
interim storage” field. Remember to divide this value by the number of minutes in the SMF
interval.
1
To be completely accurate, we should take the CF element size into account when calculating the interim storage
requirement. However the element size is sufficiently small that it will not have a significant impact.
So, now we know how many bytes are being written per minute, and how many IXGDELETs
are being issued per minute. If you have more than one IXGDELET per minute, you should
aim to have one offload per minute. If you only have one IXGDELET every x minutes, you
should aim to have one offload every x minutes.
To calculate the interim storage size, multiply the write rate per minute by the number of
minutes between offloads. Increase this value by 50% to allow for control information and
workload spikes. The result is the amount of space in the interim storage between the
LOWOFFLOAD and HIGHOFFLOAD thresholds. To get the total interim storage space for
this log stream, divide this amount by the difference between the HIGHOFFLOAD and
LOWOFFLOAD percents. So, if the amount of data is 3 MB, and the HIGHOFFLOAD is set to
80 and the LOWOFFLOAD is set to 60, you should have 3 MB / (80%-60%), or 15 MB of
interim storage for this log stream. We will come back to the values to use for
HIGHOFFLOAD and LOWOFFLOAD in 8.4.2, “High and low offload thresholds for active log
streams” on page 284.
When calculating the structure size, you need to remember that the space in the structure is
divided equally between all the connected log streams in that structure. You also need to
allow something for the control space in the structure. So, if the structure normally contains 5
connected log streams, you would size the structure to be 15 MB x 5 plus 4 MB (based on
CFLevel 12) for control space, giving a structure size of 79 MB. This assumes that all the log
streams have similar write rates—if some of the log streams sharing the same structure have
higher write rates, you should use the write rate of those log streams to determine the
structure size.
Ideally, offload processing should not be invoked more frequently than once every 30-60
seconds. On the other hand, if you run for a whole SMF interval at peak times and have no
offloads for a log stream, the interim storage (staging data set) is probably larger than
necessary.
To estimate the amount of space required in the staging data set part of the log stream to
hold this much data, you need to use an IXGRPT1 report. Example 8-2 on page 279 contains
In the resulting report, select the interval that has the highest BYT Written to interim storage
value—this identifies the busiest interval. Unlike CF log streams, the element size (actually the
staging data set CI Size) is sufficiently large that we do need to take it into account. So, now
we check the “Average Buffer Size” value for that interval. Divide the average buffer size
value by 4000 and round up to the next whole number—this is the number of CIs required in
the staging data set for each IXGWRITE. Next divide the “# Writes invoked” value by the
number of minutes in the SMF interval—this gives us the number of IXGWRITEs per minute.
Now multiply that number by the number of CIs required for each IXGWRITE and that gives
us the number of CIs being written to this log stream per minute. Increase this value by 50%
to allow for unexpected spikes in activity and control data. The resulting value indicates how
much space there should be in the interim storage for this log stream below the
HIGHOFFLOAD threshold, assuming we have one offload per minute. The LOWOFFLOAD
threshold for funnel-type log streams should always be 0%, so we can ignore that value in
these calculations
For example, assume the average buffer size for the busiest interval is 4100, the number of
writes invoked is 45000, and the SMF interval is 15 minutes. Dividing the 45000 by 15
minutes gives a write rate of 3000 writes a minute. Next we divide the average buffer size
(4100) by 4000 and round up—this gives us a value of two CIs per IXGWRITE. Increasing by
50% brings this up to 3 CIs per IXGWRITE. Multiply this by the number of IXGWRITEs per
minute and we get a value of 9000 CIs per minute. So, the staging data set space below the
HIGHOFFLOAD threshold should be 9000 CIs. If the HIGHOFFLOAD threshold for this log
stream is 70%, the data set should be sized to be roughly 13000 CIs(9000 / 70%). This would
result in an offload every minute during peak times. We will come back to the values to use for
HIGHOFFLOAD and LOWOFFLOAD in 8.4.1, “High and low offload thresholds for
funnel-type log streams” on page 284.
Once again, we must use information from the IXGRPT1 report. There are two indicators that
you must watch for:
The frequency of offload processing. At peak times, there should not be more than one
offload every 30 seconds, and at a minimum there should be at least one offload per SMF
interval.
The amount of data that is moved to an offload data set. This information is kept in field
SMF88LDB in the SMF Type 88 record, and is shown in the field entitled “BYT Written to
DASD” in the IXGRPT1 report. For an active log stream, this should always be zero.
To do this, we need some more information from the IXGRPT1 report. We need to know the
rate at which IXGWRITEs are being issued, and the number of CIs used by each IXGWRITE.
Using the IXGRPT1 report, select the interval that has the highest “BYT Written to interim
storage” value—this identifies the busiest interval. Next we check the Average Buffer Size
value for that interval. Divide the average buffer size value by 4000 and round up to the next
whole number—this is the number of CIs required in the staging data set for each IXGWRITE.
Next divide the “# Writes invoked” value by the number of minutes in the SMF interval—this
gives us the number of IXGWRITEs per minute. Now multiply that number by the number of
CIs required for each IXGWRITE and that gives us the number of CIs being written to this log
stream per minute. Increase this value by 50% to allow for unexpected spikes in activity and
control data. The resulting value indicates how much space there should be in the interim
storage for this log stream between the HIGHOFFLOAD and LOWOFFLOAD thresholds,
assuming we have one offload per minute.
We also need to know how often data is being logically deleted from the log stream (using
IXGDELET). If there are no IXGDELETs issued between two consecutive offloads, System
Logger has no choice but to move the oldest data from interim storage to an offload data set.
For some exploiters, like CICS, you can affect how often an IXGDELET is done by adjusting
the Activity Keypoint Frequency. However, for exploiters where you cannot control this, you
need to tune the frequency of offloads by adjusting the interim storage size—the larger the
interim storage, the less frequently will an offload be initiated. You want to make sure there is
at least one IXGDELET per offload. You can find the number of IXGDELETs in the interval by
summing the “# Deletes w/o DASD write” and “# Deletes w/ write fields”. Divide this value by
the number of minutes in the SMF interval to determine the number of IXGDELETs per
minute.
So, now we know how many CIs are being written per minute, and how many IXGDELETs
are being issued per minute. If you have more than one IXGDELET per minute, you should
aim to have one offload per minute. If you only have one IXGDELET every x minutes, you
should aim to have one offload every x minutes.
To calculate the interim storage size, multiply the number of CIs being written per minute by
the number of minutes between offloads. The result is the amount of space in the interim
storage between the HIGHOFFLOAD and LOWOFFLOAD thresholds. To get the total interim
storage space for this log stream, divide this amount by the difference between the
HIGHOFFLOAD and LOWOFFLOAD percents. So, if the amount of data is 3MB, and the
HIGHOFFLOAD is set to 80 and LOWOFFLOAD is set to 60, you should have 3MB /
(80–60%), or 15MB of space in the staging data set for this log stream. We will come back to
the values to use for HIGHOFFLOAD and LOWOFFLOAD in 8.4.2, “High and low offload
thresholds for active log streams” on page 284.
Bearing these attributes in mind, the best performance can be obtained by ensuring that
CF-Structure log streams are duplexed to data spaces, and keeping the associated structure
size as small as possible, while still being able to deliver the required levels of performance.
For a CF-Structure log stream, the location of the second copy of the data depends on how
you specified STG_DUPLEX and DUPLEXMODE in the log stream definition. If you specify
STG_DUPLEX(YES) and DUPLEXMODE(UNCOND), the second copy of the data will always
be in a staging data set. If you specify STG_DUPLEX(YES) and DUPLEXMODE(COND), the
location of the second copy depends on the volatility of the CF and on whether the CF is in
the same failure domain as this z/OS system.
If the CF is volatile, the second copy of the data currently in interim storage will be placed in a
staging data set. If the CPC containing the CF has a battery backup, the CF will know that it is
non-volatile. If the CPC does not have battery backup, but you have a UPS and are 100%
confident that the UPS will not fail, you can issue a command on the CF console to tell it that
it is non-volatile. Placing a System Logger structure in a volatile CF will cause all log streams
in that structure that have specified DUPLEXMODE(COND) to be duplexed to staging data
sets on DASD, impacting performance at higher logging rates.
If the z/OS is in the same failure domain as the CF (that is, they reside in the same CPC), the
second copy of the data will again be placed in the staging data set. If two z/OSs in two CPCs
are connected to the same log stream, it is possible that one of the z/OSs will be in the same
failure domain as the CF, but the other will not. In this case, one of the System Loggers will be
writing the second copy of the data to a staging data set and the other will be using a data
space.
If neither of these conditions apply, the second copy of the data will be placed in a data space.
And as discussed in 2.8.3, “Other recovery processes and errors” on page 72, the data space
is used to repopulate the structure as part of a structure rebuild operation. Therefore, having
a large amount of log stream data in a data space can result in significant paging during
certain recovery processing. This is another reason for not over-sizing the interim storage for
a log stream—the larger the interim storage defined for a log stream, the larger the data
space that is required to hold the duplex copy of that data.
If the DUPLEXING: line in the response contains LOCAL BUFFERS, the data is being kept in
the data space. Remember that you must issue this command on each system that is
connected to the log stream in question.
If you are using SMF Type 88 records to check this, the second bit of the SMF88LFL field
indicates whether that log stream used a staging data set during that SMF interval.
However, you can, indirectly, control the size of the data space. Remember that all the log
data in a staging data set at any one time will also exist in a data space. So, the larger the
staging data set, the larger the data space needs to be. As for CF log streams, we do not
recommend specifying the interim storage for a DASD-onlylog stream any larger than
necessary.
If the log stream in question is a CF one, the first thing to consider is how many log streams
will normally reside in the structure. The structure storage is divided equally between all the
connected log streams in the structure. So, if you have a 46 MB structure with 10 log streams,
each log stream will have roughly 4 MB of storage in the CF.
Because the unit of storage in the CF is more granular (256 or 512 bytes) than in the staging
data sets (4 KB), it is likely that a staging data set will need to be larger to hold the same
amount of log data as a structure. For example, if you were writing small log records (100
bytes), the staging data set would need to be 16 times larger than that log stream’s portion of
the CF structure to hold the same number of records (because each record would take up
256 bytes in the CF, but 4096 bytes in the staging data set).
To get optimum performance from a CF log stream, it is important that offloads are initiated
because the CF interim storage hit the HIGHOFFLOAD threshold, and not because the
staging data set hit the threshold first. When sizing the staging data sets, you should use the
formula we described in “Sizing interim storage for funnel-type DASD-only log streams” on
page 278. You should also monitor for non-zero values in the STG THLD field in the IXGRPT1
report. If you encounter instances of non-zero values, increase the STG_SIZE specification
on the log stream definition in the LOGR policy by a small amount to make the staging data
set larger, and continue to monitor.
8.4.1 High and low offload thresholds for funnel-type log streams
The low offload threshold for a funnel-type log stream should usually be zero. Most situation
will be satisfied by having the data offloaded to a low offload value of zero.
The setting of the high offload threshold usually can be calculated and adjusted according to
your environment.As a general rule, a high offload threshold of 70% should provide
acceptable performance and availability. The most important thing is that it should be
possible to move all the data below HIGHOFFLOAD to the offload data sets in less time than
it would take the application to fill the space between HIGHOFFLOAD and the interim storage
filling completely.
This is shown in Figure 8-1. In this example, the structure is 50 MB, and the HIGHOFFLOAD
threshold is set to 70%, meaning that there is 15 MB above the threshold. The application
writing to this structure is generating 450 KB of log data per second, meaning that it would
take 33 seconds to fill up the structure. In order to provide acceptable performance, it must be
possible to offload the 35 MB of data below the HIGHOFFLOAD threshold in less than 33
seconds. If it turns out that you cannot offload the data in that time, you can decide to
decrease the HIGHOFFLOAD threshold, meaning that there is less data to move every time
HIGHOFFLOAD threshold is reached, and also that there is more storage above the
threshold, meaning that it will take longer to fill the structure.
IXGWRITE rate:
300*1500=450KB/sec 50MB
15MB 70%
It will take 33 seconds to fill up
15MB with this rate
35MB
8.4.2 High and low offload thresholds for active log streams
Unlike funnel-type log streams, you specifically do not want to move all data out of interim
storage. Rather, you want to keep data in interim storage for as long as possible, within the
constraint of always having to have available space in interim storage for new writes.
There are two schools of thought about the value that should be used for the LOWOFFLOAD
threshold. One holds that it should be set to 60%, striking a balance between keeping as
much data in interim storage as possible, while at the same time ensuring that each offload
frees up enough data to ensure that another offload will not be required too soon. The other
holds that LOWOFFLOAD should be set as high as 75%. The reason for this is that it
minimizes the amount of processing required by the offload and increases the amount of data
that can be kept in interim storage. However, measurements have shown that any difference
in performance between the two values falls within the normal margin of error.
The first attribute is the ratio between the MAXBUFSIZE specified for the structure and the
actual average buffer size of the log stream. The actual buffer size for each log stream can be
found in the field entitled “AVERAGE BUFFER SIZE” in the IXGRPT1 report. This ratio
determines how many elements are needed for each log block, and therefore the
entry-to-element ratio. This was discussed in “The entry-to-element ratio” on page 26. If the
log streams in a structure have very different average buffer sizes, it is likely that the
entry-to-element of the structure will only suit a subset, or maybe even none, of the log
streams in the structure.
The average buffer size of a log stream can vary over time, so this is not an exact science,
however, try to avoid placing log streams with consistently very large average buffer sizes in
the same structure as ones with consistently very small ones.
The other attribute to be considered is the volume of data being written to the log stream. The
number of bytes written to the log stream over an SMF interval is reported in field “BYT
WRITTN BY USERS IXGWRITES” in the IXGRPT1 report. Remember that the elements in a
structure are divided equally between all connected log streams in that structure. So, if you
have a very busy and a very idle log stream in the same structure, the busy one is likely to be
short of storage, doing very frequent offloads, while the other log stream will have far more
storage than it requires and therefore hardly ever doing an offload.
Traditional wisdom for placing DASD data sets is that busy data sets should be separated
from each other and placed on volumes with idle data sets. However, for optimum CF log
stream performance, log streams with high write rates should be placed in the same
structure—one that has a reasonably large size. And log streams with low writes should be
placed together in another structure, presumably one with a lot less storage.
The staging data sets associated with busy log streams can potentially be a bottleneck to
System Logger performance. Remember that IXGWRITEs are synchronous—the requestor
will not get a response from System Logger until the I/O to the staging data set either
completes or fails. Therefore, at least the staging data sets associated with the busier log
streams should be placed on high performance devices. You can use your SMS ACS routines
to ensure this happens.
The last type of data sets are the offload ones. Generally speaking, the performance of these
data sets is not as critical as the staging data sets. What is more important is that they are
placed on volumes that are not subject to RESERVEs as this can delay allocation processing
when System Logger is trying to move data to an offload data set from interim storage.
Therefore, when placing these data sets (in your ACS routines), attempt to select devices with
reasonable performance that are unlikely to be the targets of a RESERVE.
In addition to placement of the staging data sets, the CI Size of the data sets can have an
affect on System Logger performance. While the staging data sets must have a CI Size of
4 KB, the offload data sets should have a CI Size of 24 K. The best way to effect this is to use
a data class for all offload data sets that is defined with this CI Size.
The first is significant number of “Type 3” writes for any CF log stream. These are a result of
an IXGWRITE to a log stream where there are already more than 90% of the elements are in
use. This is an indicator of either a problem in offload processing, or else that the interim
storage is significantly undersized for this log stream.
Another field to monitor is DASD SHFTS, particularly in relation to the number of offloads.
Assuming that offloads are being initiated reasonably frequently, the number of DASD
SHIFTS (that is, the number of times a new offload data set had to be allocated) should be a
small percentage of the number of offloads. If you have a significant number of DASD
SHIFTS, it is an indicator that the offload data sets are much smaller than they should be
(possibly because an appropriate LS_SIZE was not specified on the log stream definition in
the LOGR policy). In addition, for an active log stream, where you want to avoid the use of
offload data sets completely, the presence of DASD SHIFTS is an indicator that either the log
stream interim storage is too small, or else there is a problem with the application resulting in
log records being held open for much longer than they should be. This is discussed in
“IXGRPT1 observations and possible actions” on page 195.
One of the challenges when tuning System Logger is that there is no online monitor that
provides information at the log stream level. While RMF provides some information, it is only
----------------------------------------------------------------------------------------------------------------------
COUPLING FACILITY NAME = CF103
TOTAL SAMPLES(AVG) = 299 (MAX) = 299 (MIN) = 299
-----------------------------------------------------------------------------------------------------------------
COUPLING FACILITY USAGE SUMMARY
-----------------------------------------------------------------------------------------------------------------
STRUCTURE SUMMARY
-----------------------------------------------------------------------------------------------------------------
% OF % OF AVG LST/DIR DATA LOCK DIR REC/
STRUCTURE ALLOC CF # ALL REQ/ ENTRIES ELEMENTS ENTRIES DIR REC
TYPE NAME STATUS CHG SIZE STORAGE REQ REQ SEC TOT/CUR TOT/CUR TOT/CUR XI'S
LIST DSNZPLEX_SCA ACTIVE 32M 1.6 0 0.0 0.00 43K 86K N/A N/A
128 819 N/A N/A
LOG_JG2_5M ACTIVE 8M 0.4 1585K 100 5284.3 5725 11K N/A N/A
1554 3143 N/A N/A
PROCESSOR SUMMARY
-----------------------------------------------------------------------------------------------------------
COUPLING FACILITY 2064 MODEL 100 CFLEVEL 12
AVERAGE CF UTILIZATION (% BUSY) 20.2 LOGICAL PROCESSORS: DEFINED 1 EFFECTIVE 1.0
C O U P L I N G F A C I L I T Y A C T I V I T Y
SYSD 1585K SYNC 1458K 91.9 43.7 54.8 NO SCH 0 0.0 0.0 0.0 0.0
5284 ASYNC 128K 8.1 323.5 406.6 PR WT 0 0.0 0.0 0.0 0.0
CHNGD 0 0.0 INCLUDED IN ASYNC PR CMP 0 0.0 0.0 0.0 0.0
DUMP 0 0.0 0.0 0.0 0.0
In the sample report shown in Figure 8-2, the structure size for LOG_JG2_5M has been
altered to 8M, which is 0.4% of the total CF storage. The structure was defined with an
INITSIZE of 5M, but altered to 8M due to an excessive number of structure full conditions
while running the workload. This structure did 100% of the requests to the CF in the 5 minute
interval shown. The average request rate was 5284 per second.
System Logger log streams are reported in the LIST section of the Usage Summary part of
the report. Under the LST/DIR column there are two lines per structure. The first line gives the
Notice the current usage (second row of data) indicates a 1:3 ratio (3143 in-use
elements/1554 in-use entries), rounded up to the next whole number. As noted above, the
number of entries (5725) and elements (11 K) in the structure are in a 1:2 ratio. With a
MAXBUFSIZE set to 64000, the element size is 256 and consequently, because of the 1:2
ratio, this indicates and expected buffersize of 512 bytes. However, the current usage of 1:3
indicates at least one log stream is writing records of at least 750 bytes.
An important point to remember is the number of data elements is divided equally among the
connected log streams. So, if the number of data elements in the structure is 11K, and there
are three log streams connected to the structure, each log stream is allocated 3.66K data
elements.
The Coupling Facility Activity report also provides information about the request activity for
the structure. From the SYSD system, there were 1585K requests, giving an average of 5284
per second. 1458K of the requests were synchronous with average service times of 43.7
microseconds.
The average, or mean, represents the middle in the distribution of a set of individual
measurements. The standard deviation measures the spread or variation of the individual
measurements on either side of the average, 66% of all observations lie within plus or minus
one standard deviation. 95% of all observations lie within plus or minus 2 standard deviations.
The report shows an average SYNC time of 43.7 microseconds with a standard deviation of
54.8 microseconds for the population of SYNC requests. In this case, two standard deviations
to the negative side of the average would be less than zero. Consider 0 to +2 standard
deviations on the positive side of the average defines the range where 95% of the requests
will occur. Therefore, 95% of all SYNC requests for this test would lie between 0 and 153.3
(2*54.8 + 43.7) microseconds. If the standard deviation is large (for example in the thousands
of microseconds), it indicates some portion of the CF configuration is non-responsive,
causing large variability in individual measurements.
The most frequently seen reason for a non-responsive CF is the use of shared CF CPs,
especially if Dynamic CF Dispatching (DYNDISP=YES) is enabled for the CF LPAR. Looking
at the RMF CF Usage Summary report, whenever the number of logical processors defined is
greater than the number of effective logical processors, the configuration may be seeing
performance issues. For production CICS regions, if you must use a CF with shared CPs,
turning Dynamic CF Dispatching off (DYNDISP=NO) is strongly recommended. The
DYNDISP command is entered on the CF console.
Another point of caution—if the CF is actually an LPAR in the same CPC as the z/OS image,
and the LPARs share CPs, all SYNC requests will be converted to ASYNC requests. Neither
CICS nor the System Logger have control (or knowledge) of the change, and the reports will
show the requests as SYNC, but the service times will be elongated.
It’s also good to check for delayed requests. For example, if the number of NO SCH (that is,
no subchannel), is greater than 10% of the total number of requests for the structure, you
should consider adding more CF Link capacity, or reducing the load on the existing links.
When using z/OS WLM in goal mode, it’s possible to define a report class for each CICS
region and the System Logger address space. The report classes for regions are in addition
to the report classes for transactions as discussed in “DFHLOG and DFHSHUNT example”
on page 177.
Each CICS region and System Logger address space should be defined in a separate report
class in order to understand the results of each change made during the log stream tuning
process.
The same information can be gathered using a Report Performance Group if WLM is being
used in compatibility mode. For guidance in defining a compatibility mode Report
Performance Group, refer to the section entitled “Defining Service Classes and Performance
Goals” in z/SO MVS Planning: Workload Management, SA22-7602.
Figure 8-5 on page 291 contains a WLM Workload Activity Report, which presents data
collected for report classes RIYOT1 (a CICS region) and RLOGER (the System Logger
address space). Report classes are defined using the WLM ISPF panels.
The report interval is listed in the START and END times at the top of the report page. A word
of caution—the minimum interval is defined by the INTVAL() parm in the SMFPRMxx member
of SYS1.PARMLIB. In the samples collected, the interval was set to 5 minutes as follows:
INTVAL(05) /* SMF GLOBAL RECORDING INTERVAL */
It's important to ensure the SMF 70 to 79 records are being collected, along with the CICS
110 records. The records that are to be collected are also defined in the SMFPRMxx member.
SUBSYS(STC,EXITS(IEFACTRT),INTERVAL(SMF,SYNC),
TYPE(0,30,70:79,88,89,90,99,110,245))
SUBSYS(OMVS,NOEXITS,INTERVAL(SMF,SYNC),
TYPE(0,30,70:79,88,89,90,99,110,245))
When the reports are formatted, it is possible to report a larger interval than was specified in
the SMFPRMxx member, by using the DINTV parm for the ERBRMPFF utility. However, the
smallest interval which can be reported is the value specified for INTVAL.
Refer to z/OS V1R4.0 RMF Report Analysis, SC33-7991, for more information about this
report.
W O R K L O A D A C T I V I T Y
PAGE 1
z/OS V1R2 SYSPLEX WSCZPLEX START 01/01/2002-23.15.00 INTERVAL 000.04.59 MODE = GOAL
RPT VERSION V1R2 RMF END 01/01/2002-23.19.59
TRANSACTIONS TRANS.-TIME HHH.MM.SS.TTT --DASD I/O-- --SERVICE-- SERVICE RATES- PAGE-IN RATES
----STORAGE----
AVG 1.00 ACTUAL 0 SSCHRT 11.4 IOC 343 ABSRPTN 631 SINGLE 0.0 AVG 8517.43
MPL 1.00 EXECUTION 0 RESP 1.9 CPU 9348 TRX SERV 631 BLOCK 0.0 TOTAL 8517.43
ENDED 0 QUEUED 0 CONN 1.6 MSO 175902 TCB 0.8 SHARED 0.0 CENTRAL 8517.43
END/S 0.00 R/S AFFINITY 0 DISC 0.1 SRB 3566 SRB 0.3 HSP 0.0 EXPAND 0.00
#SWAPS 0 INELIGIBLE 0 Q+PEND 0.2 TOT 189159 RCT 0.0 HSP MISS 0.0
EXCTD 0 CONVERSION 0 IOSQ 0.0 /SEC 631 IIT 0.0 EXP SNGL 0.0 SHARED 1.00
AVG ENC 0.00 STD DEV 0 HST 0.0 EXP BLK 0.0
REM ENC 0.00 APPL % 0.4 EXP SHR 0.0
MS ENC 0.00
TRANSACTIONS TRANS.-TIME HHH.MM.SS.TTT --DASD I/O-- --SERVICE-- SERVICE RATES- PAGE-IN RATES
----STORAGE----
AVG 1.00 ACTUAL 0 SSCHRT 12.3 IOC 1 ABSRPTN 8 SINGLE 0.0 AVG 5115.59
MPL 1.00 EXECUTION 0 RESP 1.1 CPU 85 TRX SERV 8 BLOCK 0.0 TOTAL 5115.59
ENDED 0 QUEUED 0 CONN 0.8 MSO 1181 TCB 0.0 SHARED 0.0 CENTRAL 5115.59
END/S 0.00 R/S AFFINITY 0 DISC 0.1 SRB 1085 SRB 0.1 HSP 0.0 EXPAND 0.00
#SWAPS 0 INELIGIBLE 0 Q+PEND 0.2 TOT 2352 RCT 0.0 HSP MISS 0.0
EXCTD 0 CONVERSION 0 IOSQ 0.0 /SEC 8 IIT 0.0 EXP SNGL 0.0 SHARED 0.00
AVG ENC 0.00 STD DEV 0 HST 0.0 EXP BLK 0.0
C 0 00 % 0 0 S 0 0
Figure 8-5 Sample Workload Activity report
The only generalized interface to System Logger performance information is the SMF Type
88 records produced by System Logger. One SMF Type 88 record is created each interval for
each log stream defined in the LOGR policy. IBM provides a sample program in
SYS1.SAMPLIB called IXGRPT1 to format the important fields in these records for you. The
first step in performing the analysis is to collect the Type 88 records into a data set using JCL
similar to that shown in Example 8-3.
It is important to understand that System Logger activities can span adjacent intervals. For
example, data may be written (SMF88LWB) in the first interval and deleted (SMF88SIB) or
offloaded in the second.
When the IXGRPT1 program is used to format the Type 88 records, the timestamp reflects
the end of the interval, not the beginning as in other SMF reports.
Attention: The timestamps in the reports are given in Greenwich Mean Time (GMT) not
local time.
Each SMF 88 record reports System Logger activity for one log stream or structure. SMF
record type 88 has the following subtypes:
Subtype 1 - Reports log stream usage. The records contain the information required for
log stream or structure diagnosis and performance analysis.
Subtype 11 - Records CF structure alter activity. Subtype 11 records are produced when
the System Logger changes the entry-to-element ratio for CF-Structure log streams.
Note the IXGRPT1 program used to format and report on the SMF Type 88 data does not
have the ability to summarize at an interval larger than the interval used for data collection
(the INTVAL value specified in the current SMFPRMxx).
SMF 88 subtype 11 records are also recorded if the size of the structure is altered using a
SETXCF ALTER command, for example:
SETXCF START,ALTER,STRNM=LOG_JG2_5M,SIZE=10240
An SMF 88 subtype 11 record is written at the completion of the SMF interval, and when the
application disconnects from the log stream.
SMF Type 88 records are mapped using the IXGSMF88 macro found in SYS1.MACLIB.
Figure 8-6 provides a sample IXGRPT1 output which includes DASD-only and CF-Structure
log streams, with the information for the first log stream annotated to show which part of the
SMF 88 record each field comes from.
Notice the timestamp—this is related to the SMF interval, but unlike most other reports based
on SMF data, the timestamp reflects the end of the interval not the start.
You notice the report layout takes some getting used to. Each “line” of the report is actually
two lines long. Similarly, the column headings are two lines long. For example, taking the
right-most column in the report, the heading says “AVERAGE BUFFER SIZE ------- RE- BLD”.
This means in the right-most column, the “first” line (the one which contains the log stream
name) contains the average buffer size for this log stream, and the “second” line contains the
number of times the structure was rebuilt. Although this is a bit confusing at first, you will soon
get used to it.
2
“Hot air” is the difference between the increments of space in the interim storage (for example, 4096 byte CIs in the
staging data sets) and the amount of data passed on the IXGWRITE request. For example, if 1096 bytes of data
were passed on IXGWRITE for a DASD-only log stream, the “hot air”, or empty space, would be 3000 bytes.
The DFSORT job we used to solve these concerns, breaks the information contained in the
IXGRPT1 report across three separate reports. Each report lists the information in log stream
name, rather than time, sequence. This makes it easier to review the activity for a given log
stream across the entire day.
Figure 8-8 Sample log stream attribute report from step SHOWDEF1
The next report, also produced by step SHOWDEF1, contains information about the log
stream from an events perspective.
A sample of this report is shown in Figure 8-9 on page 300. While this report may appear
very boring (nearly all the fields are zero), in this case, boring is good! A value of zero in
most of these fields is an indicator of no problems (for example, no occurrences of DASD
shifts (EDS), no occurrences of the staging data set hitting its threshold (ETT), and so on).
DATE TIME EDS/# ERI/# ERC/# ESF/# ETT/# ETF/# E0/# EFS/# ED0/#
---------- ----- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
2003/06/30 00:00 0 0 0 0 0 0 0 0 0
2003/06/30 00:17 0 0 0 0 0 0 1 0 0
2003/06/30 01:30 0 0 0 0 0 0 0 0 0
2003/06/30 02:00 0 0 0 0 0 0 0 0 0
2003/06/30 02:30 0 0 0 0 0 0 0 0 0
2003/06/30 03:00 0 0 0 0 0 0 0 0 0
2003/06/30 03:30 0 0 0 0 0 0 0 0 0
2003/06/30 04:00 0 0 0 0 0 0 0 0 0
2003/06/30 04:30 0 0 0 0 0 0 0 0 0
2003/06/30 05:00 0 0 0 0 0 0 0 0 0
2003/06/30 05:30 0 0 0 0 0 0 0 0 0
2003/06/30 06:00 0 0 0 0 0 0 0 0 0
2003/06/30 06:30 0 0 0 0 0 0 0 0 0
2003/06/30 07:00 0 0 0 0 0 0 0 0 0
2003/06/30 07:30 0 0 0 0 0 0 0 0 0
2003/06/30 08:00 0 0 0 0 0 0 0 0 0
2003/06/30 08:30 0 0 0 0 0 0 0 0 0
2003/06/30 09:00 0 0 0 0 0 0 0 0 0
2003/06/30 09:30 0 0 0 0 0 0 0 0 0
2003/06/30 10:00 0 0 0 0 0 0 0 0 0
2003/06/30 10:30 0 0 0 0 0 0 0 0 0
2003/06/30 11:00 0 0 0 0 0 0 0 0 0
2003/06/30 11:30 0 0 0 0 0 0 0 0 0
2003/06/30 12:00 0 0 0 0 0 0 0 0 0
2003/06/30 12:30 0 0 0 0 0 0 0 0 0
2003/06/30 13:00 0 0 0 0 0 0 1 0 0
2003/06/30 13:30 0 0 0 0 0 0 0 0 0
2003/06/30 14:00 0 0 0 0 0 0 0 0 0
2003/06/30 14:30 0 0 0 0 0 0 0 0 0
2003/06/30 15:00 0 0 0 0 0 0 0 0 0
2003/06/30 15:30 0 0 0 0 0 0 0 0 0
2003/06/30 16:00 0 0 0 0 0 0 0 0 0
DATE TIME SWB/KB SIB/KB SAB/KB SSI/# SAI/# SC1/# SC2/# SC3/#
---------- ----- -------- -------- -------- ----------- ----------- ----------- ----------- -----------
2003/06/30 00:00 0 0 0 0 0 0 0 0
2003/06/30 00:17 11 74 0 25 0 3 0 0
2003/06/30 01:30 1 0 0 0 0 4 0 0
2003/06/30 02:00 0 0 0 0 0 0 0 0
2003/06/30 02:30 0 0 0 0 0 1 0 0
2003/06/30 03:00 0 0 0 0 0 0 0 0
2003/06/30 03:30 0 0 0 0 0 0 0 0
2003/06/30 04:00 0 0 0 0 0 0 0 0
2003/06/30 04:30 0 0 0 0 0 0 0 0
2003/06/30 05:00 0 0 0 0 0 0 0 0
2003/06/30 05:30 4 0 0 0 0 2 0 0
2003/06/30 06:00 0 0 0 0 0 0 0 0
2003/06/30 06:30 0 0 0 0 0 0 0 0
2003/06/30 07:00 0 0 0 0 0 0 0 0
2003/06/30 07:30 23 0 0 0 0 6 0 0
2003/06/30 08:00 62 0 0 0 0 16 0 0
2003/06/30 08:30 77 0 0 0 0 20 0 0
2003/06/30 09:00 341 0 0 0 0 90 0 0
2003/06/30 09:30 365 0 0 0 0 98 0 0
2003/06/30 10:00 349 0 0 0 0 92 0 0
2003/06/30 10:30 233 0 0 0 0 62 0 0
2003/06/30 11:00 264 0 0 0 0 70 0 0
2003/06/30 11:30 280 0 0 0 0 74 0 0
2003/06/30 12:00 210 0 0 0 0 56 0 0
2003/06/30 12:30 93 0 0 0 0 24 0 0
2003/06/30 13:00 148 2029 0 550 0 38 2 0
2003/06/30 13:30 108 0 0 0 0 28 0 0
2003/06/30 14:00 140 0 0 0 0 38 0 0
2003/06/30 14:30 155 0 0 0 0 42 0 0
2003/06/30 15:00 217 0 0 0 0 56 0 0
2003/06/30 15:30 217 0 0 0 0 58 0 0
2003/06/30 16:00 140 0 0 0 0 38 0 0
Figure 8-10 Sample interim storage report from step SHOWDEF1
Date Time KB Deleted Interim ST W/DASD DASD SHIFT KB Written to Interim Storage KB Deleted interim ST w/o DASD KB Written by Users IXGWRITES STG THLD
---------- ----- ---------------------------- ----------- ----------------------------- ------------------------------ ----------------------------- -----------
2003/06/30 00:00 0 0 0 0 0 0
2003/06/30 00:17 0 0 11 74 10 0
2003/06/30 01:30 0 0 1 0 1 0
2003/06/30 02:00 0 0 0 0 0 0
2003/06/30 02:30 0 0 0 0 0 0
2003/06/30 03:00 0 0 0 0 0 0
2003/06/30 03:30 0 0 0 0 0 0
2003/06/30 04:00 0 0 0 0 0 0
2003/06/30 04:30 0 0 0 0 0 0
2003/06/30 05:00 0 0 0 0 0 0
2003/06/30 05:30 0 0 4 0 4 0
2003/06/30 06:00 0 0 0 0 0 0
2003/06/30 06:30 0 0 0 0 0 0
2003/06/30 07:00 0 0 0 0 0 0
2003/06/30 07:30 0 0 23 0 22 0
2003/06/30 08:00 0 0 62 0 60 0
2003/06/30 08:30 0 0 77 0 76 0
2003/06/30 09:00 0 0 341 0 335 0
2003/06/30 09:30 0 0 365 0 359 0
2003/06/30 10:00 0 0 349 0 343 0
2003/06/30 10:30 0 0 233 0 229 0
2003/06/30 11:00 0 0 264 0 259 0
2003/06/30 11:30 0 0 280 0 274 0
2003/06/30 12:00 0 0 210 0 206 0
2003/06/30 12:30 0 0 93 0 91 0
2003/06/30 13:00 0 0 148 2029 145 0
2003/06/30 13:30 0 0 108 0 106 0
2003/06/30 14:00 0 0 140 0 137 0
2003/06/30 14:30 0 0 155 0 152 0
2003/06/30 15:00 0 0 217 0 213 0
2003/06/30 15:30 0 0 217 0 213 0
2003/06/30 16:00 0 0 140 0 137 0
The resulting spreadsheet contains the following worksheets, providing various views of all
the data in the records, together with a set of exception reports. The exception reports are
based on the tuning guidance provided in this document. The complete set of sheets is as
follows:
Overview - Selected Interval
Overview - LogStream Counters
Overview - LogStream Counters
Overview - LogStream Counters
Overview - System Activity Summary
Overview - System Activity Details by Interval
Overview - System Activity Summary by Logstream
Overview - Logstream Activity Summary
Overview - Logstream Activity Details - Selected Logstream
Overview - Logstream Activity Details - All the Logstreams
Overview - Logstream Connectors - All the Logstreams by Interval
Generally speaking, the Exceptions sheets should all be empty. However, for funnel-type log
streams (such as OPERLOG or IMS Shared Message Queue), it would be normal to see
entries in the SMF88SIB and SMF88EDS sheets; for active log streams, these should also be
empty.
The spreadsheet tool, together with instructions on its use, is included in the Additional
Material for this book. For more information about this, see “Using the Web material” on
page 313.
If you dump the volume with the master catalog (or user catalog) on it and then dump the
volume with the System Logger policy on it, then the policy might indicate that certain data
sets should exist, but those data sets might not be reflected in the catalog.
If your goal is to preserve the System Logger environment without losing any data, then you
cannot rely on volume dumps to transport the data to the recovery site.
One option for providing time consistent data is IBM GDPS service offering, and there are two
variations of GDPS: GDPS/PPRC and GDPS/XRC. Using either of these products allows the
disk mirroring of staging data sets, the System Logger policy (couple data set), the MVS
catalogs, all System Logger exploiters’ data and all the System Logger data sets to consistent
state to the disaster recovery site. Only when the secondary site has the data in a consistent
state can the exploiters use their log streams in the recovery site.
At least one system in the recovery site is a member of the same parallel sysplex with the
systems in the primary site. The maximum distance between the two sites is 40 kilometers,
and this limiting factor is imposed by the Sysplex timer links.
With a synchronous mirroring technology secondary data consistency does not come
automatically: it needs to be managed. When GDPS/PPRC detects a freeze trigger (an
indication that the disk mirroring is inoperative), it issues the PPRC commands to freeze all
the disk mirroring to the secondary disk subsystems. As a result of the freeze, all the data on
disk is time consistent.
Unfortunately, including the System Logger Couple Data Set on volumes in the PPRC
configuration makes the recovery a little more complicated.
See Appendix A in GDPS/PPRC V2R8 Installation and Customization Guide, ZG24-6703, for
more details.
Since GDPS/XRC does not impose any distance limitations, it can provide coverage for more
regional type disasters such as earthquakes, blizzards, hurricanes and flooding.
Propagation delays resulting from long distances mean that in many cases synchronous data
mirroring would have too much of a performance impact. That’s the main reason for the
existence of extended Remote Copy (XRC), a software centric data mirroring solution which
operates asynchronously: updating of secondary devices is not time-coordinated with the
updating of the primary devices.
It is important to remember that since the copy technology is asynchronous, some data loss is
to be expected in a failover.
In this environment, you must again ensure that all production disk is included in the mirroring
configuration.
See GDPS/XRC V2R8 Installation and Customization Guide, ZG24-6704, for more details on
GDPS/XRC.
Here is the content of the LOGRPOLN member to show how the LOGR statement are built by
the LOGRPOL CLIST (Example A-2).
LOGRPOL CLIST
Example A-3 is the CLIST used in the JCL to format the IXCMIAPU output and rebuild the
input statement for a LOGR policy.
Select the Additional materials and open the directory that corresponds with the book form
number, SG246898.
The publications listed in this section are considered particularly suitable for a more detailed
discussion of the topics covered in this book.
IBM Redbooks
For information about ordering these publications, see “How to get IBM Redbooks” on
page 316. Note that some of the documents referenced here may be available in softcopy
only.
CICS and VSAM Record Level Sharing: Recovery Considerations, SG24-4768
Coupling Facility Structure Management and IMS, TIPS-0113
DFSMStvs Overview and Planning Guide, SG24-6971
IBM Tools: CICS Performance Analyzer V1.2, SG24-6882
IMS/ESA Shared Queues: A Planning Guide, SG24-5257
IMS/ESA Version 6 Guide, SG24-2228
IMS/ESA Version 6 Shared Queues, SG24-5088
Merging Systems into a Sysplex, SG24-6818
Other publications
These publications are also relevant as further information sources:
CICS Transaction Server for z/OS Installation Guide, GC34-5985
CICS Transaction Server for z/OS Release Guide, GC34-5983
CICS Transaction Server for z/OS System Definition Guide, GC34-5988
IMS Common Queue Server Guide and Reference, SC27-1292
z/OS MVS Assembler Services Guide, SA22-7605
z/OS MVS Authorized Assembler Services Reference ENF-IXG, SA22-7610
z/OS MVS Diagnosis: Tools and Service Aids, GA22-7589
z/OS MVS Diagnosis: Reference, GA22-7588
z/OS MVS Planning: APPC/MVS Management, SA22-7599
z/OS MVS Planning: Operations, SA22-7601
z/OS MVS Setting Up a Sysplex, SA22-7625
z/OS MVS Initialization and Tuning Reference, SA22-7592
z/OS DFSMS: Using Data Sets, SC26-7410
z/OS DFSMS: Implementing System-Managed Storage, SC26-7407
z/OS MVS Planning: Workload Management, SA22-7602
z/OS Sysplex Services Guide, SA22-7617
z/OS System Management Facilities (SMF), SA22-7630
Online resources
These Web sites are also relevant as further information sources:
The CFSizer should be used to obtain accurate sizes for CF structures
http://www.ibm.com/servers/eserver/zseries/cfsizer/
CICS Servers
http://www.ibm.com/software/ts/cics/txppacs/cs1e.html
Parallel Sysplex
http://www.ibm.com/servers/eserver/zseries/pso
Symbols C
CF
//SYSIN DD * DATA TYPE(CFRM) STRUCTU 223
volatile storage 198
CF structures
A APPC/MVS log stream failure 215
activity keypoint contraint in number 231
how this affect logger in TVS 91 defining in CFRM policy 30
activity keypoint frequency 91 defining in System Logger policy 32
AKPFREQ 187, 195, 203 deleting 58
Sample report 203, 205 impact of size on offload processing 63
ALLOWAUTOALT importance of CF volatility state 43, 68–69, 74
CICS log stream 156 peer recovery 71
Transactional VSAM log stream 94 rebuild processing 73
ALLOWAUTOALT CFRM parameter 31 specifying structure size 31
APPC/MVS storage usage 26
adding log stream after IPL 215 CFRM definitions 218
CF failure 215 CF-Structure versus DASD-only
CF versus DASD-only log stream 210 performance considerations 282
CFRM definitions 212 CICS
criticality of data 210–211 activity keypoint 149
enq problem 214 AKPFREQ 186
log stream description 210 Auto journal 150
log stream name definition 212 Auto Journal sizing 183
log stream sizing 211 CFCC level consideration 176
logger definitions 212 chaining of log records 146, 149
losing data 211 changing log stream names 147
performance considerations 215 CICS catalog and log streams 147
security definitions 214 deleting data from DFHLOG log stream 146
AUTODELETE 172 DFHLOG sizing 177
APPC/MVS log stream 210, 214 DFHLSCU utility 186
CICS log stream 159, 164 DFHSHUNT sizing 177
LOGREC log stream 219 forward recovery log 149
OPERLOG log stream 226 Forward Recovery sizing 184
RRS log stream 236 JOURNALMODEL
Transactional VSAM log stream 97, 101 identifying associated log streams 146
WebSphere for z/OS log stream 250 log of logs 150
AUTODELETE attribute log stream model 153
impact on when data is deleted from log stream 64 log stream sizing 175
AVGBUFSIZE non-system log stream sizing 180
APPC/MVS log stream 213 overriding default log stream model names 147
definition 33 overview of System Logger use 146
in relation to entry to element ratio 26 shutdown assist program 148
LOGREC log stream 218 syncpoint processing 146
OPERLOG log stream 224 system log
Transactional VSAM log stream 96 log streams 149
system log sizing formula 179
types of log streams used by CICS 149
B UOW definition 146
BBOERRLG 249 user journal log streams 146
BBORBLOG 251 user journals 150
BLOCKID shutdown type considerations 148
for log blocks 18 CICS Performance Analyzer 188, 193
use when deleting log blocks 21 CICS/VR 86–87, 150
commands to switch LOGR CDS 14
COUPLExx member 10, 14
Index 319
criticality of data 216 O
how to prevent a loss of data 221 offload data sets
log stream description 216 allocation 60
log stream naming convention 216 definition 9
log stream sizing 217 DSEXTENT requirement 13
logger definitions 218 impact of errors during data set deletion processing
migration considerations 217 66
parmlib definition 217 migration considerations 264
performance considerations 221 naming convention 9
security definitions 219 naming conventions 171
LOGSNUM 285 orphans 66, 257
APPC/MVS log stream 213 pending 258
OPERLOG log stream 224 recommended CI Size 49
specifying maximum number of log streams in a struc- SHAREOPTIONS requirement 11
ture 32 sizing 274
Transactional VSAM log stream 96 sizing considerations for deletion 66
LOGSTREAMID 86 SMS data class 36, 48
LOWOFFLOAD specifying data set sizes 38, 50
APPC/MVS log stream 213 specifying HLQ 39, 51
CICS log stream 160, 165 when are they deleted 65
LOGREC log stream 218 offload processing 58, 62, 275
OPERLOG log stream 225 controlling whether migrated data sets are recalled
RRS log stream 237 42, 54
setting the threshold 284 definition 9
Transactional VSAM log stream 102 deleting offload data sets 65
WebSphere for z/OS log stream 250 monitoring 261
LS_DATACLAS recommended threshold values 62
APPC/MVS log stream 213 specifying high offload threshold 40, 52
CICS log stream 161, 166 specifying low offload threshold 40, 52
OPERLOG log stream 225 OFFLOADRECALL
RRS log stream 237 CICS log stream 163, 167
Transactional VSAM log stream 98, 102 Transactional VSAM log stream 99, 103
LS_SIZE OPERLOG
APPC/MVS log stream 213 CFRM definitions 223
CICS log stream 160, 165 criticality of data 222
LOGREC log stream 219 disabling 226
OPERLOG log stream 225 enabling 226
RRS log stream 237 how to calculate AVGBUFSIZE 224
Transactional VSAM log stream 98, 102 log stream description 222
WebSphere for z/OS log stream 250 log stream sizing 222
LSR IXCL1DSU keyword 12 logger definition 223
LSTRR IXCL1DSU keyword 12 managing the log data 222
parmlib definition 223
M performance considerations 228
MAXBUFSIZE 285 relationship with SYSLOG 228
APPC/MVS log stream 213 SDSF considerations 227
CICS log stream 157, 167 security definitions 226
definition 32
in relation to entry to element ratio 26 P
LOGREC log stream 218 peer recovery 71
RRS log stream 234, 240 requirements 71
Transactional VSAM log stream 96 PPRC 306
WebSphere for z/OS log stream 249 PREFLIST
MINSIZE Transactional VSAM log stream 94
CICS log stream 156 problem determination
model log streams gathering required documentation 42, 54, 77
use by CICS 146–147 use of DIAG(YES) 42, 79
MVSADMIN.LOGR SAF FACILITY class 16
MVSADMIN.XCF.CFRM SAF FACILITY class 16
Index 321
sizing for CF log streams 63 serialization 25
sizing for DASD-only log streams 64 services 16
SMS data class 47 System Logger policy
specifying data set sizes 36, 48 AUTODELETE keyword 38, 50
specifying HLQ 39, 51 DASDONLY keyword 46
use if CF structure fails 73 DESCRIPTION keyword 33, 46
when they are allocated 18 DIAG keyword 42, 54
starting the System Logger subsystem 69 DUPLEXMODE keyword 34
STG_DATACLAS EHLQ keyword 39, 51
APPC/MVS log stream 213 HIGHOFFLOAD keyword 40, 52
RRS log stream 238 HLQ keyword 39, 51
Transactional VSAM log stream 99, 103 LIKE keyword 41, 53
STG_DUPLEX LOGGERDUPLEX keyword 34
APPC/MVS log stream 213 LOWOFFLOAD keyword 40, 52
CICS log stream 162, 167 LS_DATACLAS keyword 36, 48
OPERLOG log stream 225 LS_MGMTCLAS keyword 37, 49
RRS log stream 237, 240 LS_SIZE keyword 37, 49
Transactional VSAM log stream 99 LS_STORCLAS keyword 37, 49
STG_DUPLEX attribute MAXBUFSIZE keyword 47
role during volatility changes 74 MODEL keyword 40, 52
single point of failure considerations 67, 69 NAME keyword 33, 46
when it can be ignored 73 OFFLOADRECALL keyword 42, 54
STG_DUPLEX keyword 34 OFFLOADRECALL keywork 264
STG_SIZE RETPD keyword 38, 50
APPC/MVS log stream 213 RMNAME keyword 33, 46
CICS log stream 162, 166 STG_DATACLAS keyword 35, 47
RRS log stream 237 STG_DUPLEX keyword 34
Transactional VSAM log stream 100, 103 STG_MGMTCLAS keyword 35, 47
stopping the System Logger subsystem 69 STG_SIZE keyword 36, 48
STRUCTNAME STG_STORCLAS keyword 35, 48
Transactional VSAM log stream 100 STRUCTNAME keyword 34
structures updating attributes dynamically 55
deleting from System Logger policy 58 System-Managed Duplexing
how storage is allocated to log streams 25 considerations for System Logger duplexing 68
System Automation for OS/390 impact of CF volatility changes 74
CF versus DASD-only 243 recovery from connectivity failure 73
CFRM definitions 243 recovery from structure or CF failure 73
criticality of data 243 use with System Logger structures 34, 43
data gap in log stream 245
log stream description 242
log stream naming conventions 243 T
log stream sizing 243 terminology explained 8
logger definitions 244 Transactional VSAM
performance considerations 246 CF versus DASD-only log stream 92
security considerations 245 coupling facility failure 109
start up problem 245 criticality of data 87
System Logger dependency on system logger 105
cold starting System Logger 15 description 84
enhancements in z/OS 1.3 and later 13 duplexing considerations 88
failure independence concepts 67 Forward recovery log stream 86
installation and setup tasks 10 LOG(ALL) 86
inventory 11 LOG(NONE) 86
listing the inventory 79 LOG(UNDO) 86
MVS DISPLAY commands 44 sizing cnsiderations 88
policy 11, 15 Forward recovery log stream definition 91
contents 15 Forward recovery log stream sizing method 89
differences from other CDSs 15 IGDSMS definition 90
requirement for SMS subsystem 11 IGWLOG.SYSLOG 85, 92
restart processing 69 IGWLOG.SYSLOG CFRM definitions 93
sequence of log blocks in log stream 19 IGWSHUNT.SHUNT 92
IGWSHUNT.SHUNTLOG 85
U
Unit of Recovery (UR) 84
W
WebSphere for z/OS
CFRM definitions 249
criticality of data 246
DASD_only log stream 250
error connecting to the log stream 252
log stream definition 247
log stream description 246
log stream sizing 246
logger definition 247
logger definitions 249
security definitions 251
WebSphere for z/OS log stream
browsing the log stream 251
performance considerations 252
X
XLGSTRM exit 147
XRC 307
Index 323
324 System Programmer’s Guide to: z/OS System Logger
System Programmer’s Guide to: z/OS System Logger
Back cover ®