Siebel Performance Tuning Guide > Tuning Siebel Application Object Manager >

Using Thread Pooling for Siebel Application Object Manager


Optionally, you can configure your Siebel Application Object Manager components to use thread pooling. Enabling Siebel Application Object Manager thread pooling as described in this topic both pools and multiplexes (shares) multiple tasks across threads.

Using Siebel Application Object Manager thread pooling can improve performance and scalability on multiple-processor computers that are under heavy load; for example, computers using eight or more processors that are running at more than 75% capacity.

NOTE:  Siebel Application Object Manager thread pooling is not recommended for smaller server computers or for computers that run under a relatively lower capacity.

About Thread Pooling for Siebel Application Object Manager

The pool size per multithreaded process for a Siebel Application Object Manager is determined by the combined settings of the parameters UseThreadPool, ThreadAffinity, MinPoolThreads, and MaxPoolThreads.

Siebel Application Object Manager thread pooling reduces some of system resource usage devoted to creating and closing session threads, as users log in and log out or are timed out. As when you are not using thread pooling, session threads are created as needed as session requests demand. However, instead of being closed when a session terminates, they are released to a pool, where they become available for use by a subsequent session.

When ThreadAffinity is FALSE (the default), threads are multiplexed, as can be done with certain types of database connections or SISNAPI connections. At any given time, each thread can be dedicated to one or more user session (task).

NOTE:  Using thread pooling introduces its own overhead, such as in task context-switching. For this reason, it is strongly recommended not to attempt to pool threads without also multiplexing them. That is, do not set both UseThreadPool and ThreadAffinity to TRUE.

Configuring Siebel Application Object Manager Thread Pooling

To use thread pooling, you set the following parameters on the Siebel Application Object Manager:

  • UseThreadPool equals TRUE (default is FALSE).
  • ThreadAffinity equals FALSE (default is FALSE).
  • MinPoolThreads equals min_number_threads_in_pool (default is 0), where min_number_threads_in_pool represents the minimum number of threads in the Siebel Application Object Manager thread pool.
  • MaxPoolThreads equals MinPoolThreads (default is 0).

NOTE:  You must specify a value for MaxPoolThreads that is equal to or greater than the value of MinPoolThreads.

To determine an appropriate value for MinPoolThreads and MaxPoolThreads, start slowly, monitor system performance, then introduce more multiplexing, as appropriate for your deployment. For example, start with a formula like this (based on two tasks per thread):

MinPoolThreads equals MaxPoolThreads equals (MaxTasks divided by MaxMTServers) divided by 2

Subsequently, you can increase this to five tasks per thread, using this formula:

MinPoolThreads equals MaxPoolThreads equals (MaxTasks divided by MaxMTServers) divided by 5

For example, if MaxTasks equals 525, and MaxMTServers equals 5, then this would be:

MinPoolThreads equals MaxPoolThreads equals (525 divided by 5) divided by 5 equals 105 divided by 5 equals 21

Or, if MaxTasks equals 725, and MaxMTServers equals 5, then this would be:

MinPoolThreads equals MaxPoolThreads equals (725 divided by 5) divided by 5 equals 145 divided by 5 equals 29

NOTE:  Adjust values for think time, as necessary. If you cut your think time value in half, then double the number of threads in the pool.

Siebel Performance Tuning Guide Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Legal Notices.