GameMode

来自 ArchWiki

GameMode 是 Linux 的守护进程和库的组合,允许游戏请求将一组优化临时应用于主机操作系统和/或游戏进程。

安装

安装 gamemodelib32-gamemode

将您自己添加到 gamemode 用户组。 如果不这样做,GameMode 用户守护进程将没有权限更改 CPU 调速器或进程的优先级。

配置

GameMode 通过以下文件配置,这些文件按以下顺序读取和合并

  1. /etc/gamemode.ini 用于系统范围的配置;
  2. $XDG_CONFIG_HOME/gamemode.ini 用于用户本地配置;
  3. ./gamemode.ini 用于目录本地配置。
提示: 带有注释的示例配置文件可以在 FeralInteractive 的 GitHub 上找到。
注意: /usr/share/gamemode/gamemode.ini 不应由用户创建,因为它保留供软件包维护者手动配置。 有关更多详细信息,请参阅 file-hierarchy(7)

重新设置优先级

GameMode 可以选择性地将游戏进程的优先级(参见 renice(1))调整到超出常规用户的下限 0。

这由以下配置选项控制

[general]
renice=0

与使用 renice 命令重新设置进程优先级不同,GameMode 使用正值并在将其应用于进程之前对其取反,即,值 10 会将游戏进程的优先级重新设置为 -10

超频

GameMode 可以在运行时选择性地超频您的 GPU,但这需要用户进行特殊配置。

独立于使用的 GPU,apply_gpu_optimizationsgpu_device 配置选项必须正确设置。

AMD

要更改 AMD GPU 的性能级别,必须手动启用超频,并且必须设置 amd_performance_level 配置选项。

NVIDIA

要更改 NVIDIA GPU 的性能级别,必须手动启用超频,并且必须设置 nv_powermizer_modenv_core_clock_mhz_offsetnv_mem_clock_mhz_offset 配置选项。

用法

测试配置

验证配置文件中的设置是否正常工作

$ gamemoded -t

运行单个游戏

要使用 GameMode 运行游戏,请像这样启动它

$ gamemoderun ./game

与 MangoHud 一起使用

请参阅 MangoHud#Use with GameMode

验证 GameMode 正在运行

当您启动游戏后,可以使用以下命令验证 GameMode 是否正在运行

$ gamemoded -s
注意: gamemoded.service 用户单元由 dbus [1] 按需启动。

运行单个 Steam 游戏

要使 Steam 使用 GameMode 启动游戏,请在“库”中右键单击游戏,选择“属性...”,然后在“启动选项”文本框中输入

gamemoderun %command%

使用 GameMode 运行 Steam

为了避免必须更改所有 Steam 游戏的启动选项,您可以直接使用 GameMode 启动 Steam

$ gamemoderun steam-runtime

这种方法的缺点是 GameMode 将在 Steam 进程打开期间一直运行,而不仅仅是在游戏打开时运行。

故障排除

当设置为小于 -10 时,重新设置优先级失败

默认情况下,GameMode 提供 PAM 限制,允许将调度优先级更改为最多 -10。 如果配置文件中的 renice 设置设置为不支持的值,则进程的重新设置优先级将完全失败。

您可以通过编辑 /etc/security/limits.d/10-gamemode.conf 来调整请求的值或调整 GameMode 可以设置的最大调度优先级。 以下示例将 -19 配置为 GameMode 可以设置的最大调度优先级

/etc/security/limits.d/10-gamemode.conf
@gamemode - nice -19