CPU, core, factors, threads and licenses

Disclaimer 1:
Unless you are a paying client, I am not who you take licensing advice from. Talk to your Software License Manager (SLM) if you want to know how many licenses you need or your Oracle sales rep if you want to know how many licenses you could afford with the budget you have. 🙂

That said, Daniel wote a good post about how the hardware side of CPU, cores, oCPU and vCPU works. Go ahead and read it first, I’ll wait. … Already back? Great, lets talk a little about how it all works and how complex it is to plan your needed licenses.

What I’ll not bother much with is oCPU and vCPU. The reason is that I do not see the difference of Oracle Cloud and non Oracle cloud as particularly interesting. If you need to be on non Oracle cloud and bring your own licenses then you will be interested in it, but to a large extent the on-prem discussion will be enough.

Also, the Oracle cloud is pretty easy. You can get estimates directly on OCI for what you’ll pay for a certain configuration. It also allows you to dynamically change to what you need and have the costs follow your need.

The interesting part is what you need for on-prem deployments. With bring your own license it applies to cloud too, but we’ll stay with on-prem or rather not care about the differences with cost of different clouds.

Let’s start with a box that shows you 56 CPUs when you run lscpu. This assumes Linux/Unix.

CPU(s): 56 
Thread(s) per core: 2 
Core(s) per socket: 14 
Socket(s): 2

Those are the only lines of interest for this discussion. The operating system treats it as 56 separate CPUs. What we do have is 2 processors, each processor has 14 cores for a total of 28 cores and hyper threading is used with two threads per core so 28*2 = 56.

Oracle licensing deals with cores so we can forget about hyper threading. We just have to remember that what is presented to the OS is twice the number of cores we have. This is likely to cause yourself and your SLM heart burn too often for comfort.

Now that we have 28 cores lets call Oracle and buy 28 processor licenses. No, not so fast.

We need to look at one more thing from the lscpu output. Yes, I lied those four lines were not the only thing of interest, there is also this line.

Model name      : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz

This is where the fun starts. Now you need to look into Oracle’s Core factor table document.

In there you will find an entry for “E5-26XX’. The core processing license factor is stated as 0.5. This means that you multiply the number of cores you have with 0.5 to find how many licenses you need for them.

Thus you need 28/2 = 14 processor licenses (or their equivalent in Named User Processes). Now you can call Oracle and place you order.

To make this even more interesting, when it is time for a hardware refresh you tell your datacenter that you need a new server that has 28 cores that has hyper threading. Once you’ve moved it all over and gotten in to production a friend inquires one night over a beer “interesting so you got another server with the same processor architecture”. You place an order for some hard liquor because you just realised that unless someone else checked you may now be using 28 cores with a core factor of 1.0 meaning you need 28 licenses and not 14. The boss is not going to be thrilled at all.

The remedy is to ask for a server with a comparable spec, either one with 14 cores and a 1.0 core factor, or one more like the one you used to have that has 28 cores with a 0.5 core factor and move to it.

This post will in no way cover every aspect. Talk to your SLM and your sales rep. Or if cloud is an option for you, consider it as it makes all of this much easier.