Introduction

VSE/ESA Version 1 introduced Enterprise Systems Architecture (ESA) to VSE users. ESA functionality provided dramatic improvements in throughput and capacity as well as performance. The evolution of ESA support continues in VSE/ESA Version 2.

New functionality included in VSE/ESA Version 2 includes ...

With word of these improvements, users rush to order VSE/ESA 2.1 expecting the system to perform better than ever before. Yet, after installation we find slower on-line response time and longer batch run times. Then suddenly we remember, increased functionality probably involves increased overhead.

Increased Overhead

How much increased overhead? In an effort to determine the level of increased overhead in VSE/ESA Version 2.1, I wrote a benchmark program that issued selected SVCs 4000 times. The STCK (STore ClocK) instruction was used to calculate the duration of the SVC request.

The following table shows the execution times of the selected SVCs in micro-seconds. The first percentage shown is the increase from the previous version of VSE/ESA. The second percentage is the increase from VSE/ESA 1.3.


                                               GETFLD          GETFLD         
VSE/ESA        Start I/O       COMREG          MAINTASK        ALET           
Version        SVC 0           SVC 33          SVC 107         SVC 107        

1.3            1217             46             14              109            

2.1 Std        1335  9%         72 71%         37 164%         145 33%        

2.1 TD 1 CPU   1420  6% 16%    143 98% 210%    65  75% 364%    234 61% 114%   

2.1 TD 2 CPU   1566 10% 28%    167 16% 263%    84  29% 500%    281 20% 157%   



Table 1: CPU Timings

What is Causing Overhead?

Changes to the supervisor entry and exit linkage for processing interupts and SVC requests account for a large portion of the CPU overhead increases.

The following table shows the basic supervisor entry processing for an interrupt or SVC request.


        VSE/ESA 1.3                 VSE/ESA 2.1          

Debug                       Dispatcher Interface         

VSE/PT                      Debug                        

VSE Processing ...          Vender Interface             

                            VSE/PT                       

                            VSE Processing ...           



Table 2: Interrupt Processing Sequence

Tuning VSE/ESA 2.1 (or How to Minimize the Overhead)

Tuning POWER

Tuning CICS

Tuning VTAM 4.2

Tuning the Turbo Dispatcher

The amount of time your system spends running non-parallel work units is critical to effective use of multiple CPUs. Typical examples of non-parallel work units are most system services and key 0 programs (such as VSE supervisor services, POWER and VTAM). While VSE may be able to support up to 10 CPUs, only one CPU can process non-parallel work units at a time. Vendor products tend to make extensive use of Key 0 programming increasing the amount of non-parallel work units that must be run.

Another problem with non-parallel work is the difference between a task that is 83 bound waiting-to-run parallel and a task that is 83 bound waiting-to-run non-parallel. The task 83 bound waiting-to-run non-parallel is experiencing what I call non-parallel work elongation. Because only one CPU may run non-parallel work at a time, when two (or more) tasks require non-parallel work at the same time, one (or more) tasks must wait. The effective duration of the waiting task's non-parallel work is really the wait time plus the CPU time required to complete the work. This problem can severely limit effective use of multiple CPUs.

The best way to decrease the number of non-parallel work units is to reduce the number of I/O operations and supervisor service requests (SVCs). Sounds easy, right?

The I/O Bottleneck

With the changes to VSE/ESA 2.1's SVC and interupt processing routines, I/O becomes a bigger bottleneck than ever before. Less CPU is used to cache an I/O request than to actually perform the I/O operation. In addition, caching the I/O request requires only one non-parallel work unit. Actually performing the I/O operation requires at least three (and maybe more) non-parallel work units. Caching usually reduces the number of I/O operations by 35-65%, so the non-parallel work unit and CPU savings add up.

MDCACHE is built-in to VM/ESA 1.2.2 (and higher) and provides good basic track caching features. MDCACHE stores data in VM/ESA's Dynamic Storage Area (DSA) and attempts to balance its use of storage at the expense of system paging. For CMS guest machines, this is an effective method of caching. However, for VSE guest machines, use of MDCACHE does not eliminate the I/O operation. While MDCACHE may reduce a job's run time, CPU time may actually increase. OPTI-CACHE eliminates the I/O operation reducing CPU usage and VM interaction overhead. OPTI-CACHE also understands VSE access methods allowing multi-track read-ahead to improve performance even more.

While MDCACHE is the only effective way to cache VSAM Share Options(4 4) datasets (that is, datasets being updated on multiple VSE systems at the same time) MDCACHE is not available to VSE systems running native or to VM/ESA VSE guest systems using dedicated DASD. Dedicated DASD is very common to VSE systems running as V=R high performance preferred guests. Also, remember MDCACHE will not cache FBA devices that do not start and end with a block number divisible by 8 (page aligned).

The following Tables show the results of a series LIBR TEST commands issued to a 20 cylinder 3380 library. The tests were run on a PC Server 500 System/390 under various versions of VSE/ESA in a V=V VM/ESA 1.2.2 virtual machine. The LIBR TEST commands issued 12810 I/O requests. When OPTI-CACHE or MDCACHE was used no actual I/O was performed, all data was retrieved from cache.

The Tables show the duration and the amount of CPU time as reported by VSE's job accounting and VM's Q TIME output used by the commands. The percentages shown are the calculated increase or decrease in duration and CPU time.


                   No Caching         OPTI-CACHE          MDCACHE            

Duration           135.9 Secs         16.4  (-88%)        25.3  (-81%)       



JA CPU             10.19              13.22                9.65              

Overhead            2.09               0.05                2.05              

Total              12.28              13.27 (+8%)         11.70 (-4%)        



VM CPU             14.69              14.23               13.73              

CP CPU             17.42               0.22               10.27              

Total              32.11              14.45 (-55%)        24.00 (-25%)       



Table 3: Results under VSE/ESA 1.3


                   No Caching         OPTI-CACHE          MDCACHE            

Duration           142.5 Secs         16.3  (-88%)        27.3  (-80%)       



JA CPU             12.62              14.16               11.78              

Overhead            2.97               0.12                2.73              

Total              15.59              14.28 (-8%)         14.51 (-6%)        



VM CPU             18.06              14.73               16.05              

CP CPU             17.49               0.24               10.29              

Total              35.55              14.97 (-57%)        26.34 (-25%)       



Table 4: Results under VSE/ESA 2.1 Standard Dispatcher


                   No Caching         OPTI-CACHE          MDCACHE            

Duration           148.2 Secs         22.8  (-84%)        35.9  (-77%)       



JA CPU             13.76              14.67               13.32              

Overhead            6.34               2.27                4.97              

Total              20.10              17.07 (-15%)        18.29 (-9%)        



VM CPU             23.41              17.46               19.93              

CP CPU             17.37               0.27               10.24              

Total              40.78              17.73 (-56%)        30.07 (-26%)       



Table 5: Results under VSE/ESA 2.1 Turbo w/1 CPU


                   No Caching         OPTI-CACHE          MDCACHE            

Duration           159.7 Secs         24.0  (-84%)        47.2  (-70%)       



JA CPU             14.58              15.27               14.70              

Overhead            7.93               3.07                4.17              

Total              22.51              18.34 (-18%)        18.87 (-16%)       



VM CPU             27.78              18.94               22.43              

CP CPU             17.96               0.34               14.20              

Total              45.74              19.28 (-57%)        36.63 (-19%)       



Table 6: Results under VSE/ESA 2.1 Turbo w/2 CPUs

Some obvious conclusions are:

Converting to VSE/ESA 2.1

Table 7 shows the increase in CPU time used by the LIBR TEST commands as reported by VSE's job accounting and VM's Q TIME output when converting from one version of VSE/ESA to another. Comparison of these times yields some interesting results.


Converting                                        VSE CPU       VM CPU       
From                 To                           Change        Change       

VSE/ESA 1.3          VSE/ESA 2.1 STD              +27%          +10%         

VSE/ESA 1.3          VSE/ESA 2.1 TD (1 CPU)       +63%          +27%         

VSE/ESA 1.3          VSE/ESA 2.1 TD (2 CPU)       +84%          +42%         

VSE/ESA 2.1 STD      VSE/ESA 2.1 TD (1 CPU)       +28%          +14%         

VSE/ESA 2.1 STD      VSE/ESA 2.1 TD (2 CPU)       +44%          +28%         

VSE/ESA 2.1 TD       VSE/ESA 2.1 TD (2 CPU)       +12%          +12%         



Table 7: CPU Increase Calculations

Results generated by using LIBR TEST commands probably represent a worst case scenario for calcuating increased overhead when converting from VSE/ESA 1.3 to VSE/ESA 2.1.

CPU time of the LIBR TEST commands showed overhead increasing by 27-84% (as reported by VSE's job accounting). Running a more typical mix of CPU bound and I/O intensive jobs, expect an average increase of 10-25%.

Moral of the Story

VSE/ESA Version 2.1 continues the evolution of VSE into the world of Enterprise Systems Architecture (ESA). The new N-Way Turbo dispatcher combines with new Client/Server features to position VSE/ESA as a super server in our new network centric world.

Yet, as with all new functionality, there is a cost involved. These costs can, however, be controlled and with proper tuning and use of new Data-In-Memory (DIM) technologies (caching) VSE/ESA 2.1 can provide greater capacity and performance than ever before.

(c) Copyright 1996 by Barnard Software, Inc.

All names, products, and services mentioned are the trademarks of their respective organizations.

Back to the BSI Home Page