You are here

Confirm the Oracle VM Server CPU Topology

Before you pin a virtual machine's CPUs to an Oracle VM Server's CPU cores, its necessary to understand the Oracle VM Server's CPU topology to be able to pin a virtual machine's CPUs to the desired Oracle VM Server's CPU cores and/or threads. There are a number of commands to list an Oracle VM Server's CPU topology. dmidecode and xenpm are my favorite commands to map out an Oracle VM Server's CPU topology. dmidecode is a tool that reports information about a system's hardware as described in the system BIOS. As root, type "man dmidecode" to print the dmidecode man page. xenpm stands for Xen Power Management. Xenpm is a userspace program that lists CPU power information and provides control over power policies. Type xenpm or xenpm --help to print the xenpm command list.

To gain a clear picture of an Oracle VM Server's CPU topology, as root, type "dmidecode -t 4 | grep CPU" to list the system' CPU details. Next, as root, type “xenpm get-cpu-topology“ to list the CPU topology. The details from dmidecode and xenpm get-cpu-topology will allow you to generate a CPU pinning plan showing the mapping between virtual machine CPUs to Oracle VM Server CPU cores.  

The next example shows the CPU topology of an Oracle VM Server with Quad (4), Octo-core (8) CPUs, with hyper-threading enabled. The example server has 32 CPU cores with an Oracle processor factor of 16, i.e. 16 CPU licenses. Virtual machine CPUs can be pinned from 1 up to 16 of CPU licenses. 

Table 2 shows the example servers processor factor, cores, threads, and virtual machine pinning and NUP options.
Sockets/CPUs Cores Threads Processor Factor VM Pinning Options DB NUPs App Server NUPs
4
32
64
16 CPU Licenses
1 CPU License = 2 Cores = 4 Threads = 4 vCPUs
2 CPU License = 4 Cores = 8 Threads = 8 vCPUs
3 CPU License = 6 Cores = 12 Threads = 12 vCPUs
4 CPU License = 8 Cores = 16 Threads = 12 vCPus
5 CPU License = 10 Cores = 20 Threads = 20 vCPUs
6 CPU License = 12 Cores = 24 Threads = 24 vCPUs
7 CPU License = 14 Cores = 28 Threads = 28 vCPUs
8 CPU License = 16 Cores = 32 Threads = 32 vCPUs
9 CPU License = 18 Cores = 36 Threads = 36 vCPUs
10 CPU License = 20 Cores = 40 Threads = 40 vCPus
11 CPU License = 22 Cores = 44 Threads = 44 vCPUs
12 CPU License = 24 Cores = 48 Threads = 48 vCPU 
13 CPU License = 26 Cores = 52 Threads = 52 vCPUs
14 CPU License = 28 Cores =  56 Threads = 56 vCPUs
15 CPU License = 30 Cores = 60 Threads = 60 vCPUs
16 CPU License = 32 Cores = 64 Threads = 64 vCPUs
25 users per processor
10 users per processor
 
dmidecode -t 4 | grep CPU
From the Oracle VM Server's console, as root, type "dmidecode -t 4 | grep CPU" to list the system' CPU details:
# dmidecode -t 4 | grep CPU
    Socket Designation: CPU1
    Version:        Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz
    Socket Designation: CPU2
    Version:        Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz
    Socket Designation: CPU3
    Version:        Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz
    Socket Designation: CPU4
    Version:        Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz
 
The above "dmidecode -t 4 | grep CPU" command uses the "-t 4" option, -t means type, and 4 means CPU, then we use grep CPU to only show the CPU details. 
 
xenpm get-cpu-topology
From the Oracle VM Server's console, as root, type "xenpm get-cpu-topology to list the servers CPU topology:
# xenpm get-cpu-topology
CPU   core socket node
CPU0     0     0     0
CPU1     0     0     0
CPU2     1     0     0
CPU3     1     0     0
CPU4     2     0     0
CPU5     2     0     0
CPU6     3     0     0
CPU7     3     0     0
CPU8     4     0     0
CPU9     4     0     0
CPU10     5     0     0
CPU11     5     0     0
CPU12     6     0     0
CPU13     6     0     0
CPU14     7     0     0
CPU15     7     0     0
CPU16     0     1     1
CPU17     0     1     1
CPU18     1     1     1
CPU19     1     1     1
CPU20     2     1     1
CPU21     2     1     1
CPU22     3     1     1
CPU23     3     1     1
CPU24     4     1     1
CPU25     4     1     1
CPU26     5     1     1
CPU27     5     1     1
CPU28     6     1     1
CPU29     6     1     1
CPU30     7     1     1
CPU31     7     1     1
CPU32     0     2     2
CPU33     0     2     2
CPU34     1     2     2
CPU35     1     2     2
CPU36     2     2     2
CPU37     2     2     2
CPU38     3     2     2
CPU39     3     2     2
CPU40     4     2     2
CPU41     4     2     2
CPU42     5     2     2
CPU43     5     2     2
CPU44     6     2     2
CPU45     6     2     2
CPU46     7     2     2
CPU47     7     2     2
CPU48     0     3     3
CPU49     0     3     3
CPU50     1     3     3
CPU51     1     3     3
CPU52     2     3     3
CPU53     2     3     3
CPU54     3     3     3
CPU55     3     3     3
CPU56     4     3     3
CPU57     4     3     3
CPU58     5     3     3
CPU59     5     3     3
CPU60     6     3     3
CPU61     6     3     3
CPU62     7     3     3
CPU63     7     3     3
 
Once you have the Oracle VM server’s CPU topology, you can pin a virtual machine’s CPUs to any of the Oracle VM Server's cores. A best practice is to follow the default behavior of the credit scheduler and pin each of the virtual machine CPUs to a separate physical core.
 
From an Oracle CPU licensing perspective, Hyper-threading does “not” increase the CPU license count of an Oracle VM Server or a pinned virtual machine. Enabling Hyper-threading will increase the overall CPU capacity of an Oracle VM Server and its virtual machines. For example, without hyper-threading, an Oracle VM Server or virtual machine is only running a single thread per core. With hyper-threading, the number of cores increases, and the Oracle VM Server or virtual machine can use the additional threads without incurring additional Oracle CPU licensing penalties.
 
The next example shows the CPU topology of an Oracle VM Server with Dual (2), Quad-core (4) CPUs, without hyper-threading enabled. The example server has 8 CPU cores with an Oracle processor factor of 4, i.e. 4 CPU licenses. Virtual machine CPUs can be pinned from 1 up to 4 of CPU licenses. 
 
Table 2 shows the example servers processor factor, cores, threads, and virtual machine pinning and NUP options.
Sockets/CPUs Cores Threads Processor Factor VM Pinning Options DB NUPs App Server NUPs
2
8
NA
4 CPU Licenses
1 CPU License = 2 Cores =  2 vCPUs
2 CPU License = 4 Cores =  4 vCPUs
3 CPU License = 6 Cores = 6 vCPUs
4 CPU License = 8 Cores = 8 vCPus
25 users per processor
10 users per processor
 
dmidecode -t 4 | grep CPU
From the Oracle VM Server's console, as root, type "dmidecode -t 4 | grep CPU" to list the system' CPU details:

# dmidecode -t 4 | grep CPU
        Version:  Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz
        Version:  Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz

 
The above "dmidecode -t 4 | grep CPU" command uses the "-t 4" option, -t means type, and 4 means CPU, then we use grep CPU to only show the CPU details. 
 
xenpm get-cpu-topology
From the Oracle VM Server's console, as root, type "xenpm get-cpu-topology to list the servers CPU topology:
# xenpm get-cpu-topology
CPU     core    socket  node
CPU0     1       0       0
CPU1     2       0       0
CPU2     3       0       0
CPU3     4       0       0
CPU4     1       1       1
CPU5     2       1       1
CPU6     3       1       1
CPU7     4       1       1
 
Once you have the Oracle VM server’s CPU topology, you can pin a virtual machine’s CPUs to any of the Oracle VM Server's cores. A best practice is to follow the default behavior of the credit scheduler and pin each of the virtual machine CPUs to a separate physical core.

Download PDF Now!