web-dev-qa-db-ja.com

どのCPUが同じコアのハイパースレッドであるかを知ることは可能ですか?

ハイパースレッディングが有効になっているクアッドコアi-7のサーバーがあります。カーネルは、これを8CPUとして認識します。このマシンで実行されるいくつかの仮想ホストを作成したいと思います。 virt-managerを使用すると、どのCPUをどのマシンで使用するかを選択できます。ハイパースレッドペアの両方のCPUを同じ仮想マシンに割り当てるようにこれを構成したいと思います。このように、高負荷の1つのマシンは、ハイパースレッディングのために単一のコアを共有することによって別の仮想マシンに影響を与えません。ただし、大量の並列化を伴うタスクを実行しているため、各VMでハイパースレッディングを使用できるようにしたいです。

では、カーネルがどのCPUがペアであるかをどのように判断できますか? cpu0とcpu1がペアになり、次にcpu2とcpu3というようになりますが、テスト/確認の方法がわかりません。

5
Exodist

このリンク は、物理ID、コアID、兄弟数を照合して/ proc/cpuinfoのどのエントリが同じコアにあるかを識別する方法を説明していますが、その正確性については主張できません。また、 この質問 に似ています。

4
user61849
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list

特定の物理CPU /コアの兄弟コアのコンマ区切りリストを出力します。例としてcpu0(最初のコア)を使用しました。

/ proc/cpuinfoの「coreid」フィールドから同じ情報を抽出できます(user61849に感謝)。

3
Onlyjob