In Part 1 of the series on Db2 performance traces we provided a general overview, as well as a discussion of the Accounting and Audit trace classes. Today, in Part 2, we will discuss the remaining 4 trace classes: Global, Monitor, Performance, and Statistics.
Global Trace
The global trace is one I hope you never have to use. It produces information that is
used to service Db2, so you'd only start a global trace at the direction of IBM if you are having some sort of trouble. A global trace records information regarding entries and
exits from internal Db2 modules as well as other information about Db2 internals.
Global trace records are not accessible through normal tools that monitor Db2 performance.
Most sites will never need to use the DB2 global trace. You should avoid it
unless an IBM representative requests that your shop initiate it.
A global trace can add significant CPU overhead to your Db2 subsystem.
Monitor Trace
Quite a bit of useful
performance monitoring information is recorded by the Db2 monitor trace. Most
of the information in a monitor trace is also provided by other types of Db2
traces. The primary reason for the existence of the monitor trace type is to
enable you to write application programs that provide online monitoring of Db2
performance.
Information provided by the
monitor trace includes Db2 statistics and accounting trace information, as well as details of current SQL statements.
There are ten groups of DB2
monitor trace classes:
- Class 1: Standard accounting data
- Class 2: Entry or exit from DB2 events
- Class 3: DB2 wait for I/O or locks
- Class 4: Installation-defined monitor trace record
- Class 5: Time spent processing IFI requests
- Class 6: Changes to tables created with DATA
CAPTURE CHANGES
- Class 7: Entry or exit from event signaling package accounting
- Class 8: Wait time for a package
- Class 9: Statement level accounting
- Class 10: Package detail
- Class 11 through 28: Reserved
- Class 29: Dynamic statement detail
- Class 30 through 32: Local use
The overhead that results from
the monitor trace depends on how it is used at your site. If it is used as recommended,
class 1 is always active with 2 and 3 started and stopped as required, the overhead will likely be minimal but will depend on the activity of the Db2 system and the number of times that
the other classes are started and stopped. If you make use of the reserved classes (30 through 32), or additional classes (as some
vendors do), your site will incur additional overhead.
Do not start the monitor trace using DSNZPARMs
unless online performance monitors in your shop explicitly require you to do
so. It is best to start only monitor trace class 1 and to use a performance
monitor that starts and stops the other monitor trace classes as required.
Some online performance monitoring tools do not use the monitor
trace; instead, they read the information directly from the Db2 control blocks.
Sampling Db2 control blocks requires less overhead than a monitor trace but it can be disruptive if the tools encounters bugs.
Performance
Trace
The Db2 performance trace
records an abundance of information about all types of Db2 events. You should
use it only after you have exhausted all other avenues of monitoring and tuning
because it consumes a great deal of system resources. When a difficult problem
persists, the performance trace can provide valuable information, including SQL statement text, a complete trace of the execution of SQL statements, including details
of all events, all index accesses and all data access due to referential constraints.
There
are 22 groups of Db2 performance trace classes:
- Class 1: Background events
- Class 2: Subsystem events
- Class 3: SQL events
- Class 4: Reads to and writes from buffer pools and the EDM pool
- Class 5: Writes to log or archive log
- Class 6: Summary lock information
- Class 7: Detailed lock information
- Class 8: Data scanning detail
- Class 9: Sort detail
- Class 10: Detail on BIND, commands, and utilities
- Class 11: Execution unit switch and latch contentions
- Class 12: Storage manager
- Class 13: Edit and validation exits
- Class 14: Entry from, and exit to an application
- Class 15: Installation-defined performance trace record
- Class 16: Distributed processing
- Class 17: Claim and drain information
- Class 18: Event-based console messages
- Class 19: Data set open and close activity
- Class 20: Data sharing coherency summary
- Class 21: Data sharing coherency detail
- Class 22: Authorization exit parameters
- Class 23 through 29: Reserved
- Class 30 through 32: Local use
When all Db2 performance trace
classes are active, you will experience significant overhead, perhaps as much as 100% CPU overhead by each
program being traced. The actual overhead might be greater (or lesser)
depending on actual system activity. The overhead when using only classes 1, 2, and 3, however, typically ranges between 5% and 30%.
Performance traces must be explicitly started with the -START TRACE command. Starting the
performance trace only for the plan (or plans) you want to monitor by using the
PLAN parameter of
the -START TRACE command is wise. Here’s an
example:
-START TRACE(PERFM) CLASS(1,2,3) PLAN(PLANNAME)
DEST(GTF)
Failure to start the trace at
the plan level can result in the trace being started for all plans, which
causes undue overhead on all DB2 plans that execute while the trace is active.
Furthermore, due to the large number of trace
records cut by the Db2 performance trace, system-wide (Db2 and non-Db2)
performance might suffer because of possible SMF or GTF contention.
Statistics
Trace
The final type of Db2 trace is the statistics trace, which contains information pertaining to the
entire Db2 subsystem. This type of information
is particularly useful for measuring the activity and response of Db2 as a
whole. Information on the utilization and status of the buffer pools, DB2
locking, DB2 logging, and DB2 storage is accumulated by the statistics trace.
There are ten groups of DB2
statistics trace classes:
- Class 1: Statistics data
- Class 2: Installation-defined statistics record
- Class 3: Data on deadlocks, lock escalation, group buffers, data set
extension, long-running units of recovery, and active log shortage
- Class 4: Exceptional conditions
- Class 5: Data sharing statistics
- Class 6: Storage usage
- Class 7: DRDA location statistics
- Class 8: Data set I/O
- Class 9 through 29: Reserved
- Class 30 through 32: Local use
The estimated overhead of the statistics trace is low. Approximately 1% to 2% CPU
overhead per transaction is incurred by the Statistics trace.
Db2 cuts a statistics trace record periodically
based on the setting of the STATIME subsystem parameter (DSNZPARM). STATIME is specified as a time interval, in minutes, and can range from 1
to 60 minutes. It is a good practice to set STATIME to 1, thereby specifying 1,440 statistics intervals per day. The information accumulated by
cutting these statistics trace records can provide valuable details for solving
complex system problem.
By analyzing the evolutional trend of statistics,
sometimes the cause of problems can become evident that would otherwise be difficult
to track down.
Even though 1,440 records
sound large, in reality the amount of data collected is small when compared to
the typical volume of accounting trace data collected. An additional thousand
or so SMF records should not cause any problems, while at the same time
offering valuable system information.
Next time...
This concludes the overview of the types of Db2 tracing that are available. In part 3, we will examine where trace records can be written as well as more narrow tracing using IFCIDs.