ukky7272
Enthusiast
Enthusiast

【VMWare Workstation Pro 17】仮想マシンごとにホストで使用するコアを指定できないのでしょうか?

現在、3つの仮想マシンが稼働しています。

全て、2vCPU、2スレッドなのでタスクマネージャ上では4つのグラフ表示です。

ホストPC側は20コアあるのですが、3台とも起動しても最後の4スレッド(16~20)しか負荷があがりません。
これはホストPCのパフォーマンスをフル活用できてないですよね?

3台のPCで同時に操作をさせると、16~20だけ100%になります。

もっとまんべんなくCPUを使うように、割り当てを手動で設定できないものでしょうか?

仮想1は1~4、仮想2=5~8、仮想3=9~12 のように。
または、自動的に全コアを使わせる設定などないのでしょうか?

 

しかもその時、2番目と3番目の仮想PCがしばらくするとフリーズします。ホスト側の16~20の負荷が100%になったまま落ちません。
仮想マシンは、強制的にパワーをoffにして再起動しないと使えません。
これだと作業に支障をきたします。

皆様のお知恵をお貸しいただけると幸いです。

0 Kudos
3 Replies
kawaman
Leadership
Leadership

CPU Core の固定割当 (CPU Affinity) に関しては以前の質問スレッドの以下の部分が非公式な方法ではありますが、vmx ファイルに

ProcessorXX.use = "TRUE" 
ProcessorYY.use = "FALSE"

を追記して使用する CPU Core を固定する方法になるかと思います。

−−−−

現状では P-Core / E-Core の割当を vmx ファイルに設定値を追記することで固定制御する事が高パフォーマンス仮想マシンを作るためには必要で、ProcessorXX = "TRUE" 、ProcessorYY = "FALSE" など割り当てる物理コアと vCPU のマッピングをしていきます。
そのあたりのポイントは Workstation Pro のスレッドに共有されていましたので、
以下が参考になるかと思います。

----

 

> または、自動的に全コアを使わせる設定などないのでしょうか?

Intel Alder Lake 以降の P-Core / E-Core で構成される CPU の場合、まだ仮想マシンに対して最適な割当ができないようで、既定値の全コアをバランス良く使わせる設定だとパフォーマンスの不具合などが起きる様です。
※ 私自身が Alder Lake の PC を持っていないため実機確認できずでして申し訳ないです

 

ご参考まで

 

0 Kudos
ukky7272
Enthusiast
Enthusiast

ありがとうございます。

CPU-Z というツールで確認したたら、私のPCも”Alder Lake”でした・・・
その不具合の恩恵を受けてたんですね(苦笑

これは、将来的にOS側のWindowsUpdateにて解消される可能性があるのでしょうか?
もしくは、VMWare Workstation Pro側のアップデートで対応されるのでしょうか?

いずれにしても今は、非公式の方法で手動で対応することになりますね。
(VM2と3が固まる現象が解消されれば嬉しいです)

お分かりになるなら、推測でも結構ですが、
3つのVMを、それぞれ1~4、5~8、9~12と先頭のコアから振り分けて良いものでしょうか?
または後半から割り振った方がホストの邪魔をしないとか?
それとも、OSが賢くやってくれるからどうやったって問題なし?
1VMをコア1,3,5,7みたいな離れた振り方しても問題なし?(好奇心による興味)

宜しくお願い致します。

0 Kudos
kawaman
Leadership
Leadership

CPU Affinity を設定して Core を固定する場合、
対象 VM は指定した Core しか利用しなくなりますので、例えばホスト OS 側のプロセスが対象 Core を利用したり、他の VM が対象 Core を利用しているタイミングでは CPU 待ちが発生します(逆に対象 VM が CPU を掴んでいる時は他の VM やホスト OS 側は別 Core を利用する)

3つのVMを、それぞれ1~4、5~8、9~12と先頭のコアから振り分けて良いものでしょうか?
> または後半から割り振った方がホストの邪魔をしないとか?

ホスト OS 側がどの Core を使うかは制御できないので、特に Workstation Pro 以外の何らかのソフトウェアもホスト側で動かしている場合にはそれらが通常どのあたりのコアを利用しているかなど、偏りがあるような場合は予めそこを避けて CPU Affinity を設定するのが良いかと思います。

1VMをコア1,3,5,7みたいな離れた振り方しても問題なし?

コアの割当自体は順にする必要はないはずですが、Hyper Threading が有効な場合は見た目上 vCPU として割り当てられるスレッドは1つの物理コアから2つずつ割り当てられるので、

Processor0 = "TRUE"
Processor1 = "TRUE"

などのように2つずつ組みで有効に設定してあげるのが良いかと思います。
上記なら 1つ目のコアの2つのスレッドを割り当てる設定になるはずです。

ただ、Alder Lake 以降では P-Core は Hyper Threading 有り、E-Core が Hyper Threading 無しとなっているので、1つの VM の中は P-Core と E-Core を跨がないように割り当ててあげる必要がありそうです。
※ こちらでは全コア割当を試しているコメントもあるのでそれらを試してみるのも有りかもしれません https://communities.vmware.com/t5/VMware-Workstation-Pro/Workstation-16pro-on-alder-lake-system/td-p...

 

 

0 Kudos