When you start the database server, the number of physical and logical processors detected by the database server appears
in the database server messages window.
Physical processors are sometimes referred to as packages or dies, and are the CPUs of the computer. Additional logical processors exist when the physical processors support hyperthreading
or are themselves configured as multiprocessors (usually referred to as multi-core processors). The operating system schedules threads on logical processors.
The -gtc option allows you to specify the number of logical processors that can be used by the database server. Its effect
is to limit the number of database server threads that are created at server startup. This limits the number of active database
server tasks that can execute concurrently at any one time. By default, the number of threads created is 1 + the number of
logical processors on all licensed physical processors.
By default, the database server allows concurrent use of all logical processors (cores or hyperthreads) on each licensed physical
processor. For example, on a single-CPU system that supports hyperthreading, by default the database server permits two threads
to run concurrently on one physical processor. If the -gtc option is specified, and the number of logical processors to be
used is less than the total available for the number of physical processors that are licensed, then the database server allocates
logical processors based on round-robin assignment. Specifying 1 for the -gtc option implicitly disables intra-query parallelism
(parallel processing of individual queries). Intra-query parallelism can also be explicitly limited or disabled outright using
the max_query_tasks option.
Consider the following examples for a Windows-based SMP computer. In each case, assume a 4-processor system with two cores
on each physical processor for a total of eight logical processors. The physical processors are identified with letters and
the logical processors (cores in this case) are identified with numbers. This 4-processor system therefore has processing
units A0, A1, B0, B1, C0, C1, D0, and D1.
Network database server settings
A single CPU license or -gt 1 specified
Threads can execute on A0 and A1.
No licensing restrictions on the CPU with -gtc 5 specified
Threads can execute on A0, A1, B0, C0, and D0.
A database server with a three CPU license and -gtc 5 specified
Threads can execute on A0, A1, B0, B1, and C0.
No licensing restrictions on the CPU with -gtc 1 specified