Hi, While trying out -numa and -smp command line options, I found that it is possible to specify inconsistent or impossible or incomplete topology specifications on qemu command line and have qemu silently boot a VM with such a topology without complaining.
Example 1: With "-numa node,nodeid=0,cpus=0-1 -numa node,nodeid=1,cpus=2-3 -smp sockets=2,cores=2,threads=2", the topology looks like this: root@sqzy:~# lstopo object intersection without inclusion! Machine (1024MB) NUMANode #0 (phys=0 512MB) L2 #0 (4096KB) + Core #0 L1 #0 (32KB) + PU #0 (phys=0) L1 #1 (32KB) + PU #1 (phys=1) Socket #0 L2 #1 (4096KB) + Core #1 L1 #2 (32KB) + PU #2 (phys=4) L1 #3 (32KB) + PU #3 (phys=5) L2 #2 (4096KB) + Core #2 L1 #4 (32KB) + PU #4 (phys=6) L1 #5 (32KB) + PU #5 (phys=7) NUMANode #1 (phys=1 512MB) + L2 #3 (4096KB) + Core #3 L1 #6 (32KB) + PU #6 (phys=2) L1 #7 (32KB) + PU #7 (phys=3) Here the -numa specification was incomplete, but qemu chose to put CPUs incorrectly in 2 nodes. Example 2: node,nodeid=0,cpus=8-11 -numa node,nodeid=1,cpus=9-15 -smp sockets=2,cores=2,threads=2 root@sqzy:~# lstopo Machine (1024MB) NUMANode #0 (phys=0 512MB) Socket #0 L2 #0 (4096KB) + Core #0 L1 #0 (32KB) + PU #0 (phys=0) L1 #1 (32KB) + PU #1 (phys=1) L2 #1 (4096KB) + Core #1 L1 #2 (32KB) + PU #2 (phys=2) L1 #3 (32KB) + PU #3 (phys=3) Socket #1 L2 #2 (4096KB) + Core #2 L1 #4 (32KB) + PU #4 (phys=4) L1 #5 (32KB) + PU #5 (phys=5) L2 #3 (4096KB) + Core #3 L1 #6 (32KB) + PU #6 (phys=6) L1 #7 (32KB) + PU #7 (phys=7) NUMANode #1 (phys=1 512MB) So looks like, what CPUs we specify in -numa doesn't matter and if its wrong, VM will some up with some odd topology. Shouldn't qemu check if the -numa and -smp specification are compatible with each other ? Regards, Bharata. -- http://bharata.sulekha.com/blog/posts.htm, http://raobharata.wordpress.com/