Link to home
Start Free TrialLog in
Avatar of jskfan
jskfanFlag for Cyprus

asked on

Processes Performance best options.

Processes Performance best options.

I would like to know which option gives better performance if a Computer has:

 2 Processor with 4 Core per processor , which means 8 Core Processor total.

OR

4 Processors with 2 Core per Processor, which means 8 Core Processor total

Thank you
Avatar of serialband
serialband
Flag of Ukraine image

Depends on what cores you have.  What speed are the cores?  How much L1 and L2 cache?  Etc...  

Basically, we need more information.
ASKER CERTIFIED SOLUTION
Avatar of bbao
bbao
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jskfan

ASKER

serialband,

for your question : << Depends on what cores you have.  What speed are the cores?  How much L1 and L2 cache?  Etc...   >>

I meant in Vmware, when you create VMs and assign  Processors and Cores to them
you have options on how many Processors and Cores to assign.
Avatar of Member_2_231077
Member_2_231077

In general it does not make any difference although it's generally best to leave the cores per virtual CPU at 1 unless guest licensing is cheaper with fewer CPUs with more cores.
https://kb.vmware.com/s/article/1010184 tells why it was introduce to get around Windows max CPU count and https://blogs.vmware.com/performance/2017/03/virtual-machine-vcpu-and-vnuma-rightsizing-rules-of-thumb.html says leave it at single core unless you have to tweak it.
Avatar of jskfan

ASKER

You mean, put more Processors with minimum Cores ?
I am not worrying about licensing more than  performance.

I believe though it is faster to have 2 Processors with 4 Cores each than having 4 Processors with 2 Cores each.   The information flow is much more confined , it does not have to travel too much to other Sockets.
That is true in the physical world but does not apply to virtual sockets and processors. VMware automatically runs all threads on the same processor anyway if it can, as it says in the blog above "the vNUMA presentation under vSphere 6.5 is no longer controlled by the Cores per Socket value. vSphere will now always present the optimal vNUMA topology unless you use the advanced settings."
Most systems will work better with fewer cpus for the reasons you mentionned.

But in a vm context, you need to consider the host os as well. Vmware tends to suggest 1 core per cpu but there is quite a debate as multiple vms might compete more.

Irl, i benchmarked such setups a few time and did not end up with anything conclusive. Either solution would win depending on the context, and the difference was never that significant.


On a similar note, i also compared x hyperthreded cores vs non hyperthreaded. Turns out as long as there is more than a single cpu, or the os is not windows, turning hyperthreading off would win even when running lots of concurrent processes.
I believe though it is faster to have 2 Processors with 4 Cores each than having 4 Processors with 2 Cores each.

it really depends.

The information flow is much more confined , it does not have to travel too much to other Sockets.

it really depends on how the OS and application designed to handle multiple-task, multiple-core, multiple-thread jobs. of course, it is not wise to distribute inter-thread, inter-process or inter-core communication or data exchange across CPUs, but it is more powerful and efficient to distribute different workloads on different processors and leave inner-workload jobs on the same processor. just because of this, different kind of business will be having different characteristics in utilising computing resources, therefore different multi-processor or multi-core architecture will be designed and implemented, accordingly.

as mentioned above, you can't say which one is always the best, the best performance depends on how you utilise the architecture as per your business needs.
VMware looks after NUMA automatically so you don't have to, what you say is only relevant to non-virtualized machines.