GameMode — небольшой демон от Feral Interactive, который на время запуска игры переводит систему в режим повышенной отзывчивости: поднимает приоритет процесса, меняет governor процессора, отключает хранитель экрана и при необходимости трогает настройки GPU. Границы возможностей стоит понимать сразу: сам по себе GameMode не добавляет кадров. Он убирает помехи, из-за которых кадры проваливаются неравномерно, — фоновые задачи, агрессивное энергосбережение, засыпание экрана во время длинной кат-сцены. Ниже — установка, запуск, настройка и проверка того, что профиль действительно применился, а не остался красивой галочкой в лаунчере.

Что именно меняет демон

Клиентская библиотека libgamemodeauto.so подгружается в процесс игры через LD_PRELOAD и сообщает демону о старте. Демон слушает сессионную шину D-Bus и применяет профиль, а после выхода игры возвращает прежние значения. Профиль состоит из трёх групп: общие параметры, процессор и GPU. Общие отвечают за приоритет планировщика, запрет гашения экрана и отключение проверки split lock. Группа CPU задаёт governor и привязку потоков к физическим ядрам. Группа GPU включается отдельно и только после явного подтверждения ответственности.

Смена governor — операция глобальная: она влияет на всю машину. Здесь же чаще всего возникает конфликт с демоном энергопрофилей из Linux Mint и Ubuntu.

Установка и самопроверка

Пакет gamemode есть в репозиториях Debian, Ubuntu, Mint, Fedora и Arch. После установки демон обычно поднимается по требованию через D-Bus, поэтому статус inactive до первого запуска игры — нормальное явление. Самопроверка gamemoded -t прогоняет набор тестов и печатает, какие возможности доступны в текущем окружении: приоритет, governor, soft realtime, работа с GPU.

sudo apt install gamemode
systemctl --user status gamemoded
gamemoded -s
gamemoded -t

Команда -s показывает, активен ли профиль и какие клиенты к нему подключены. Если в ответе есть ошибка соединения с шиной, проверьте, что вы работаете в графической сессии, а не в ssh-терминале без loginctl enable-linger. Пропущенные тесты часто означают не поломку, а отсутствие интерфейса: на виртуальной машине может не быть управления частотой CPU.

Запуск игры

В Steam достаточно открыть свойства игры, найти поле параметров запуска и написать gamemoderun %command%. Lutris включает режим в разделе системных настроек игры, Heroic — в настройках конкретной игры. Для сборок вне лаунчеров команда запуска выглядит обычным префиксом. Проверить механику без игры удобно симулятором нагрузки: он держит профиль десять секунд и печатает состояние.

gamemoderun %command%
gamemoderun ./MyGame.x86_64
gamemode-simulate-game

Если игра запускается через промежуточный скрипт, следите, чтобы он не очищал окружение: некоторые обёртки выставляют env -i, и LD_PRELOAD теряется. Тогда gamemoderun ставят самой внешней командой.

Настройка gamemode.ini

Шаблон конфигурации лежит в /usr/share/gamemode/gamemode.ini, пользовательская копия читается из ~/.config/gamemode.ini и имеет приоритет. Правка системного файла переживёт не каждое обновление пакета, поэтому лучше держать свои значения в домашнем каталоге. Ниже рабочий пример с комментариями по смыслу параметров.

[general]
renice = 10
desiredgov = performance
softrealtime = auto
inhibit_screensaver = 1
disable_splitlock = 1

[cpu]
pin_cores = yes

[gpu]
apply_gpu_optimisations = accept-responsibility
gpu_device = 0
amd_performance_level = high
nv_powermizer_mode = 1

renice задаёт приоритет процесса: положительное значение означает уступку другим задачам, отрицательное — повышение. softrealtime в режиме auto пытается включить мягкое планирование реального времени, если ядро и права это позволяют. pin_cores привязывает потоки к физическим ядрам, обходя пары SMT, что иногда снижает разброс времени кадра. Блок GPU требует строки accept-responsibility: без неё он просто игнорируется, и это защита от случайной смены режима питания видеокарты.

Governor и конфликт с демоном профилей

Смена governor — самая заметная часть работы GameMode, и самая конфликтная. Демон энергопрофилей power-profiles-daemon тоже управляет режимом CPU и может вернуть balanced через несколько секунд после старта игры. Сначала смотрим фактическое состояние, а не предполагаемое.

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powerprofilesctl get
powerprofilesctl list
systemctl status power-profiles-daemon

Если профиль остаётся balanced, вариантов три: переключить питание на performance вручную перед игрой, отключить демон профилей (на ноутбуке это заметно сократит автономность) или убрать desiredgov из конфигурации, сохранив приоритет и остальные пункты. На процессорах AMD с драйвером amd-pstate поведение зависит от режима /sys/devices/system/cpu/amd_pstate/status, и запись в scaling_governor может не дать ожидаемого эффекта.

Диагностика: применился ли профиль

Достаточно трёх срезов: статус демона, приоритет процесса и текущий governor. Приоритет удобно смотреть через ps с колонками ni и cls: если значение осталось нулевым, клиент не подключился, и дальше искать нужно не в конфиге, а в способе запуска.

gamemoded -s
pgrep -a -f MyGame
ps -o pid,ni,cls,rtprio,comm -p $(pgrep -n -f MyGame)
journalctl --user -u gamemoded -b --no-pager | tail -30

В журнале видно, какие параметры демон применил и какие не смог. Строки про невозможность записать governor почти всегда указывают на конфликт с другим демоном или на отсутствие нужного драйвера частоты. Отдельно проверьте, не запущена ли игра в песочнице Flatpak или Snap: внешний gamemoderun до процесса внутри песочницы не достанет, поддержка должна быть включена в самом пакете.

Типичные ошибки

  • Ожидание прироста среднего FPS. GameMode выравнивает время кадра и убирает фризы, но не ускоряет рендеринг.
  • Правка системного ini при наличии пользовательского: значения из домашнего каталога перекрывают системные.
  • Запуск через обёртку, которая сбрасывает окружение и теряет LD_PRELOAD.
  • Игра на батарее с лимитом мощности: смена governor не обойдёт ограничение адаптера питания.
  • Включение блока GPU без проверки температуры и стабильности: максимальный режим питания видеокарты повышает нагрев.

Чек-лист перед игровым вечером

  • Пакет установлен, gamemoded -s отвечает без ошибок.
  • gamemoded -t не показывает пропусков по нужным вам возможностям.
  • В параметрах запуска стоит gamemoderun %command%.
  • Известно, какой демон управляет питанием, и конфликт устранён осознанно.
  • После старта игры ni у процесса отличается от нуля, governor совпадает с ожидаемым.

Итог

GameMode — это не ускоритель, а дирижёр: он снимает фоновое давление и не даёт системе уйти в спящий режим посреди игровой сессии. Настройка занимает один конфигурационный файл, а вся польза проявляется только при честной проверке через ps, gamemoded -s и чтение governor. Если после этих шагов профиль не применяется, проблема почти всегда в способе запуска или в конфликте с демоном энергопрофилей, а не в самом пакете.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте