-
Notifications
You must be signed in to change notification settings - Fork 12
Performance Modes
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 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, 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).