We're trying to determine the best configuration for hard-partitioning and licensing and I have a disagreement with my linux sys admin!
I've just read the Oracle white paper Hard Partitioning With Oracle VM Server for x86 - June 2012 which talks about sockets, cores and threads and how to assign these to your VCPUs and VMs - so I understand the concepts.
Also I believe Oracle license by core (not thread but core).
My question is: If I have assigned 4 VCPUs to a VM (CPU0-3), which are actually 4 threads (our cores are using hyperthreading) and I make sure these threads belong to 2 cores then surely I should only pay license for 2 cores.
My Linux sys admin tells me to ignore the threads and that we have to license for 4 cpus ie. the VCPUs
For example in our site we have the following.
2 sockets with 4 cores in each and each core is hyperthreaded 2 threads per core - thus we have 16 threads / VCPUs - we want our VMs to have 4 VCPUs each
CPU core socket
CPU0 0 0
CPU1 1 0
CPU2 9 0
CPU3 10 0
CPU4 0 1
CPU5 1 1
CPU6 9 1
CPU7 10 1
CPU8 0 0
CPU9 1 0
CPU10 9 0
CPU11 10 0
CPU12 0 1
CPU13 1 1
CPU14 9 1
CPU15 10 1
I've added a split between the sockets to help clarify this, I find Oracle's numbering confusing but anyway this is my understanding:
2 sockets 0 and 1
4 cores per socket 0,1,9,10
2 threads per core, CPU0 and CPU8 are the two threads in core 0 socket 0
so to assign 4 threads to VMx that run in 2 physical cores I assume I would assign CPU0,CPU8, CPU1,CPU9 - and have to license for 2 cores right?
Would this have any performance implications?
would it be better to use two cores in two seperate sockets?
We've currently configured VMx with CPU0-CPU3 - performance is good, but this is 4 threads across 4 cores so I assume a 4 cpu license.
BTW we did configure VMx with CPU0-1 (ie 2 threads in 2 cores) but performance was bad, cpu load was high with high %steal
thanks for the reply but as I said I've already read that Oracle doc, it explains hard partitioning but doesn't detail the performance considerations i.e using vpus/threads across a single or multiple cores and the licensing implications.
Q: what if the 4VCPUS / threads belong to 4 cores, then I assume this is a 2 processor license?
A: In short, yes, 4 Cores = 2 CPU licenses. If Hyper-Threading is enabled the conversation is threads not cores, and 1 thread = .5 cores. To your point, 4VCPUS with Hyper-Threading = 1 CPU license, 4VCPUS without Hyper-Threading = 2 CPU licenses.
Q: As stated in my question if I assign 4 threads from 2 cores, the licensing is for 2 cores ie 1 processor but will there be a performance impact?
A: The only way to know for sure is to benchmark. That being said, typically I see hard partitioned VMs performing as good or a little better than non pinned VMs.
Sorry for posting a link you've already read. You just referenced the document by name and not by link and I didn't tie the two together.
This is the way I see it.... If you're using 4 cores, then you're using 4 cores. You can use multiple threads on a single core but single threading multiple cores still binds you to those cores. I don't officially speak for Oracle. Nor do most people who respond on this forum. Even Oracle employees that work for Oracle can't give you an official answer. You must to talk to your sales rep and they will get the answer from Oracle Licensing. They will give you the "Oracle answer". Oracle has entire group dedicated to Licensing. I just give my opinion. You're using 4 cores. When you run "xenpm" you can tell exactly what threads are associated with what cores. Pinning 4 threads out over 4 cores means you're using 4 cores. If you decide to pin 8 threads over 8 cores. Then you're using 8 cores. There are no guarantees that hyprethreading will only use a max of 50 percent of any single core. It depends on several different variables.
As to performance, A thread is a thread is a thread. When you pin threads you are dedicating that thread to the core you pin. There has long been debates over whether hyperthreading actually helps performance. In my opinion it does when you are have software that will actually use those threads to load balance request and you're running average CPU work loads. BUT, under high utilization..... I can't see how a second thread can help when the core itself is near maximum utilization. HT has gotten better over the years and OS support has gotten better. I still don't believe that hyperthreading actually helps systems under near max utilization. I've seen Intel quote a 30 percent improvement when if what they say is true, you should get more. I believe 30 percent is about right under normal CPU work loads. A maxed core is a maxed core.