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.


2 Answers 2


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.

  • Is there a cleaner way to determine which cores are which for CPU affinity purposes?
    – ewwhite
    Feb 26, 2011 at 20:27
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).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.