事象
- Intel Coreシリーズ12世代以降で、ARM big.LITTLEのようなP-Core及びE-Coreを持つ環境において、vmware-vmx.exeがE-coreしか使わない問題
- Windows 10/11どちらでも再現する模様で、VMware Workstationの問題(Limitation)っぽいが、VMware Workstation 17でも修正されていない。仕様なのか?
回避策
- Workaroundはいくつかある。C案が一番最適なので採用。
回避策(A)
- Administratorで起動していると再現しない。全コア使う。
- 検証環境でも無い限りLocal Administratorでログインすることはないので、個人PCでは非採用
回避策(B)
- 各VMの設定ファイル(.vmx)にCPU affinityを指定する方法
- CPU thread単位で(Core単位ではない) P-coreから順番に0から割り当てられているため、最後の番号からE-coreの合計thread数だけFalseにしてやる
Core i7-12700 (E-core x4 + P-core x8 = E-core 4 thread + P-core 16 thread)の例
Processor0.use = "TRUE"
Processor1.use = "TRUE"
Processor2.use = "TRUE"
Processor3.use = "TRUE"
Processor4.use = "TRUE"
Processor5.use = "TRUE"
Processor6.use = "TRUE"
Processor7.use = "TRUE"
Processor8.use = "TRUE"
Processor9.use = "TRUE"
Processor10.use = "TRUE"
Processor11.use = "TRUE"
Processor12.use = "TRUE"
Processor13.use = "TRUE"
Processor14.use = "TRUE"
Processor15.use = "TRUE"
processor16.use= "FALSE"
processor17.use= "FALSE"
processor18.use= "FALSE"
processor19.use= "FALSE"
- 個人PCの数台のVMですらメンドイのに、数十台管理している検証環境ではめんどくさいにも程があるため、非採用
- ついでに言うならSnapshotをRevertすると.vmxの環境もロールバックされるので使い物にならん
回避策(C)
- powercfgにてpowerthrottlingの除外プロセスに加えることで全コア使うようになる
- というか、vmware-vmx.exeが既定で有効化されているのが謎。バックグラウンド扱いか。
- コマンドプロンプトを管理者権限で起動してコマンドをぶち込む。1行目でvmware-vmx.exeを無効リストに追加し、2行目で確認している
powercfg /powerthrottling disable /path "C:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx.exe"
powercfg /powerthrottling list
- OS再起動が必要かどうかは覚えてない。vmware.exeのプロセス再起動だけでよかった気がする。
補足
- 別記事で書いたように、別ユーザでVMware workstationインスタンス (vmware.exe)を複数起動している場合、各ユーザ毎でこの設定を適用する必要がある。
- 別ユーザの権限で管理者権限昇格させるには少しコツがいる
- ローカルログオンし直してもいいが、プロファイルが作成されるのがいや
- 1行目のコマンドでまず対象ユーザの権限でcmd.exeを起動し、2行目のコマンドで別cmd.exeを管理者権限で起動させている
runas /user:vmw01 cmd
powershell -command "start-process cmd -verb runas"
powercfg /powerthrottling disable /path "C:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx.exe"
powercfg /powerthrottling list
所感
- WindowsのバグともVMwareのバグとも言い切れないなんとも微妙な事象。個人的にはLimitation (要するに放置)のニオイがする。
- そして、両者ともどちらもどうにか対応出来そうなのに、どちらも何もしない。そして割を食う利用者。まぁいいけど。
参考
https://communities.vmware.com/t5/VMware-Workstation-Pro/Workstation-16pro-on-alder-lake-system/td-p/2880327