![]() |
![]() |
|
|
Configuring the UNIX Operating System for the BEA Tuxedo System
The BEA Tuxedo System uses the Interprocess Communication (IPC) resources provided by the UNIX operating system.
Note: Equivalent services are available for other operating systems. For example, the BEA Tuxedo system provides an NT service called the BEA Tuxedo IPC Helper, which facilitates inter-process communication on an NT platform.
IPC resources are configured by three sets of tunable parameters that control the following.
Tunable Parameters Named with This Prefix . . . |
Control the . . . |
---|---|
SEM |
|
MSG |
|
SHM |
The settings for these parameters are application dependent. Most UNIX systems, however, are shipped with default values that are too low for a BEA Tuxedo system application.
The following sections describe the IPC parameters and provide guidelines for configuring them. Because these parameters vary across different versions of the UNIX system, the descriptions provided here are generic. Refer to Platform Data Sheets, for the exact parameter names and defaults for each platform and for information on how to change parameter values. If you change a parameter value, you will need to rebuild the kernel and reboot the operating system, using standard administrative tools. Consult your operating system administrator or the system administrator's guide for your platform for details.
If your BEA Tuxedo application is distributed, the minimum IPC resources must be available on every UNIX platform participating in the application.
Semaphores
Every process that participates in a BEA Tuxedo application requires a semaphore. When the application is booted, the number of semaphores configured in the operating system is checked. The boot fails if the configured number is not high enough.
The following semaphore parameters may need to be adjusted:
Message Queues and Messages
The BEA Tuxedo system uses UNIX system messages and message queues for client/server communication. Examples of such messages are service requests, service replies, conversational messages, unsolicited notification messages, administrative messages, and transaction control messages.
Every MSSQ set (Multiple Servers, Single Queue) of servers and every individual server has a message queue for receiving requests. Every client has its own queue for receiving replies. Servers that specify the REPLYQ parameter also get individual reply queues.
The adjustment of kernel message parameters is important to the proper tuning of an application. Inappropriate values can lead to an inability to boot, or to severe performance degradation.
Several message queue parameters are available to define various characteristics of the queue space.
If the limit specified by any of these parameters is exceeded, then a blocking condition occurs. There is one exception to this rule: MSGMAX. Messages that exceed 75 percent of MSGMNB, or that are larger than MSGMAX, are placed in a UNIX file. A very small message containing the filename is then sent to the recipient. Because this mode of operation results in a severe reduction in performance, we strongly recommend that you avoid it.
What Is Application Deadlock
An application deadlock can result if every process is blocked while trying to send a message. For example, when clients fill up the message space with requests, servers that are trying to send replies are blocked. Therefore, no server can read a message and a deadlock results. Occasionally, timeouts can break a deadlock, but no useful work will have been done.
A client that sends its requests with the TPNOREPLY flag is especially troublesome. This practice can fill either individual queues or the system message space, depending on the size of the messages. Such applications may have to implement their own flow control to limit the number of outstanding messages.
To summarize, if clients or servers are blocking on their send operations (requesting services or sending replies), there is potential for trouble. It is usually no problem, though, for a single server request queue to remain full, as long as there is space in the system for more messages on other queues.
Performance Implications of Blocking Conditions
There are performance implications to queue blocking conditions, both on the sending side and the receiving side. When waking up blocked processes, the UNIX operating system wakes up all the processes blocked on a particular event, even if only one can proceed. The other processes go back to sleep. This process scheduling overhead can be expensive.
For example, on an empty server request queue on which more than one server (MSSQ) resides, an arriving message wakes up all the idle (blocked) servers on that queue. In the case of a full server request queue, as each request is read by a server, the system wakes up all the blocked clients. Depending on the size of the messages, zero or more clients can place messages on the queue. The rest go back to sleep. Because there may be hundreds of clients in the system, the mass wakeup of all of these clients every time a service request is processed can severely degrade performance.
Tunable Message Parameters
A properly tuned system rarely fills its queues. Enough slack should be left in the queues to handle the natural variability of the message flow. No exact settings can be recommended. Tuning is very application dependent. The UNIX ipcs(1) command provides a snapshot of the queues so you can determine whether they are full. You can try setting the TPNOBLOCK flag when sending requests. If you do, clients can tell when queues are full, and they can slow down a bit. It might help to increase the scheduling priority of servers with full request queues.
The following message parameters may need to be adjusted.
+ (number of servers with REPLYQ)
+ (number of MSSQ sets)
- (number of servers in MSSQ sets)
Shared Memory
In the BEA Tuxedo environment, shared memory is used for the Bulletin Board and for the control table of the Workstation Listener process (WSL). An application may also use shared memory for its own purposes.
The following shared memory parameters may need to be adjusted.
Other Kernel Tunables
Experience with the BEA Tuxedo system has shown that some other UNIX system tunables may need to be set to higher values. These parameters are very application dependent and do not apply to all applications. Platform Data Sheets, includes information on the defaults for each platform and instructions for changing them.
Calculating IPC Requirements
When the BEA Tuxedo system software has been installed and an application configuration file (UBBCONFIG file) is available, use the tmloadcf(1) command to calculate the IPC resources needed to support the application.
See Also
![]() |
![]() |
![]() |
|
Copyright © 2000 BEA Systems, Inc. All rights reserved.
|