New post
This commit is contained in:
parent
75f0d50d75
commit
ab99ad87ba
92
_posts/sysadm/2023-11-17-cooling-down-thinkpad-p1-gen-5.tl
Normal file
92
_posts/sysadm/2023-11-17-cooling-down-thinkpad-p1-gen-5.tl
Normal file
@ -0,0 +1,92 @@
|
||||
---
|
||||
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 hardwware 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 GPU
|
Loading…
x
Reference in New Issue
Block a user