93 lines
3.2 KiB
Plaintext
93 lines
3.2 KiB
Plaintext
---
|
|
layout: default
|
|
title: Cooling down ThinkPad P1 gen 5
|
|
date: 2023-11-17 21:58 +0100
|
|
tags: ThinkPad
|
|
---
|
|
P1 heats up considerably, even when running on battery. This makes it unpleasant
|
|
to hold on your lap, puts stress on NVME drives, and even causes the keyboard
|
|
keys to get hot.
|
|
|
|
h2. Power off discrete GPU
|
|
|
|
* "Hybrid graphics - Archlinux wiki":https://wiki.archlinux.org/title/Hybrid_graphics#Fully_Power_Down_Discrete_GPU
|
|
* "optimus-switch - Github":https://github.com/dglt1/optimus-switch
|
|
* "Intel - Gentoo wiki":https://wiki.gentoo.org/wiki/Intel
|
|
* "Intel graphics - Archlinux wiki":https://wiki.archlinux.org/title/intel_graphics
|
|
|
|
It's impossible to turn off Nvidia GPU through BIOS. Energy consumption of
|
|
discrete GPU can be monitored with:
|
|
|
|
{% highlight bash %}
|
|
nvidia-smi
|
|
{% endhighlight %}
|
|
|
|
In reality the above value (4W on battery, 5W on AC in desktop environment) seems to be
|
|
underestimation. Powering off the dGPU using steps below changes energy
|
|
consumption reported by @powertop@ from *24W before* to *16W after* on battery.
|
|
|
|
# Make sure kernel driver for Intel GPU is compiled (@DRM_I915@).
|
|
|
|
#_ Remove _/etc/modprobe.d/nvidia.conf_ if present.
|
|
|
|
#_ Blacklist @nvidia@ kernel modules and configure @i915@ appropriately.
|
|
|
|
{% highlight file caption=/etc/modprobe.d/intel.conf %}
|
|
blacklist nouveau
|
|
blacklist ttm
|
|
install nvidia /bin/false
|
|
install nvidia-modeset /bin/false
|
|
install nvidia-peermem /bin/false
|
|
install nvidia-drm /bin/false
|
|
install nvidia-uvm /bin/false
|
|
|
|
# Stops display from "blinking" or "flashing"
|
|
# during boot when using the intel driver.
|
|
options i915 enable_fbc=1
|
|
options i915 fastboot=1
|
|
{% endhighlight %}
|
|
|
|
#_ Configure _xorg_ to use Intel device with @modesetting@ driver
|
|
(@xf86-video-intel@ is outdated and does not suppot hardware acceleration on
|
|
newer GPU models). Use @lspci@ to find bus ID of Intel GPU.
|
|
|
|
{% highlight file caption=/etc/X11/xorg.conf.d/20intel.conf %}
|
|
Section "Device"
|
|
Identifier "Intel Graphics"
|
|
Driver "modesetting"
|
|
BusID "PCI:0:2:0"
|
|
#Option "AccelMethod" "glamor" # default
|
|
#Option "TearFree" "true"
|
|
EndSection
|
|
{% endhighlight %}
|
|
|
|
#_ Power off Nvidia PCI device on every boot using _udev_ rules.
|
|
|
|
{% highlight file caption=/etc/udev/rules.d/00-nvidia-remove.rules %}
|
|
# Remove NVIDIA USB xHCI Host Controller devices, if present
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA USB Type-C UCSI devices, if present
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA Audio devices, if present
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA VGA/3D controller devices
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
{% endhighlight %}
|
|
|
|
#_ Regenerate _initramfs_ and reboot.
|
|
|
|
{% highlight bash %}
|
|
genkernel initramfs
|
|
reboot
|
|
{% endhighlight %}
|
|
|
|
|
|
h2. Limit CPU/platform/integrated GPU energy usage with @tlp@
|
|
|
|
Active seetings can be verified using:
|
|
* @tlp-stat -p@ for CPU and platform,
|
|
* @tlp-stat -g@ for iGPU
|