GiAPA OBJECTIVES

 

“Analyzing application performance, identifying reasons for inefficiencies, and determining what to do to improve run time and decrease CPU usage and/or disk accesses is a complex task requiring specialized education over and above what the average programmer normally has received …”

 

We wanted to create a software product that rendered the above, frequently heard statement untrue.

 

With GiAPA’s automatic data collection and analysis it is easy for the average operator, programmer, or systems analyst to locate and diagnose the vast majority of performance inefficiencies.

 

GiAPA was designed to tell you

1.        Which of your applications have performance problems

2.        What the problems are

3.        Where, i.e. which thread(s), program(s), and statement(s)

4.        How the application can be improved to run efficiently

 

GiAPA was not designed to tell you what additional hardware to purchase in order to cope with (= hide?) performance problems.

 

 

  Back to Top 

 

 

OTHER BENEFITS


With no (more) performance problems, what are the benefits of (still) using GiAPA?

To analyze performance of all jobs and tasks running on the server, GiAPA obviously collects a lot of data - but is never the less only using less than 0.1 % of one CPU, so GiAPA data collection runs normally 24 / 7 !

Therefore, having optimized inefficiently running applications, GiAPA users detected that GiAPA data was a true gold mine of information


1. to keep track of who runs which programs when
2. to analyze any performance problems even after they happened
3. to create graphics allowing management to follow trends in resource usage by application, by user,

    by hour, by you-name-it …
4. to assist operations in the everyday control of the machine usage
5. to use as base for simple job accounting
6. to solve certain complex capacity planning
7. to control quality of new applications before they go in production
 

  Back to Top 

 

 

EASE OF USE

 

1. Installation takes typically less than half an hour, this including download of manual and software.

2. You set up GiAPA data collection using one simple CL-command also allowing optional automatic 

    deletion of data after ?? days.

3. A menu option submits a batch job analyzing few hours or several days of collected performance

    data.

4. After GiAPA has analyzed the data, numerous different reports, displays, or charts are available

     to present the results (expert level knowledge not needed).

 

A Belgium IBM software technician gave our software the best possible compliment, saying “I find GiAPA intuitive!”

 

 

 

  Back to Top 

 

 

DATA COLLECTED

GiAPA collects for all jobs every 15 seconds:

·        Job or task name, user name, job number

·        Job type, priority, pool, date and time

·        CPU milliseconds

·        Active threads

·        Current User

·        Communication puts and gets

·        Exceptions (numeric overflow)

·        Transactions (number and response time)

·        Print lines

·        Pages allocated / deallocated

·        ASP Disk usage %

·        I/Os (physical/logical, synchronous/asynchronous, read/write, data base/non-DB, miscellaneous/permanent writes)

 

Additional Information for HotSpot Jobs
 

(HotSpot = Job exceeds 6 % CPU – user may adjust limit)

·        Call stack down to active statement number

·        Detailed statistics for all opened files

 

(To our knowledge GiAPA is the only tool collecting file usage data down to individual record number within the file - - - you probably can't imagine how much optimization potential we find by analyzing this data!)


 

  Back to Top 

 

 

 

RESOURCES USED


GiAPA Performance Data Collection:


Uses typically less than 0.1 % of one CPU and extremely few I/Os when collecting data for all jobs and tasks every 15 seconds. Usage could increase if limit for collecting additional "HotSpot" data is set much lower than the default values.

Expansion and Analysis:


Runs predominantly CPU bound as a low priority batch job, and is in most cases a matter of a few minutes. Processing 10 million collected job/interval performance data records took on a P05 model 270 only 6 minutes elapsed and 5 minutes CPU.

GiAPA Reports:


Most reports run interactively and appear within a second or two. If *ALL details are kept during analysis, a few reports running on this detailed data may take more than a minute; such reports can be submitted to batch.

Graphics:


The different charts are normally created within a second or two - they are displayed in the browser on your PC or MAC, but are produced by program code stored on the server.

How Can Data Be Collected Using < 0.1 % of One CPU?

 

Reason 1:

I/Os are typically responsible for between 60 and 85 % of the CPU used on a server running commercial applications. GiAPA stores the data collected in a compressed binary format, and builds large blocks of data to keep I/Os down to an absolute minimum.
 

Reason 2:

The performance data (= use of resources) for all jobs are always calculated by the operating system anyway. This already available data is passed to GiAPA in memory every 15 seconds without causing any I/Os.
 

Reason 3:

GiAPA processes the performance data real-time, immediately detecting job(s) using sufficient resources to potentially cause performance problems. GiAPA collects additional "HotSpot" information about programs and files used for these particular jobs. This data is also being received in memory work areas not needing any I/Os.
 

 

  Back to Top 

 

 

 

GIAPA REPORTING

 

Note:

In addition to below list, there are numerous graphics available
(pie, bar, column, area and line charts) - generated automatically or user defined
 

Data Analysis Statistics
Job Performance Summaries
(30 different sort criteria)
Job Open Data Path Overview
Job File Statistics per Interval
Job File Analysis
Job Call Stack per Interval
Job Function / Thread Overview
Analyzed Call Stack
Entire Call Stack (<= 99 levels)
Job Details per Interval
Summary per 15 Seconds Interval
Compare Selected and *ALL Jobs
Resource Usage Totals by Job Name
Resource Usage Totals by User
HotSpots per User
HotSpots per Program
CPU and ASP % per Interval
Interval Summary for All Resources
Interval Histogram by Resource
File Analysis Based On Hotspots

Index Generations per Phys. File
Jobs Having Priority Modified
CPU Usage Statistics
Analyzed PEX Statistics
List Call Stack Based on PEX

PEX Profile
Job Trace - Elapsed and CPU Time
Job Trace - Exception Report
Job Trace - Program Summary
File Open and Close by Millisecond
Message Count by Message ID
Time Tracking Utility Report
Files Having Old Index Type
Unused Data Base Files
Reorganization Candidates
Files Having Inefficient Allocation
Files Opens Greater Than I/Os
Journal Entry Analysis Summary
JAVA Storage leaks
Statistics over Repeated Use of Records
Query Usage: Name, User, Time

 

  Back to Top 

 

 

 

LOOP TRAP


Since information about all resources used by all jobs and tasks is received every 15 seconds during performance data collection, GiAPA can detect if a job starts looping.

If the LOOPTRAP function is activated when data collection is started, GiAPA will send an informational message with severity level 60 to the system operator message queue if a job seems to be looping.

The message is sent if no data base reads are made during xxx minutes, and the CPU usage in the same time period exceeds yyy %, where xxx and yyy are user defined limits.

An exception list is available for job names that never should be reported by the loop trapper


 

  Back to Top 

 

 

 

DATA SECURITY


For retrieving performance data GiAPA only uses IBM standard APIs and commands. Customer programs, data base files, etc. are obviously never modified by GiAPA in any way, but only accessed by commands like DSPFD or DSPOBJD (or corresponding APIs) to collect basic information about the objects used by the jobs being analyzed.

Authority Needed to Collect Performance Data

The standard authorization assigned by IBM to some of the APIs accessed is limiting their use rather strictly, for which reason *JOBCTL and *ALLOBJ, *SERVICE or even authority on QSECOFR level may be needed for the user running GiAPA data collection. (Example: The API QPMLPFRD "List Performance Data" is shipped with *PUBLIC authority *EXCLUDE, although it only passes performance data to the caller).


 

  Back to Top 

 

 

COMPETITION

 

  We never really met any –

                                           - there are several nice tools on the market, but …

  • some require someone to look at the problem when it occurs   *)

  • some need a special data collection started before the problem occurs   *)

  • some only analyze one or two jobs or programs at the time   *)

  • some are so heavy to run that data collection should be kept to a minimum   *)

  • some give so much information that it is easier to find a needle in a haystack  *)

  • some are so complex that it takes an expensive expert to find the answer  *)

*) = Statement not being true for GiAPA

  Back to Top 

 

 

 

F A Q s

 

What is a HotSpot?

 

A HotSpot means that the standard GiAPA performance data collection found a job that within an interval  exceeded CPU usage or I/O limits defined by the user when starting the data collection. Each HotSpot will cause GiAPA to collect job call stack and file usage data.

 

Do HotSpots show all details for a job?

 

No. HotSpots are samples taken only when resource usage limits were exceeded. But for jobs using (too) many resources repeatedly and thus causing many HotSpots, this sampling gets quite accurate and reliable, and can be used for a detailed analysis of the behavior of the job.

 

What is an Interval?

 

A data collection interval is normally 15 seconds, very rarely more. It defines the time between two GiAPA standard performance data collections.

 

How is CPU percentage calculated?

 

The total CPU percentage for the entire machine includes all CPUs.

The CPU-% for a job or task is percentage of only one CPU.

 

What is shown by the “MAX” values?

 

The MAX value line tells the maximum use of a resource within any interval where the job was running during the performance data collection. It is used to show peaks.

 

 

  Back to Top