GameMode
GameMode is a daemon and library combo for Linux that allows games to request a set of optimisations be temporarily applied to the host OS and/or a game process.
Installation
Install gamemode and lib32-gamemode.
Add yourself to the gamemode
user group. Without it, the GameMode user daemon will not have rights to change CPU governor or the niceness of processes.
Configuration
GameMode is configured via the following files, which are read and then merged in the following order:
/etc/gamemode.ini
for system-wide configuration;$XDG_CONFIG_HOME/gamemode.ini
for user-local configuration;./gamemode.ini
for directory-local configuration.
/usr/share/gamemode/gamemode.ini
should not be created by users, as it's reserved for manual configuration by package maintainers. See file-hierarchy(7) for more details.Renicing
GameMode can optionally adjust the priority of game processes (see renice(1)) to beyond the regular user lower limit of 0
.
This is controlled by the following configuration option:
[general] renice=0
Unlike renicing a process with the renice
command, GameMode uses a positive value and negates it before applying it to the process, ie, a value of 10
will renice the game process to -10
.
Overclocking
GameMode can optionally overclock your GPU when it is running, but requires special configuration on part of the user.
Independently of the used GPU, the apply_gpu_optimizations
and gpu_device
configuration options must be set appropriately.
AMD
To alter the performance level of AMD GPUs, overclocking must be manually enabled, and the amd_performance_level
configuration option must be set.
NVIDIA
To alter the performance level of NVIDIA GPUs, overclocking must be manually enabled, and the nv_powermizer_mode
, nv_core_clock_mhz_offset
, and the nv_mem_clock_mhz_offset
configuration options must be set.
Usage
Test configuration
Verify if the settings in the configuration file are working:
$ gamemoded -t
Run a single game
To run a game with GameMode start it like this:
$ gamemoderun ./game
Use with MangoHud
See MangoHud#Use with GameMode
Verify that GameMode is running
When you have started your game you can verify that GameMode is running with the command:
$ gamemoded -s
Run a single Steam game
To make Steam start a game with GameMode, right click the game in the Library, select Properties..., then in the Launch Options text box enter:
gamemoderun %command%
Run Steam with GameMode
To avoid having to change launch options for all Steam games, you may launch Steam directly with GameMode:
$ gamemoderun steam-runtime
The downside of this approach is that GameMode will be running for as long as the Steam process is open, instead of only when a game is opened.
Troubleshooting
Renicing fails when set to less than -10
By default, GameMode provides PAM limits that allow changing the scheduling priority up to a maximum of -10. If the renice
setting in the configuration file is set to an unsupported value, renicing of the process will fail entirely.
You can adjust the requested value or adjust the maximum scheduling priority GameMode can set by editing /etc/security/limits.d/10-gamemode.conf
. The example below configures -19 as the maximum scheduling priority GameMode can set:
/etc/security/limits.d/10-gamemode.conf
@gamemode - nice -19