Introduction

It’s been several months now that Oracle released new Oracle Database Appliance X9-2 series. And my first project with 4 of these servers is coming to an end as moving to production is planned for the next weeks. What is the real speed of the Xeon CPUs inside these new servers? Let’s find out.

Intel Xeon and CPU speed

I already addressed this topic in a previous blog post, and it’s still relevant today:
https://www.dbi-services.com/blog/oracle-database-appliance-and-cpu-speed/

Basically, Intel Xeon CPU have variable CPU speed depending on the number of enabled cores. The less cores you enable, the more speed you will get on the enabled cores.

Why core speed is important?

You may argue that with multiple cores on nowadays’ CPUs, single core speed is not so important. But it is. First, if you run Standard Edition, there is no parallelism and each statement will be processed by a single core, and as soon as everything is in db cache for this statement, duration will mainly be related to core speed. A 3GHz core will be 50% faster than a 2GHz core without any surprise.

Regarding Enterprise Edition, it’s slightly different. Yes Enterprise Edition supports parallelism, but parallelism has to be configured to work properly. And it’s not suitable for statements taking fractions of a second to execute. Most of the statements will not use parallelism.

Core speed for Xeon Gold (X8) vs Xeon Silver (X9)

X9-2 has now Silver Xeon instead of Gold Xeon for previous X8-2. It means that the CPU is no more an high end version. With X9-2, Oracle wanted to keep the same level of performance compared to previous generation, because it’s enough for this kind of platform. Actually, ODA is an entry level engineered system, and it’s not supposed to be the best platform available. If your target if maximum CPU speed, you’d better look at Exadata X9-2M (based on 32-core Xeon Platinum) or build your own server with Gold or Platinum Xeon, although it may not make a significant difference for most of us.

Real core speed according to technical specs sheet

In the X8-2 specs sheet, you may have seen that Xeon are given for a 2.3GHz core speed. X9-2 specs sheet is given for 2.4GHz cores. But these speeds are not exactly those you will notice. When looking in the Intel spec sheets for these processors, these speeds are “Base Frequency”, meaning that you could expect (much) more than these figures.

Real core speed on X8-2 series

Your system is aware of CPU min and max speeds:

lscpu | grep -e min  -e max
CPU max MHz:           3900.0000
CPU min MHz:           1000.0000

It’s easy to find the actual CPU speed:

lscpu | grep -e "CPU MHz" -e "CPU(s)" | grep -v NUMA

Here are the core speeds I’ve noticed on an X8-2M:

Enabled coresCPU MHz
642800
483100
323600
243600
163700
123700
83900
43900
23900

Basically, disabling half of the cores will bring you a significant speed bump (nearly +30%). And disabling 3/4 of the cores will bring you the maximum speed on the remaining cores (+40%).

Depending on your ODA, you can then expect:

  • 3600MHz: X8-2S with 8 cores, X8-2M with 16 cores, X8-2HA with 2x 16 cores
  • 3900MHz: X8-2S with 4 cores, X8-2M with 8 cores, X8-2HA with 2x 8 cores

Real core speed on X9-2 series

I didn’t test all core configurations as X9-2 is quite new, but I will start cutting core numbers by half on my ODA X9-2S with one Xeon:

lscpu | grep CPU
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                32
On-line CPU(s) list:   0-31
CPU family:            6
Model name:            Intel(R) Xeon(R) Silver 4314 CPU @ 2.40GHz
CPU MHz:               2900.000
CPU max MHz:           3400.0000
CPU min MHz:           800.0000
NUMA node0 CPU(s):     0-31

odacli update-cpucore -c 8
…

lscpu | grep CPU
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                16
On-line CPU(s) list:   0-15
CPU family:            6
Model name:            Intel(R) Xeon(R) Silver 4314 CPU @ 2.40GHz
CPU MHz:               3400.000
CPU max MHz:           3400.0000
CPU min MHz:           800.0000
NUMA node0 CPU(s):     0-15

That’s it, as soon as half of the cores (or less) are enabled, you will get maximum speed.

Let’s confirm this on an ODA X9-2L with 2 Xeons:

lscpu | grep CPU
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                64
On-line CPU(s) list:   0-63
CPU family:            6
Model name:            Intel(R) Xeon(R) Silver 4314 CPU @ 2.40GHz
CPU MHz:               2899.691
CPU max MHz:           3400.0000
CPU min MHz:           800.0000
NUMA node0 CPU(s):     0-15,32-47
NUMA node1 CPU(s):     16-31,48-63

odacli update-cpucore -c 16
…

lscpu | grep CPU
lscpu | grep CPU
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                32
On-line CPU(s) list:   0-31
CPU family:            6
Model name:            Intel(R) Xeon(R) Silver 4314 CPU @ 2.40GHz
CPU MHz:               3400.000
CPU max MHz:           3400.0000
CPU min MHz:           800.0000
NUMA node0 CPU(s):     0-7,16-23
NUMA node1 CPU(s):     8-15,24-31

As expected, this is the same behaviour. Maximum speed when enabling half the cores.

I didn’t try yet on an X9-2HA, but as it’s basically two X9-2L ODAs without any NVMe disk, it will probably be the same conclusion.

Conclusion

ODA X9-2 is quite the same hardware when you compare to its previous sibling. But you should know that you will benefit from maximum core speed as soon as your cut half the cores with odacli configure-cpucore. I would recommend to limit your Enterprise licenses to a maximum of 4 CPUs (8 cores) on an X9-2S, 8 CPUs (16 cores) on an X9-2L and 16 CPUs (2x 16 cores) on an X9-2HA. If you use Standard Edition, consider enabling only 8 cores on an X9-2S, 16 cores on an X9-2L and 2x 16 cores on an X9-2HA to reach the best performance.