By Todd Little-Oracle on Nov 05, 2015
Well now that the busyness of OpenWorld is behind us, it's time to spice things up here on the Tuxedo blog. The Tuxedo team is pleased to announce the availability of the Tuxedo Advanced Performance Pack. This add-on option for Tuxedo improves application performance, availability, and manageability. I'll briefly describe the features and benefits of this new option, but for more details please see the newly published white paper.
The Tuxedo Advanced Performance Pack has three major categories of enhancements:
- Core enhancements that all Tuxedo applications can leverage
- Oracle Database related enhancements for those applications using Oracle Database
- Oracle RAC using XA distributed transaction enhancements for customers using Tuxedo and RAC with XA transactions
Together these enhancements can improve application performance by a factor of 2x to 3x, without any changes to application code. In fact, all of the features provided by the Tuxedo Advanced Performance Pack are enabled simply by making a small change to the Tuxedo configuration file.
The core enhancements include:
- Self-tuning Lock Mechanism to automatically and dynamically set the value of SPINCOUNT to optimize the access to Tuxedo semaphores such as the Bulletin Board lock.
- Shared Memory Interprocess Communication - Instead of using System V IPC message queues to communicate between processes, the Tuxedo Advanced Performance Pack provides a facility to use shared memory based messaging. The result is a reduction of buffer copies normally needed with IPC queues to zero copy messaging, all in user mode. For applications using large buffers, the performance improvement under heavy load should be dramatic.
- Tightly Coupled Transaction Branches Spanning Domains - This feature allows Tuxedo to use the same GTRID for distributed transactions that cross domain boundaries, such as one Tuxedo domain calling another Tuxedo domain, or WTC calling a Tuxedo domain. This allows the sharing of locks and updates to resource managers preventing things like deadlocks that might have otherwise occurred. As well when used with RAC, if the participating domains were connected to the same RAC database, then RAC will respond with XA_RDONLY for all branches but the last, speeding up transaction commits.
- Concurrent Global Transaction Table Lock - This feature moves the synchronization of access to the Tuxedo global transaction table (GTT) out from under the Bulletin Board semaphore, to its own semaphore. As well each transaction in the table has it's own semaphore to allow concurrent updates to the entries. This eliminates and lock contention for applications making heavy use of XA transactions.
These next set of features benefit Tuxedo applications that utilize Oracle Database:
- Instance Awareness - Although technically a feature of the Tuxedo Advanced Performance Pack, it's real benefit is in what other features it allows. Essentially this feature lets Tuxedo know the details of Oracle Database connections. In other words, what database, service, and instance any given Tuxedo server is using.
- FAN Support - The Tuxedo Advanced Performance Pack introduces a new Tuxedo server, TMFAN, that connects to Oracle Database ONS to receive FAN notifications. With this information, Tuxedo can make intelligent decisions based upon the configuration and state of a RAC database. This enables the following features:
- Planned Maintenance - When TMFAN receives a notification of planned maintenance for a RAC instance, TMFAN directs the Tuxedo servers connected to that instance to switch their connections to another instance to provide uninterrupted availability.
- Unplanned Outages - The TMFAN server will get an ONS notification that an instance has failed, and as a result will remove Tuxedo servers connected to that instance from service routing selection. The affected Tuxedo servers will be told to switch their connection to another instance and resume processing. Thus eliminating in most scenarios any outage by client applications.
- RAC Load Balacing - FAN periodically notifies RAC clients about how their load should be distributed across RAC instances. When TMFAN receives a load balancing advisory, it attempts to ensure that the Tuxedo load for that database adheres to the advisory by changing the routing of requests, and changing the number of connections to each instance.
- End-to-End Application Tracing - One of the more difficult jobs for a database administrator is identifying the source of problems. With this feature, Tuxedo will automatically tag Oracle Database sessions with the name of the Tuxedo server, service, and client information. Thus a dba can quickly locate Tuxedo applications, servers, services, or clients that are causing performance problems and work with the development team to remediate those problems.
Finally these features help applications that use Oracle RAC with Tuxedo distributed transactions:
- Common XID - The tightly coupled transaction branch feature allows a GTRID to be shared across domains. This feature extends that to allow the use of a single XID across Tuxedo servers and domains when requests end up using the same RAC instance. The result is that in many cases instead of having a number of separate but related GTRIDS, and potentially a number of different transaction branches for the same RAC database, all requests if possible use the same instance and the same XID. Ultimately this could result in a single one phase commit instead of a protracted cross domain two phase commit.
- Partial One Phase Read-Only Optimization for RAC - Distributed transactions that span RAC instances have separate transaction branches for each instance involved in an XA transaction. When a transaction manager prepares these various branches, Oracle Database does an optimization where it reports XA_READONLY for all branches but that last. This feature leverages that capability by preparing all transaction branches but one. If all other branches report read-only, then the final branch can be committed with a one-phase commit, bypassing the prepare step and the transaction log write. This can substantially improve the performance of applications that primarily use RAC.
- XA Transaction Affinity - This feature attempts to minimize the number of RAC instances involved in a distributed transaction. During the routing of a request, Tuxedo will give preference to servers that are connected to a RAC instance that is already enlisted in the transaction. The result is a smaller commit tree and the potential for a one phase commit if RAC is the only resource manager involved in the transaction. As well, minimizing the number of RAC instances involved in the transaction minimize the amount of cross instance traffic within RAC.
- Single Group Multiple Branches - Normally Tuxedo associates a single transaction branch with a Tuxedo server group. This presents difficulties if the server group is using a RAC based database service as RAC does not allow a single transaction branch to span RAC instances. This feature allows a Tuxedo server group to use multiple transaction branches if necessary. The result is that Tuxedo servers using XA transactions with RAC can now use database services that are offered on multiple instances. If the particular Tuxedo server a request is routed to is associated with a new instance for the transaction, the Tuxedo Advaned Performance Pack will create a new transaction branch for the newly enlisted instance.
All of these features add up to huge improvements in application performance, application availability, and simplified management. Tuxedo servers using XA can now fully utilize the features of Oracle RAC including non-singleton services to improve performance and availability. The integration of FAN into Tuxedo means that Tuxedo can dynamically respond to changes in RAC load and configuration, without any operator intervention. Together they provide an unbeatable combination of performance, availability, and manageability.