cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
brendanhoar
Punch Card
Posts: 32
Registered: ‎01-02-2014
Location: US
Views: 878
Message 31 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

Yes, Lenovo please consider investigating this issue!

Why are the thermal targets set differently (and maintained by the firmware differently) if virtualization is enabled in the BIOS? Perhaps this is just an issue of insufficient testing of thermal improvements in the BIOS?

I could see the case where thermal defaults were very conservative early in the BIOS development cycle, Lenovo then made several improvements to thermal settings over time, but the virtualization support flag(s) being set may lead to an inadvertant bypass of the code path that implements these improvements...

Let us know.

Thanks
A heavy user of virtualization

nbevans
Paper Tape
Posts: 4
Registered: ‎02-27-2019
Location: GB
Views: 872
Message 32 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

It seems quite obvious to me what the issue is. When the Hyper-V hypervisor is enabled there is no direct access to the CPU anymore - not even for the "host OS". Lenovo have forgotten this and their software widget (Lenovo Vantage from what I've read?) was not designed with an appropriate kernel driver to workaround this when the Hyper-V is enabled. It is possible (I am not a kernel developer) that it is actually not possible to do this when the hypervisor on Windows is enabled - or it might take an inordinate amount of work to achieve it. In this case Lenovo will need (or may choose) to issue a firmware fix that sets the default thermal limit to 100c instead of 80c. Thus removing the need for the Lenovo Vantage widget to uncap it through software - which as we know is not working when the hypervisor is enabled.

prv8
Fanfold Paper
Posts: 7
Registered: ‎02-19-2019
Location: US
Views: 833
Message 33 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

I would highly recommend anyone who cares about virtualization and performance to hold off on purchasing this laptop. The throttling is significant, even simple operations like opening a browser have a noticeable delay due to the throttling.

 

Support has not been able to help, I've spent hours on the phone, and the only things they can suggest are:

 * Reinstall Windows

 * Replace the motherboard

 

There's no way to escalate to the team that owns the BIOS or firmware, and my escalation request ended with "You should chat to Premium Support". Given how much this laptop costs, I'm not interested in spending MORE money to talk to someone about their laptop not working as intended (and I doubt it'll help resolve this issued based on my experience so far).

 

Do not buy this laptop if you care about virtualization, unless this issue is fixed. I am very disappointed with the support I've received, it's just been a waste of time. I'm better off writing my own kernel drivers than waiting for Lenovo.

nbevans
Paper Tape
Posts: 4
Registered: ‎02-27-2019
Location: GB
Views: 829
Message 34 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

Okay that pretty much sealed it for us then. We did have a large order priced up with Lenovo UK this week but we will absolutely hold off now until there is at least a promise of a fix from Lenovo.

mnylen
Punch Card
Posts: 37
Registered: ‎11-30-2018
Location: FI
Views: 793
Message 35 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

I gotta counter by saying the performance for me isn't that bad when on AC power. For me, this virtualization/Hyper-V throttling just slows down heavy tasks such as compiling large codebases. It's noticeable on those tasks compared to without Hyper-V, but on normal use (web browsing, mail, etc.) it doesn't feel sluggish at all, especially in the discrete graphcis only mode.

 

However, on battery power the story is different. Without tweaking, it's down right unusable. On Windows "best performance" setting, you'll hardly get 700 out of Cinebench and you get noticeable delays opening tabs etc. - the CPU runs at 800 MHz and boosts up when needed. I guess this is to save battery, but unfortunately the boost doesn't happen fast enough to be transparent to the user.

 

I've found three remedies for the performance on battery power:

 

- In ThrottleStop, enable 'Speed Shift - EPP' with a value of 32. This will make the clocks stay higher at all times. This is the biggest improvement I've been able to make.

 

- Using 'Best Battery' mode instead of 'Best Performance' is actually ~20-30% faster. I suspect Hyper-V might be messing with something here too?

 

- Discrete graphcics only. Windows animations are more smooth.

 

I've also changed the BIOS setting for battery to be performance instead of balanced. But I didn't see any improvement when doing that.

 

Of course with all these and the 4K display, the battery runs out in about two hours. But at least you can do some stretches of couch coding without lugging around the charger.

 

 

mnylen
Punch Card
Posts: 37
Registered: ‎11-30-2018
Location: FI
Views: 714
Message 36 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

So. I got a reply from Intel:

 

"This behavior is expected and it is related to node capacity while using Hyper-V. There are three possible thresholds for node fairness. This is called the “Aggressiveness” of Node Fairness. The possible thresholds are as follows with their values: 1) Low: Either metric must be consumed to at least 80% of the node’s capacity 2) Medium: Either metric must be consumed to at least 70% of the node’s capacity 3) High: Either metric must be consumed to at least 60% of the node’s capacity."

 

I'm not knowledgeable enough to decipher that answer and why exactly it would cause thermal throttling (as opposed to e.g. a MHz limit), but I've asked for clarification.

 

In the meantime, I found pretty workable solution for running Docker without Hyper-V using the Docker Toolbox. It relies on a VirtualBox VM to run the docker and you just point the cli tools from WSL to the docker machine running in VirtualBox:

 

1. Disable Hyper-V, enable virtualization from BIOS

2. Install Docker Toolbox for Windows

3. Using the Kitematic app, launch the VM.

4. For the volume mounts to work: change mount root to / in /etc/wsl.conf (so instead of /mnt/c you have /c). This afaik needs a sign out/in cycle.

5. In .bashrc/.zshrc:

 

 

export DOCKER_TOOLBOX_INSTALL_PATH='/c/Program Files/Docker Toolbox' # or wherever you installed it
eval $($DOCKER_TOOLBOX_INSTALL_PATH/docker-machine.exe env --shell bash | sed 's/C:/\/c/' | sed 's/\\/\//g' | sed 's:#.*$::g' | sed 's/"//g' )
6. Install docker cli and docker-compose to WSL (likely, if you've used Docker for Windows with WSL previously, you've done this already).

 

7. Now docker ps etc. commands should work

8. Note, the docker machine doesn't seem to start automatically, so you need to manually launch it after restarting the computer or when signing out and then back in.

 

The downside of using this is any ports you bind won't be accessible through localhost, but via the VMs IP address. So if you run docker run -p 8080:80 nginx and would want to access the server from browser, you would need to find the ip address of the docker machine (using '$DOCKER_TOOLBOX_INSTALL_PATH/docker-machine.exe ip' command) and then use 'http://DOCKERMACHINEIP:8080' in browser to access the server.

 

However, if you want to keep the localhost address, you can do that, but you need to manually forward the ports via `VBoxManage.exe`. You can add these to your .bashrc/.zshrc too:

 

 

export VBOX_INSTALL_PATH='/c/Program Files/Oracle/VirtualBox' # or wherever it got installed

# NOTE: These expect that the docker vm is named 'default', change accordingly if your vm has different name
function docker-forward-port() { local port=$1 $VBOX_INSTALL_PATH/VBoxManage.exe controlvm "default" natpf1 "tcp-port$port,tcp,127.0.0.1,$port,,$port" } function docker-unforward-port() { local port=$1 $VBOX_INSTALL_PATH/VBoxManage.exe controlvm "default" natpf1 delete "tcp-port$port" }
Now, with these, you can just run 'docker-forward-port 8080' to forward localhost:8080 to dockermachine:8080. When you're done, you can invoke 'docker-unforward-port' to remove the port forward.

 

 

Hopefully this helps someone who is forced to use Hyper-V just because of Docker. Of course, this is not as solid as the Docker for Windows, but in my initial testing it seems to be good enough.

mnylen
Punch Card
Posts: 37
Registered: ‎11-30-2018
Location: FI
Views: 709
Message 37 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

Also, again after disabling Hyper-V, my thermal throttling limit went back to 100 C. I also got a confirmation that my battery power related issues were likely Hyper-V's fault: "Best Performance" started to be more performant again when Hyper-V was disabled and "Best Battery" seemed to perform worse, as expected. With Hyper-V enabled these profiles were the opposite: best battery gave the best results.

 

I had to uncheck 'BD PROCHOT' from ThrottleStop on battery power though or otherwise the CPU seemed to be stuck in 800 MHz. The 'Speed Shift - EPP: 32' setting wasn't needed anymore though.

 

Highlighted
nbevans
Paper Tape
Posts: 4
Registered: ‎02-27-2019
Location: GB
Views: 691
Message 38 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

The Node Fairness seems like a wool pulling attempt to me. But here's an interesting article about it: https://www.altaro.com/hyper-v/node-fairness-hyper-v-2016/

 

There is a PowerShell section at the bottom where you can try turning Node Fairness off entirely.

 

I'm 99.9% sure it is a wild goose chase though. Because Node Fairness is all about load and failover distribution amongst a cluster of Hyper-V hosts.

spocko
SCSI Port
Posts: 29
Registered: ‎10-11-2018
Location: US
Views: 510
Message 39 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

Has anyone heard any new info about this issue? It would be nice to know if this is something that Lenovo intends to change.

 

I have confirmed the same behavior on my P1, even with the latest bios version 1.19. If Hyper-V is enabled, the CPU throttles at 80c. If Hyper-V is disabled, then it throttles at about 100C. The Cinebench R15 CPU benchmark shows about 10% performace reduction when Hyper-V is enabled.

kaz911
Punch Card
Posts: 38
Registered: ‎05-24-2010
Location: GB
Views: 382
Message 40 of 46

Re: X1E X1 Extreme throttles at 80C with BIOS Virtualization On

No - to be honest I dont think Lenovo cares much. They are more focused on bringing out the next gen than actually making the P1/X1e into real portable workstations.

 

 


P51/P70/X1 Carbon Gen 3/W540/Helix/W520/W510/W700ds/X41t/X60t/X61t/T61p

Check out current deals!


Shop current deals

Top Kudoed Authors