We have observed Lenovo laptops with nvidia graphics losing performance after they have been in use for a few minutes. While we have not been able to pinpoint exactly what triggered the performance loss, we have found it mostly correlated with high load or during video calls (i.e. GPU usage), possibly related to temperature sensors picking up rising temps.
What happens is that the CPU clock falls to e.g. 400 MHz and will stay there, rendering the system unusable. This problem can be mitigated by usingon affected systems.
We have so far found this fix necessary and tested it on
To get a good overview about load, cpu frequency, temperature sensors, etc. we foundquite useful. It's included in Ubuntu's default repositories:
$ sudo apt install s-tui $ s-tui
While it's possible to run
s-tui as root for even more information and optionally also make use of
stress for benchmarking, those methods did not provide any additional useful information for the current problem.
For this fix to work it's necessary to disable secure boot on the affected laptop. This cannot be avoided by providing a machine owner key (MOK) since it's not about signed kernel images or modules but rather about the tool accessing functionality which is locked down by the Kernel Lockdown that is enabled when Secure Boot is active.
To disable Secure Boot on Lenovo Laptops, access the Setup Utility.
Boot back into the regular Ubuntu system and install throttled:
$ sudo apt install git build-essential python3-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev python3-cairo-dev python3-venv python3-wheel $ git clone https://github.com/erpalma/throttled.git $ sudo ./throttled/install.sh
, you should also disable
$ sudo systemctl stop thermald.service $ sudo systemctl disable thermald.service $ sudo systemctl mask thermald.service
After installing throttled, reboot your systemd and make sure the
lenovo_fix service is running:
$ sudo systemctl status throttled ● lenovo_fix.service - Stop Intel throttling Loaded: loaded (/etc/systemd/system/lenovo_fix.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-05-18 13:13:15 CEST; 1 day 1h ago Main PID: 1454 (python3) Tasks: 2 (limit: 37987) Memory: 16.6M CGroup: /system.slice/lenovo_fix.service └─1454 /opt/lenovo_fix/venv/bin/python3 /opt/lenovo_fix/lenovo_fix.py Mai 18 13:13:15 ThinkPad-P14s-Gen-1 systemd: Started Stop Intel throttling. Mai 18 13:13:15 ThinkPad-P14s-Gen-1 python3: [I] Detected CPU architecture: Intel Comet Lake-U Mai 18 13:13:15 ThinkPad-P14s-Gen-1 python3: [I] Trying to unlock MSR allow_writes. Mai 18 13:13:15 ThinkPad-P14s-Gen-1 python3: [I] Loading config file. Mai 18 13:13:15 ThinkPad-P14s-Gen-1 python3: [I] Starting main loop.