Home Unix/Linux Mainframe Other Servers Software Reviews
 

IBM zSeries Application Assist Processor: In-Depth

990 MCM with its 8 PUs --any one
of which can be configured as a zAAP

Exclusive Interview with 

José Castaňo  

Senior Technical Staff Member, IBM  
zBLC Technical Lead & z/Series Strategy  

 

The IBM zSeries Application Assist Processor, introduced in April 2004 to commemorate the 40th birthday of IBM mainframes, is a speciality assist processor, à la a SAP or ICF, dedicated exclusively to the execution of Java workloads under z/OS(.e). Its goal is to enable integration of new Java based Web applications with core z/OS backend database environments for high performance, reliability, availability, security, and lower total cost of ownership.

It reduces up front capital as well as maintenance costs for workloads with Java cycles; e.g. WebSphere, DB2 etc. It provides additional capacity at low cost of acquisition to process Java without affecting MSU rating or machine model designation.  There is also no additional IBM software costs associated with running a zAAP.

José Castaňo, one of IBM's zAAP technical evangelists, gives us an exclusive, in-depth look at this intriguing, and as yet not very well understood mainframe feature -- in this interview with Anura Guruge, IT In-Depth's editor at large.

José Castaňo: The Bio

Jose has been with IBM since 1986 where he started with TSO/E development, and through 1996 spent his time in various MVS & z/OS components. In 1996 he moved to Parallel Sysplex, first in development and then technical support. He spent 4 years in pre and post sales tech support working with over 100 customers worldwide in helping sales and migrate to Parallel Sysplexes. From there he moved over to Design and Architecture and has been working on various Ease of Use initiatives for z/OS. Next he moved over to e-Business, where he was the strategy manager and helped co-invent the zAAP processor. Jose's current role is Program Director for zSeries strategy, where he manages the strategy department for z/OS and also is the strategy manager for zSeries On Demand initiative. Jose is also the technical chair of the zSeries e-Business Leadership Council, which is a customer council of approximately 40 customers.
 

   Read Anura Guruge's initial take on the zAAP prior to this interview  

 Click here for a January 2005 presentation on zAPP by IBM (which is also available on IBM's portal) [3MB PDF]


Q1: José, can you, at a relatively high-level and somewhat succinctly, give us a “POPs” type description of how a zAAP is optimized to execute Java instructions?

A1: The zAAP runs on a standard processing unit (PU) that can have multiple personalities. A PU can be a standard cpu running zOS, TPF, VSE or zLinux. A PU can be an IFL - which is dedicated to running only zLinux.  A PU can be a SAP which runs the I/O sub-system code.  A PU can be an ICF which runs coupling facility code. With zAAPs a PU is used to run only Java on zOS.  A PU can be a spare in the case where another PU with anyone of the above personalities fails it can swap in and assume the appropriate personality.  The underlying microprocessor and instruction set architecture is the same for all the above personalities.  Modifications to the JVM for zOS detect when Java code is called or when Java code calls out to non-Java code.  These JVM modifications signal the zOS dispatcher than the unit of work can be moved to or from a stand cpu and a zAAP. We've also specialized these engines to avoid some of the common CP function such as taking I/O interrupts.  zAAPs share the L2 cache and main memory with the other PUs on the system. This tight integration of zAAPs with the JVM and the zOS dispatcher on top of the LPAR/PR/SM virtualization technology minimizes latency and cpu degradation while enabling signficant portions of Webshere and java applications to be off-loaded onto engines with substantial price/performance advantages.  This java off-load capability is achieved without any modifications required to the application.  Only the systems programmer will know that the zAAPs are configured.  This memory coherent design provides a number of advantages over network attached distributed offload devices.  It allows us to manage and monitor zAAPs with the same WLM and SMF/RMF infrastructure that is used to manage the other PUs.  It provides the full range of Websphere/zOS, zOS and zSeries QoS that customers expect w/ our platform.

      The zAAP and the proxy for switching into the zAAP is integrated into the JVM, so that we could closely manage the switchover to avoid latency degradation.  We've also integrated this support into the z/OS dispatcher, again for performance.

      As you are probably aware, we continuously improve the performance of JAVA on the platform through path reduction, new architecture in our processors (e.g. TRT) that JAVA can exploit to 'speed loops up', and we also introduced Super-Scalar in our z990s to help JAVA/XML workloads.  However, we've made an development expense decision not limit these enhancements to just the zAAPs, but to make them available to all our processors (CPs, IFLs, zAAPs, etc.) because to have special purpose engines and diverge processors in the same platform is expensive.   So - yes - we do continue to make performance and integration improvements for our JAVA (the recently announced SDK 1.4.2 for z/OS is another example), but we have chosen to make that technology available across the platform, even though in many of the cases, it clearly benefits the JAVA workload more and in some cases it only benefits JAVA workloads.

       This point is very important, because we could have chosen to create different processors or, even another extreme, move JAVA processing to another physical platform.  We chose not to do that, because OLTP and batch workloads, which is the job that z/OS is made for, benefit tremendously from  proximity of Application Serving (and batch) and Data Serving.  The memory coherency of the zAAP and the CPs is very conducive to these workloads and hence the other reason for the decision.

Q2: José, I want to really try and ‘categorize’ what a zAAP can do for a mainframe customer … and whether the main rationale for a zAAP is to ‘off-load’ Java processing away from a standard CP.  So to establish that, can you please walk us through the following scenario.  José, lets say we run the same Java workload, with no other jobs or tasks, on two separate z/OS 1.6 LPARS on a z990, and have one LPAR powered just by a single CP while the other LPAR is powered by a CP and a zAAP.  Will we see a marked performance improvement on the zAAP assisted LPAR … and if so (and I know it is hard to generalize) what would be the “scale” of this improvement?

A2: YES - you would see dramatically improved throughput on the LPAR with 1&1. You are providing additional horsepower with the zAAP, so the work you would be able to accomplish in the zAAP LPAR would be substantially more than the non-zAAP processor.  One would be able to execute the equivalent workload on the 1CP plus 1 zAAP of a 2CP LPAR.

      To elaborate -- if you add a zAAP to a uni processor defined as a standard CP you have close to doubled your overall capacity.  You will see an increase in the capacity of the configuration for a much lower hardware price for the cpu and no increase in software costs relative to upgrading the configuration with a standard CP.  We would expect the increase in the configuration capacity to scale with the the LSPR ratios, assuming there was enough java content in the application to drive the zAAP fully - which in this case would mean that 50% or more of the application is running in Java.  We have a tool that can help a customer understand what the content of their existing java applications are and thus, the potential for off-load to a zAAP.   The overhead associated with switching execution between zAAPs and standard CPs is minimal (less than 5% - we usually see around 1-3% in lab measurements - a recent customer measured 2%) and should not be an inhibitor to realizing the price/performance benefits that zAAPs provide.  Another potential benefit is that by moving the Java processing to the zAAP you can reclaim capacity on the standard CP and use it for some other work.

      There is an exception to the above example.  If you are running on a z890 which is running at a slower than full rated Model 170 speed (we have 7 speed ratings for z890) and you add a zAAP to the configuration - the zAAP will run at the full rated speed of a Model 170 CP while the CP in the same LPAR could be running at a Model 110 speed which is almost 1/14th the speed of the Model 170.  Here is a graphic which illustrates this:

Q3: José, can you share a zAAP between multiple z/OS(.e) 1.6 LPARs?

A3: YES - they can be shared across LPARs, just like CPs, IFLs, and ICFs can be shared.  In is in keeping with our virtualization leadership.

      On a physical server (SMP) you cannot configure more zAAPs than standard CPs. However, within a given LPAR on a server you can define more zAAPs than CPs.

Q4: José, what I am trying to do here is to get to the next level of ‘granularity’ when it comes to ‘killer’ Java apps. for the zAAP.  While we can all appreciate associating the zAAP with obvious Java middleware like WebSphere Application Server, can you, please, get a bit more specific and talk about whether zAAP is really good if you are heavy into Web servers, portal servers, Web caching etc.?

A4: Most Servers either classify themselves as either a data serving or application serving image.  z/OS is different.
We are in the business of OLTP, which is the mix and integration of both data serving and application serving.
This point is critical, because this is where our strengths lie.  To now answer your questions, zAAPs make sense for these type of workloads.   If you require Application Serving that has a strong dependency to the data on z/OS, then these workloads are naturals for zSeries.   If you are doing static web serving,  or heavy portal servers that have very little tie to the zSeries host, then the customer might be better served in either using Linux for zSeries to consolidate those web servers or another platform.    If Web Serving is dynamic and has a tight coupling to EISes or data servers, then this type of WebServing makes sense on z/OS and zAAPs definitely help the case.

      In the lab we have tested zAAPs with a number of workloads with varying degrees of java content.  Here are some examples of the percentage of java content for a range of workloads we tested:

      As applications increase their use of Webservices, WBI-SF workflow and Websphere Portal we would expect that amount of java processing to increase over time.  However, we also see the amount of back-end non-java processing increasing as the scope of the user community increases, new applications are developed and more transactions are driven against the same back-end data source.  It is hard to predict what the relative ratio of java to non-java processing will be in the future, but it is safe to say that there will be more MIPS expended by customers for both.  The more java, the more database and the more tightly the two are integrated the better - this is where zAAPs become attractive.

Q5: José, while I will certainly not put you on the spot and ask for the number per se, but can you please tell us whether it is possible to establish a SPECjjb2000 type rating for a zAAP and if so whether IBM plans to publish such benchmark results at some point?

A5: We do run internal benchmarks and use them to help us measure progress and gaps.   We do NOT publish these benchmarks because we feel that performance benchmarks are very one-dimensional and do not properly reflect what the QOSes and virtualizatoin add to the overall value to the customer and enterprise.

Q6: José, while I know it is possible to have more than one zAAP per LPAR, does it really make sense to have more than one zAAP per LPAR and have more zAAPs per LPAR than standard CPs?

A6: Yes it is possible to have more than one zAAP per LPAR and it definitely makes sense.   The more JAVA workload that is running in the LPAR, then the more zAAP cycles that is required.  For example, if an LPAR is a WAS/DB2, DB2 might require 2 CPs while  WAS might require 2 CPS and 4 zAAPs.   Using the same scenario, it is easy to invisage that one could require more zAAPs than CPs for an LPAR.

Q7: José, this is my last question and I have to ask it though it is OK if you want to plead the “5th” for legal reasons given that I appreciate that this involves your Linux partners … but my question is … if you haven’t already anticipated it … is whether zAAP will, at a future date, be supported by z/Linux?

A7: There are no current plans to support Linux for zSeries.  We will revisit this decision as the market warrants it.

Thank you very much José.

José this was outstanding.  You so eloquently cleared up so many issues and gave us so many valuable insights.  I really appreciate you taking the time to share all this information with us.  I know that our readership will be very grateful for this level of detail.  Best wishes and thank you again.