Skip to content

Performance Modes

Maximilian Luz edited this page Oct 27, 2021 · 5 revisions

The performance-mode/performance profile controls the power-management strategy. It is currently unclear what exactly this includes, but one aspect is the fan-profile: On the default performance-mode it can happen that the dGPU (and possibly also CPU in models with a CPU fan) cannot reach it's full potential due to the fans not ramping up appropriately. Setting a higher performance-mode solves this problem.

On v5.13+

On recent (v5.13+) kernels, the performance profile is controlled via the ACPI platform profile interface. This can, for example, be changed with by the power-profiles-daemon in use by Gnome. Alternatively, you can also us the surface-control command line utility by running

surface profile set <profile>

where the available profiles can be listed via surface profile list. See surface profile --help for more information.

The profiles map to Windows modes as follows:

Name (Linux) Name (Windows) Notes
low-power Battery Saver Only accessible on Windows when AC disconnected.
balanced Recommended Default mode.
balanced-performance Better Performance
performance Best Performance

On older kernels

On older kernels, you need to run

surface performance set <mode>

where the numeric mode-value (1-4) is described below. Alternatively, the performance-mode can also be accessed via the perf_mode sysfs attribute on the MSHW0107 platform device, i.e. it can be set via

echo <mode> | sudo tee /sys/bus/surface_aggregator/devices/01:03:01:00:01/perf_mode

where <mode> is the numeric value of the mode you want to set. Reading from this attribute will return the current mode.

Valid performance-modes are:

Value Name (Windows) Notes
1 Recommended Default mode.
2 Battery Saver Only accessible on Windows when AC disconnected.
3 Better Performance
4 Best Performance

You can also set the initial performance-mode (being applied when the module is loaded) using the perf_mode_init module-parameter, as well as the state being applied when it is unloaded using the perf_mode_exit parameter. In both cases, the special value of 0 will keep the performance-state as-is (this is the default behavior).

Clone this wiki locally