[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] doc: cpu topology values should be equal to maxmium vcpus



On 05/29/2013 11:14 AM, Eric Blake wrote:
On 05/28/2013 08:53 PM, Guannan Ren wrote:
---
  docs/formatdomain.html.in | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

There are little document about how to set values of sockets, cores, threads properly. After going through qemu code, I summarize the package/cores/threads/ algorithm
which can be verified by 'cpuid' tool.

The following only explains the case of all the four number are given in qemu commandline.
smp = n (argument to -smp)
nr_threads = smp / (cores * sockets)
nr_cores = cores

-smp 4, sockets=1,cores=4,threads=2 leads to: 1(physical cpu) *4(cores) *1(thread) One physical cpu contains four cores log processor which each contains one thread logical processor.

0 means only one physical cpu package
pkg_id = cpu_index/nr_threads/nr_cores
0         = 0 / 1 / 4
0         = 1 / 1 / 4
0         = 2 / 1 / 4
0         = 3 / 1 / 4

3 means there are four multi-cores logical processor
core_id = cpu_index/nr_threads % nr_cores
0          = 0 / 1 % 4
1          = 1 / 1 % 4
2          = 2 / 1 % 4
3          = 3 / 1 % 4

0 means only one thread logical processor
smt_id = cpu_index  % nr_threads
0         = 0 % 1
0         = 1 % 1
0         = 2 % 1
0         = 3 % 1

And the result could be verified by 'cpuid' tool running in fedora guest.
1st   vcpu: (APIC synth): PKG_ID=0 CORE_ID=0 SMT_ID=0
2nd  vcpu: (APIC synth): PKG_ID=0 CORE_ID=1 SMT_ID=0
3rd  vcpu: (APIC synth): PKG_ID=0 CORE_ID=2 SMT_ID=0
4th  vcpu: (APIC synth): PKG_ID=0 CORE_ID=3 SMT_ID=0

I tried it on several cpu topology:
-smp 16, sockets=2,cores=2,threads=1 leads to 2 * 2 * 4
There are two physical cpu package. Each of them contains two cores logical processor and
each of the cores contains four hyper-threading logical processor.
The result could be verified by cpuid tool.

If the calculation is true, I think my patch is self-acked.

Guannan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]