ハイパースレッディングが有効になっているクアッドコアi-7のサーバーがあります。カーネルは、これを8CPUとして認識します。このマシンで実行されるいくつかの仮想ホストを作成したいと思います。 virt-managerを使用すると、どのCPUをどのマシンで使用するかを選択できます。ハイパースレッドペアの両方のCPUを同じ仮想マシンに割り当てるようにこれを構成したいと思います。このように、高負荷の1つのマシンは、ハイパースレッディングのために単一のコアを共有することによって別の仮想マシンに影響を与えません。ただし、大量の並列化を伴うタスクを実行しているため、各VMでハイパースレッディングを使用できるようにしたいです。
では、カーネルがどのCPUがペアであるかをどのように判断できますか? cpu0とcpu1がペアになり、次にcpu2とcpu3というようになりますが、テスト/確認の方法がわかりません。
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
特定の物理CPU /コアの兄弟コアのコンマ区切りリストを出力します。例としてcpu0(最初のコア)を使用しました。
/ proc/cpuinfoの「coreid」フィールドから同じ情報を抽出できます(user61849に感謝)。