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-CPU computers that are under heavy load; for example, computers using eight or more CPUs that are running at more than 75% CPU 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.

NOTE:  Using thread pooling introduces its own overhead, however, such as in task context-switching. For this reason, it is strongly recommended not to try to pool threads without also multiplexing them (that is, do not set UseThreadPool = TRUE, but ThreadAffinity = TRUE).

Because ThreadAffinity = FALSE, 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).

Configuring Siebel Application Object Manager Thread Pooling

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

  • UseThreadPool = TRUE (default is FALSE)
  • ThreadAffinity = FALSE (default is FALSE)
  • MinPoolThreads = 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 = 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 = MaxPoolThreads = (MaxTasks divided by MaxMTServers) divided by 2

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

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

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

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

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

MinPoolThreads = MaxPoolThreads = (725 divided by 5) divided by 5 = 145 divided by 5 = 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 © 2013, Oracle and/or its affiliates. All rights reserved. Legal Notices.