5

I have a server that is a quad-core i-7 with hyperthreading enabled. The kernel recognises this as 8 cpus, as it should. I want to create a couple virtual hosts running on this machine. virt-manager lets me select which cpus are used on which machine. I want to configure this so that I assign both cpus in a hyperthreaded pair to the same virtual machine. This way one machine under heavy load will not effect another virtual machine by sharing a single core due to the hyperthreading. But I do want hyperthreading available to each vm because I am running tasks that involve heavy parallelization.

So, how can I tell which cpus the kernel recognizes are a pair? I would suspect cpu 0 and cpu 1 make a pair, then cpu 2 and cpu 3, and so on, but I am not sure how to test/confirm.

0

2 Answers 2

4

This link describes how to match physical id, core id, and sibling count to identify which entries in /proc/cpuinfo are on the same core, but I can make no claims as to its accuracy. It also looks similar to [this question][2].

Note: the link referred to now seems to be a spam site, it was: http ://www.linuxforums.org/articles/finding-server-is-multi-processor-multi-core-or-hyperthreading-is-enabled-or-not-_856.html [2]: https://stackoverflow.com/questions/3019129

1
  • Is there a cleaner way to determine which cores are which for CPU affinity purposes?
    – ewwhite
    Feb 26, 2011 at 20:27
4
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list

will print comma-separated list of sibling cores for a particular physical CPU/core. I used cpu0 (first core) as example.

The same information can be extracted from "core id" fields in /proc/cpuinfo (thanks user61849).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .