DB2 Server for VSE & VM: Performance Tuning Handbook


Operating System Measurements

There are a wide variety of tools available to measure the performance of your operating system, some of which are included in VSE Tools, and VM Tools. When you look for performance measurements in those tools, focus on three questions. How well is the system performing as a whole? How well is your database machine or partition performing? How is the database machine or partition affecting the performance of other processes that are running at the same time? With that in mind, consider the following generic measurements:

Processor (CPU) Load

Measure the overall percent utilization of your processor (CPU), refer to Processor. You also need to measure the percentage of the total CPU time devoted to the database machine or partition, refer to Concurrency.

Real and Virtual Storage Load

Measure the number of virtual pages in your database machine or partition that have been allocated real storage. Break the real pages into main, and auxiliary pages (and in the case of VM, expanded storage pages). Refer to Real and Virtual Storage. Also compare the number of virtual pages that have been allocated above the 16MB line to those below, refer to Storage Above 16MB (31 Bit Addressing).

System Paging DASD Load

Measure the rate of DASD I/O to and from auxiliary storage, refer to Auxiliary Storage. Pay special attention to I/O to and from system paging DASD. This is the slowest type of auxiliary storage and the largest drain on performance. Also, compare the overall system paging DASD load to that required by the database machine or partition.

Machine or Partition DASD I/O Load

Measure the rate of DASD I/O initiated by the database machine or the partition itself, refer to Database I/O. The database manager directs the operating system to write and read pages to and from its data, directory, log, and archive disks or datasets. These I/Os are independent of system paging DASD and are always measured separately.

Individual Device Utilization

This includes individual DASD volumes, channels, and controllers. Measure the percentage of time that these individual devices are busy. This is more effective than using a load measurement because it takes into account the capability of the device itself. Refer to DASD Balancing.

Translating Performance Measurements to Indicators

The following is a description of the CP INDICATE USER and QUERY TIME commands included with the VM operating systems. It serves as an example of how to extract performance counters and simple measurements and translate them into useful indicators.

CP INDICATE USER and QUERY TIME Commands

These two commands enables you to monitor the overall performance of your database machine. The most important indicators they provide are:

RES=nnnn
Counts the number of virtual machine pages that are currently in main storage. Convert the number of pages into bytes by multiplying the value by 4096 (bytes per page).

READS=nnnnnn
Counts the total number of pages moved from system paging DASD to main storage for a virtual machine since it was logged on. (Refer to Auxiliary Storage.)

WRITES=nnnnnn
Counts the total number of pages moved from main storage to system paging DASD for a virtual machine since it was logged on. (Refer to Auxiliary Storage.)

CONNECT=hh:mm:ss
Records the total elapsed time the virtual machine was logged on the system.

VIRTCPU=mmm:ss
Records the total virtual machine processor time used since the virtual machine was logged on.

TOTCPU=mmm:ss
Records the total virtual machine processor time plus the total CP processor time used (virtual plus overhead) since the virtual machine was logged on.

IO=nnnnnn
Records the total number of I/O requests issued by the machine since it was logged on. This includes all I/Os started by the DASD I/O system, refer to Database I/O.
Note:Several IUCV *BLOCKIO requests may be blocked together to form a single IO request. This count includes all the IO requests, it does not count each page or block moved.

The IO value will not equal the DASDIO counter.

These commands are only really useful when you use them together. To issue QUERY TIME and INDICATE USER together, type the following from the operator console:

     #CP QUERY TIME #CP INDICATE USER

Note:The # symbol is the default escape character. It may be different depending on how your system has been customized.

You also need to compare two consecutive commands. For example, consider the following two QUERY TIME and INDICATE USER commands:

+--------------------------------------------------------------------------------+
|#cp query time #cp indicate user                                                |
|CP QUERY TIME                                                                   |
|CP INDICATE USER                                                                |
|TIME IS 15:07:20 EST TUESDAY 02/14/99                                           |
|CONNECT= 01:21:45 VIRTCPU= 000:06.28 TOTCPU= 000:09.86                          |
|USERID=SQLDBA   MACH=XC  STOR=0009M VIRT=V XSTORE=NONE                          |
|IPLSYS=CMS      DEVNUM=00031                                                    |
|PAGES: RES=001497 WS=001260 LOCK=000000 RESVD=000000                            |
|NPREF=000000 PREF=000000 READS=000130 WRITES=000018                             |
|CPU 00: CTIME=01:22 VTIME=000:06 TTIME=000:10 IO=007553                         |
|        RDR=000000 PRT=000738 PCH=000000                                        |
|        VVECTIME=000:00 TVECTIME=000:00                                         |
|                                                                                |
|#cp query time #cp indicate user                                                |
|CP QUERY TIME                                                                   |
|CP INDICATE USER                                                                |
|TIME IS 15:08:31 EST TUESDAY 02/14/99                                           |
|CONNECT= 01:22:56 VIRTCPU= 000:07.50 TOTCPU= 000:11.82                          |
|USERID=SQLDBA   MACH=XC  STOR=0009M VIRT=V XSTORE=NONE                          |
|IPLSYS=CMS      DEVNUM=00031                                                    |
|PAGES: RES=001499 WS=001472 LOCK=000000 RESVD=000000                            |
|NPREF=000000 PREF=000000 READS=000135 WRITES=000022                             |
|CPU 00: CTIME=01:23 VTIME=000:08 TTIME=000:12 IO=009049                         |
|        RDR=000000 PRT=000974 PCH=000000                                        |
|        VVECTIME=000:00 TVECTIME=000:00                                         |
+--------------------------------------------------------------------------------+

The output shows that, during 71 seconds (CONNECT advanced from 01:21:45 to 01:22:56) the following occurred:

RES
The number of virtual pages in main storage increased by two (1499-1497).

READS
Five reads from system paging DASD (135-130)

WRITES
Four writes to system paging DASD (22-18)

VIRTCPU
1.22 seconds of virtual machine time were used (07.50-06.28)

TOTCPU
1.96 seconds of total CPU time were used (11.82-09.86)

IO
1496 I/O requests were issued (9049-7553)

There are four important values that you can calculate from these numbers:

Sampling Interval
&Delta. CONNECT. The change in elapsed time between CP QUERY TIME commands.

Main Storage Load
(RES+ (&Delta. RES/2) )(4096)/(Total bytes of main storage). Indicates the average load on main storage.

System Paging DASD Load
(&Delta. READS+&Delta. WRITES)/sampling interval. Indicates the average load on system paging DASD.

Total Processor (CPU) Load
(&Delta. TOTCPU/sampling interval)x100. Indicates the average percent of total CPU time your virtual machine is using. While this looks like an effective use measurement, it is really a measure of the load your database machine is placing on the CPU.

DASD I/O Load
&Delta. IO/sampling interval. Indicates the average load on the I/O system (tape and console I/O is also included, but not Paging or Spooling I/O).

For example, from the previous example:

For more information, refer to the VM/ESA: CP Command and Utility Reference manual.

CICS Monitoring (CICSPARS for VSE)

This facility collects performance data during on-line processing for later off-line analysis. Monitoring data is recorded in the CICS journal data sets. This data can be formatted using the CICS Performance Analysis Reporting System (CICSPARS) field-developed program. The CICSPARS program is used with the VSE system for generalized performance analysis reporting (DOS/GPAR) to print analysis reports and summary reports of DB2 Server for VSE data as user clocks and counters.

CICSPARS collects performance class data for two general areas, link usage and call usage:

The CICS monitoring facility automatically associates all performance class data with the CICS transaction running at the time. This allows data reduction programs that process this information to construct a performance profile for any given transaction or call summarized by transaction type. With reference to the DB2 Server for VSE timings listed previously, the transaction profile shown in Figure 1 can be created.

Figure 1. CICS Transaction Time Usage

ARIT1TTU

In Figure 1, blocks (A) and (B) represent intervals during the lifetime of the transaction when other services within the CICS environment are being used. Because most of these other services are also represented in the performance class data, the use of these services can also be broken down, if required, in a manner similar to the breakdown shown for the database manager. Consequently, the database manager is integrated into a composite picture of each transaction's performance. This allows any transaction (or set of transactions) experiencing unacceptable response times to be investigated in a simple, systematic manner.

Before the CICS monitoring facility can be run, CICS must be set up to process the clocks and counters to be used and the journals used to record the data. For information on the entries required in various CICS tables, see the DB2 Server for VSE Program Directory.

After the CICS tables have been updated, the CICS monitoring facility can be started by using either the CICS CSTT transaction or the MONITOR=PER keyword of the CICS DFHSIT macro. These methods are also shown in the DB2 Server for VSE Program Directory.

Table 1 shows how to relate the DB2 Server for VSE clocks to the DFHMCT entries. The specification of the keyword ID maps to the clock definition. The specifications of the ID keyword must use the numeric values shown in Table 1.

Table 1. Relationship of CICS DFHMCT ID Keywords to Clocks
ID Keyword for CICS/VSE DFHMCT Entry Defines the Clock that Measures

ID=(PP,16)
ID=(PP,17)


Time waiting for a link
 


ID=(PP,18)
ID=(PP,19)


Time holding a link
 


ID=(PP,20)
ID=(PP,21)


Time for DB2 Server for VSE processing
 


The CICS DFHMCT entries also define the four DB2 Server for VSE counters. The argument for the ID keyword for these counters must be ID=(PP,22). The order of the four counters is:


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]