Recently Application Performance Analyzer for z/OS has been receiving increased attention. We’ve noticed that many of our users bring to us both unique as well as common questions regarding the product. We only thought it appropriate to compile these questions into a monthly FAQ blog for APA. Contained herein are real questions from users, much like yourself. We hope you find the responses informative and instructive. You can expect to see an APA FAQ post once a month, so keep the questions coming.

We are using a CICSPlex configuration with TOR-AOR regions. Under our current configuration any given transaction could be routed to any available region. What are the best practices when using APA in a CICSPlex, while also optimizing to reduce APA overhead? Should sample observations be taken in each eligible region?
 
First off, it’s important to point out one of APA’s more prominent features – the user is always able to select specific CICS regions to be measured. We also should stress that measuring every region in the CICSplex may not be practical. Of course your own approach is quite unique; it will be completely dependent on your own production environment (i.e. the number of regions in the CICSplex).
 
In the case of a TOR-AOR arrangement like yours, you could configure your testing to limit observations to only those TOR-AOR candidates where the transactions occur. Consider asking the question: Have we identified a suspected region? If not, then APA observations could be performed across the entire CICSPlex. Once you are able to pinpoint the affected region, you’ll want to limit your performance tuning to that region only.

What happens when I sample observations within a single CICS region? Will the entire region be sampled?
 
The short answer is no. APA sampling only occurs for the transaction that is being monitored, not for the entire CICS region. When initially configuring an observation session, you can specify the transaction and one or more CICS regions (TOR or AORs). But only the transactions occurring in those regions will be monitored.

Once your measurement begins, APA will sample the CICS address space at the requested sampling rate and interval. During the measurement, each time APA samples the address space it checks for the specified transaction or a transaction from the specified terminal. If the transaction does not occur, then the sample will end immediately without collecting data. We should make an important distinction here; it’s not the measurement that ends immediately but rather the individual sample. In cases where samples are taken in the absence of a transaction, the resulting CPU overhead is minimal and significantly lower compared to instances where a transaction is found to be active. In any case, the measurement will continue to run until the requested number of samples have been collected.
 
Can I initiate an APA sample when my transaction executes? 

Yes, you can set this initially. Alternatively, you can configure APA so that it runs when certain thresholds are reached. This setting, which will limit CPU consumption, can be found on the Observation Session List Panel:

And recall that APA has been architected in such a way that results in negligible impact on CPU performance.  
 
In cases where a specific transaction is of interest, problem determination can also be achieved by combining the capabilities of APA and a performance management suite such as OMEGAMON. In a previous blog post, our lead architect for APA, Francisco Anaya, wrote that OMEGAMON for z/OS can be configured to initiate a new observation session request when an event like CPU threshold in a batch job is exceeded. This new feature (APA V14.1.4 and newer) helps you in taking a more proactive approach to diagnosing CPU usage. And as always, APA analysis reports include the program(s) in the job that contribute to the high CPU usage, WAIT times for database queries, and many other measurements too. 
 
Is APA safe to run in production?
 
Absolutely APA can run in production! APA is appropriate for multiple environments including development, testing, and production. APA is a very DevOps friendly tool and should be leveraged whenever your strategic imperatives include CI/CD. Indeed, it is true that APA’s main purpose is to help identify performance issues in your production applications. Taken a step further, the production insights derived from APA can provide your developer teams with an unparalleled level of instant feedback further fueling your business’ growth and agility. 
 
What is the impact on performance? Should I be concerned?

Remember that CPU utilization for APA is always included in the analysis reports. Typically, this usage is insignificant. Historically, our partners report APA overhead percentages in the single digits. It’s worth mentioning that the default max CPU usage is adjustable using the MaxMIPPercent parameter.
 
In the past there have been questions related to CPU consumption of extractors. This is quite specific and is highly dependent on the activities of the application and the frequency of subsystem usage. If we use a CICS example, when an extractor is activated but the suspected program does not contain CICS commands; the overhead is nearly imperceptible for that extractor. Put another way, while all subsystem extractors might be active the only one that will consume the CPU are those that are used in the application’s code.

Is there a list of potential recommendations or capabilities for APA? 

Short answer: APA can tell you whether your application is CPU intensive or Wait/IO intensive and provides a series of reports for both, which can then be used to aid in performance tuning. You can even pinpoint the specific source statements that are causing the CPU consumption issue so that your developer teams can develop a solution. 
 
Now, if you are asking about APA features and functionalities; that might take a while. There are quite a few. Consider this, each subsystem has its own set of recommendations that appear only when certain conditions occur. And these recommendations will all be dependent on your own operating environment. Just to provide a brief overview, APA currently provides performance analysis for: Assembler, C/C++, COBOL, PL/I, Java, CICS, DB2, IMS, WebSphere MQ, and WebSphere Application Server. 

One other area that we are excited about is the added APA functionality in our most recent release of ADDI. Now you can export your APA XML data files to ADDI and produce Application Program Performance Trending reports. By using “Workbooks” in ADDI you’ll even be able to keep separate production, development, and testing performance analyses. 

For answers to all your APA questions and more, ping Chris Hoina – Offering Manager for APA at:
Twitter: @chrishoina
Email: chrishoina@ibm.com

3 comments on"APA: Application Performance Analyzer FAQs (June 2019)"

  1. Chuck Haatvedt June 30, 2019

    I’m new to APA having used a competitive product for over 25 years. One thing that I’m looking for is the ability to analyze native DB2 Stored Procedures. If this is feasible could you provide some examples in the next version of this blog. Also I would like to see DB2 getpage information for both index and data page activity by SQL Statement if that is possible. Another thing that would be nice to have is on the F11 report to see the percentage total DB2 cpu time for each statement. I realize that I can cut and paste the cpu time into an excel spreadsheet, but it would be easier to have that available on the F11 report itself

  2. Chris Hoina July 01, 2019

    Hi Chuck, Chris Hoina here. I’ve saved your question and will be discussing with my lead APA architect. We’ll take a closer look and have a solid response for you soon. Thanks for the question and interest!

  3. Lionel B. Dyck August 23, 2019

    Does APA provide any insight into applications written in interpreted REXX?

Join The Discussion

Your email address will not be published. Required fields are marked *