PARALLEL_MAX_SERVERS
(CPU_COUNT x PARALLEL_THREADS_PER_CPU x (2 if PGA_AGGREGATE_TARGET > 0; otherwise 1) x 5)
The value of
PGA_AGGREGATE_TARGET can be derived when MEMORY_TARGET is set. See Oracle Database Performance Tuning Guide for descriptions of how to use PGA_AGGREGATE_TARGET in different scenarios. The above formula might not be sufficient for parallel queries on tables with higher degree of parallelism (DOP) attributes. We recommend users who expects to run queries of higher DOP to set PARALLEL_MAX_SERVERS as follows:2 x DOP x NUMBER_OF_CONCURRENT_USERS
For example, setting
PARALLEL_MAX_SERVERS to 64 enables you to run four parallel queries simultaneously, if each query is using two slave sets with a DOP of eight for each set.When Users Have Too Many Processes
When concurrent users have too many query server processes, memory contention (paging), I/O contention, or excessive context switching can occur. This contention can reduce system throughput to a level lower than if parallel execution were not used. Increase thePARALLEL_MAX_SERVERS value only if the system has sufficient memory and I/O bandwidth for the resulting load.You can use operating system performance monitoring tools to determine how much memory, swap space and I/O bandwidth are free. Look at the run queue lengths for both your CPUs and disks, and the service time for I/Os on the system. Verify that the system has sufficient swap space to add more processes. Limiting the total number of query server processes might restrict the number of concurrent users who can execute parallel operations, but system throughput tends to remain stable.
Limiting the Number of Resources for a User using a Consumer Group
You can limit the amount of parallelism available to a given user by establishing a resource consumer group for the user. Do this to limit the number of sessions, concurrent logons, and the number of parallel processes that any one user or group of users can have.Each query server process working on a parallel execution statement is logged on with a session ID. Each process counts against the user's limit of concurrent sessions. For example, to limit a user to 10 parallel execution processes, set the user's limit to 11. One process is for the parallel coordinator and the other 10 consist of two sets of query server servers. This would allow one session for the parallel coordinator and 10 sessions for the parallel execution processes.
See Oracle Database Administrator's Guide for more information about managing resources with user profiles and Oracle Real Application Clusters Administration and Deployment Guide for more information about querying
GV$ views.
Comments
Post a Comment