.. | ||
40-surface-power.rules | ||
50-surface.conf | ||
README.md | ||
thermal-conf.xml.auto.cool | ||
thermal-conf.xml.auto.mobile | ||
thermal-conf.xml.auto.performance | ||
thermal-cpu-cdev-order.xml | ||
thermald.service |
thermald configuration tweaked for Surface Pro 5
- thermald configuration starting point: https://github.com/intel/dptfxtract
- by default it uses sensor "GEN4", which is for the NVME drive, not good.
- pch_skylake is a better choice here.
- Takes care of
surface profile set {low-power|performance}
on power supply events. - Restarts thermald on power events to load corresponding thermal profiles.
- There are 3 thermal profiles here:
thermal-conf.xml.auto.performance
: activated on AC power. Runs at peak performance (~25watts) until reaching 60 degrees. Stabilized at ~15watts under heavy load.thermal-conf.xml.auto.mobile
: activated on battery. Throttles early for ~15watts. Throttles to ~8watts for heavy load. Try to keep the device cool.thermal-conf.xml.auto.cool
: reserved.
Basically, we are just using RAPL here to throttle the power (in watts), not the frequency of the CPU, and it's more fine-grained and aligned with our thermal targets.
See 40-surface-power.rules for more details on how to obtain info about sensors and cooling devices.
Bonus
40-surface-power.rules also contains power-related tweaks for:
surface profile
: currently low-power vs. performance- Various PCIe powersaving strategies
- Intel p-state control for turbo-boost
50-surface.conf contains sysctl tweaks advised by powertop
.
Installation
- Make sure to install
surface-control
- Install
40-surface-power.rules
to/usr/lib/udev/rules.d/
- Install
thermal-conf.xml*
to/etc/thermald/
thermal-conf.xml.auto
will be linked dynamically by the udev rule file.
- Install
thermal-cpu-cdev-order.xml
to/etc/thermald/
- Install
thermald.service
to/lib/systemd/system/
and overwrite the old one.- Maybe install to
/usr/lib/systemd/system/
too.
- Maybe install to
- Install
50-surface.conf
to/etc/sysctl.d/
systemctl daemon-reload
systemctl restart udev
systemctl restart thermald