ほんのささいなこと

調べたことや思ったこと。Google先生に聞いて10分で解決できなかった問題とか。

VMware Workstation (vmware-vmx.exe) がE-Coreしか使わない問題

事象

  • 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