VMware Communities
senwebtek
Contributor
Contributor

Workstation 16pro on alder lake system

Is there any information on using vmware workstation with alder lake systems? How would processor allocation between P and E cores work or is it handled automatically by the processor? I'm getting ready to build a new system and I'm trying to decide whether to go with an i7 12700k alder lake or a ryzen 5900x. Any input would be appreciated.

Labels (1)
34 Replies
harleylg
Contributor
Contributor

It seems vms only using e-cores with p-cores idle……

Here's a screenshot, my vm compiling gcc with 17 thread, and the vm is 16 cores, only e-cores are working

屏幕截图 2021-11-30 010630.png

 

Tags (1)
SeanLiuLiu
Contributor
Contributor

I have met this problem too.  I have checked the Virtual Box doesn't have the same cpu schedule issue.

It's not the linux's fault. It's not the windows 11 fault.

I still feel Workstation Pro better on my work.

Vmware developers can fix it? When? Who can help us???

So sad

Reply
0 Kudos
bluefirestorm
Champion
Champion

You could try setting processor affinity in the vmx configuration file. But this should be treated as a workaround as it is not so efficient and not optimal to be setting CPU affinity to VMs.

Using harleylg's screenshot and sample 16 vCPU VM configuration, assuming the last 8 logical CPUs are the efficiency cores, adding the following means the last 8 logical CPUs (16-23) won't be used and only Processor 0 to 15 (assuming these are the performance cores with hyperthreading) will be used by the VM.

Processor0 = "TRUE"
Processor1 = "TRUE"
Processor2 = "TRUE"
Processor3 = "TRUE"
Processor4 = "TRUE"
Processor5 = "TRUE"
Processor6 = "TRUE"
Processor7 = "TRUE"
Processor8 = "TRUE"
Processor9 = "TRUE"
Processor10 = "TRUE"
Processor11 = "TRUE"
Processor12 = "TRUE"
Processor13 = "TRUE"
Processor14 = "TRUE"
Processor15 = "TRUE"
Processor16 = "FALSE"
Processor17 = "FALSE"
Processor18 = "FALSE"
Processor19 = "FALSE"
Processor20 = "FALSE"
Processor21 = "FALSE"
Processor22 = "FALSE"
Processor23 = "FALSE"

 

harleylg
Contributor
Contributor

It works. But the correct .vmx config should use 

Processor1.use = "TRUE"
Processor2.use = "TRUE"
Processor3.use = "TRUE"
Processor0.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"
Processor20.use = "FALSE"
Processor21.use = "FALSE"
Processor22.use = "FALSE"
Processor23.use = "FALSE"

 

屏幕截图 2021-12-06 030204.png

bluefirestorm
Champion
Champion

I wrote a short Python script for that and forgot to put the .use before copy/pasting the output

Sorry about that.

I paste here the corrected code in Python

for i in range(24):
    processor = f'Processor{i}.use = "{"FALSE" if i > 15 else "TRUE"}"'
    print(processor)

Here is a bash version

#!/bin/bash

for n in {0..23}
do
if [ $n -le 15 ]
then
printf "Processor%d.use=\"TRUE\"\n" $n
else
printf "Processor%d.use=\"FALSE\"\n" $n
fi
continue
done

SeanLiuLiu
Contributor
Contributor

p-coresp-corese-corese-cores

I had done two tests. The results are obvious that adding above settings did works. But all TRUE can't be reaching our goal.

How can we using p-cores and e-cores at the same time? Guys, do you have any better ideas?

Reply
0 Kudos
Ricebucket
Contributor
Contributor

I tested this out. It seems that even if 1 efficiency core is enabled, it will not use any power cores. This means that at most I can use only 16 cores out of the system. This sucks.

Reply
0 Kudos
TimothyHuckabay
Enthusiast
Enthusiast

I have sent this to VMware's technical support:

Regarding Intel's twelfth generation (Alder Lake) and later CPUs, they have a mixture of P (Performance) and E (Efficiency) cores.  Here's the problem: Workstation 16.x and earlier does NOT recognize the distinction between those two types of cores, confuses them, and FAILS TO WORK with both types simultaneously; in other words, to boot a Workstation VM on a a host system with such a physical CPU, it is necessary to use ONLY ONE CORE in the VM—OR TO DISABLE ALL THE EFFICIENCY OR ALL THE PERFORMANCE CORES via the configuration file beforehand.  Either "workaround" results in a hobbled system, in which Workstation VMs are only able to utilize a limited number of available physical cores.  That necessarily gives AMD CPUs an advantage going forward, until VMware fixes the problem with Workstation.  So, Workstation 17.x and later needs to be fixed in terms of virtual CPU hardware, to be able to simultaneously use both P and E cores in Intel's twelvth and later generation x86 processors.

Reply
0 Kudos
SeanLiuLiu
Contributor
Contributor

Hi, guys! I'm completely sure I found a way, which can handle the issue. We can make the most of all physical cpus for Intel 12th-gen alder-lake architecture.
The following is my checked results. Please set these configurations strictly according to the first two pictures. Let's check these out!
Hope this way could help anyone who meets the same problem just like me.
Note: Seeing the more details is at https://www.bilibili.com/video/BV1G44y1g7RT?spm_id_from=333.337.search-card.all.click

step 1step 1step 2step 2the resultthe result

ipxu
Contributor
Contributor

Hi Guys, 

I'm planning for upgrading to i9 12th gen and wondering if this issue still on and VMware still did not solve it!

 

 

Reply
0 Kudos
harleylg
Contributor
Contributor

Until today, it still exists

Reply
0 Kudos
neet2user
Contributor
Contributor

FYI (´・ω・`)つ https://www.windowscentral.com/assign-specific-processor-cores-apps-windows-10

Winows Powershell startcommand.

RHEL8 latest version nice command.

Reply
0 Kudos
prefname
Contributor
Contributor

Is any of this confirmed/acknowledged/Kbed by vmware? Alder lake has been out for quite a while now, how is it possible they don't have anything to say about it?

 

I'm trying to decide between win10 and win11 host. Would prefer win10, unless win11 is less broken with respect to this.

 

Is my understanding from this thread correct that by default, vms on a win10 (21H2) host it will only use e-cores? Does this depend on the number of cores allocated to the vm?  And the only workaround is to specify affinity to only p-cores (ProcessorN.use).

 

Is it the same on win11?

 

To me the ideal would seem to be the ability to allocate p and e cores separately to VMs via the workstation UI. Then the guest OS that supports this, would know that it has X p-cores and Y e-cores and would use its own scheduling.

 

What is the alternative? If the guest is core-blind, will the host have enough info to decide where to run a guest thread?

Reply
0 Kudos
robertspelman
Contributor
Contributor

My Win11 host and Win10 guest had this issue until I manually assigned the processor core affinity in the VMX file. Now it is using 8 cores at 100% inside the guest, which is being spread between 12 cores on the host. As I'm only expecting to run this one VM that's not a problem for me.

Reply
0 Kudos
gbackulmer
Contributor
Contributor

@SeanLiuLiu:Thanks for sharing your fix! Is it possible for you to translate the preferences/options in english? I'm sorry, not able to understand the chinese(?) font/signs... Would be great!

GB

Reply
0 Kudos
harleylg
Contributor
Contributor

Just set Windows Power mode to "Best performance" will be ok

Reply
0 Kudos
gworboys
Enthusiast
Enthusiast

First, thanks for this thread, it helped me work out what was going on.

There is a second work-around: start Workstation as administrator.

Alternatively, a slightly simpler implementation of the previous advice seems to be that you can simply tell the .vmx which processors to exclude (all the others get included anyway).  So adding just these four lines worked for my i7 12700:

processor16.use= "FALSE"
processor17.use= "FALSE"
processor18.use= "FALSE"
processor19.use= "FALSE"

 

Some extra notes:

I'm using Workstation v17.0 but the notes above seem to suggest it happens on older systems too.  Host running Windows 11 22H2, mostly experimenting with Win10 guests.

I have two new almost identical systems running i7 12700 Alder Lake systems.  8 p-cores, 4 e-cores, all up 20 logical CPUs, so the e-cores are CPUs 16, 17, 18 and 19.

The only difference between the two is that one runs Workstation via Run As Administrator so that one of its VMs can access some physical drives directly.  That system has been running normally for a few days, and explicit tests appear to show that it never runs on CPUs 16..19 (or not enough to show).

The other system changes around a lot.  At first all seemed normal, but I'd come from older hardware so the CPU allocations were all 4 or less, and these seemed to work okay most of the time, or not obviously horrible.  But as soon as I tried 6 or more CPUs even just the start up time of the VM blew out to minutes and you could see top four CPUs going mad:

Wkstn as User.png

Presumably this related to the explanations above about Wkstn being locked into the e-cores and having trouble trying to switch the 6 CPU VM over just 4 CPUs.

As noted at the top, I can get rid of the problem by excluding those four CPUs, or by running Workstation as admin.

I thought I'd post this extra detail in case it helps others facing the problem - and perhaps explains why some others don't see it.

Reply
0 Kudos
mtomei
Contributor
Contributor

Just tell Windows to not "optimize" the application. With that setting the process will never be moved on e-cores when backgrounded.
Tested with W11 22H2

powercfg /powerthrottling disable /path "C:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx.exe"

 

gworboys
Enthusiast
Enthusiast

Excellent, thanks for that, it's a much better option.  Plus it's dynamic, you can change the /powerthrottling setting on the fly and it picks up straight away (so "reset" to go back to original setting, "disable" to turn off throttling, "list" to show what is configured).

It appears to be a per-user setting - so the list for administrator is different to my normal user list.

The other thing I noticed is that you can show "Power Throttling" in the Task Manager "Details" tab, but it never showed vmware-vmx.exe being throttled, regardless of this setting, and yet you could see the change in CPU load almost instantly on Process Explorer. (I never expected it to be throttled, this is a desktop system - no battery - and historically Windows didn't do throttling on desktops, not sure if/when that changed.  I wonder if having a UPS plugged in - which I do - makes any difference to what Windows decides to do in this regard?)

Reply
0 Kudos