Увеличиваем производительность Steam и игр в Linux
В некоторых дистрибутивах GNU/Linux клиент Steam и многие игры могут «тормозить», т.е. работать слишком медленно. Это происходит из-за того, что в большинстве дистрибутивов ядро собрано с поддержкой модуля cpufreq, который снижает частоту процессора до минимально допустимой в угоду снижения энергопотребления.
Данный модуль часто некорректно определяет момент запуска игры и не разгоняет процессор до оптимальной частоты, из-за чего в играх начинаются фризы. В данной статье мы рассмотрим простой и надёжный способ увеличения производительности.
Скрипт увеличения производительности
Данный простой bash-скрипт отключает все режимы энергосбережения процессора и заставляет его работать на максимальной рабочей частоте (разгон не осуществляется, поэтому риск выхода из строя отсутствует):
Запуск скрипта в системе
Для запуска скрипта сохраните его в файл например в домашний каталог с именем perfinc.sh, выдайте право на запуск и собственно запустите с правами суперпользователя (root).
Выдача прав скрипту с именем perfinc.sh, находящемся в домашнем каталоге (
) пользователя (выполняется только один раз после создания файла):
Для запуска скрипта выполните в терминале (только после того, как выдадите право на запуск):
Производительность процессора увеличится немедленно. Действие будет выполнено сразу для всех доступных ядер CPU. Если скрипт запущен без прав суперпользователя, вы получите сообщение об ошибке «Отказано в доступе».
Внимание! Скрипт действует только до перезагрузки системы. После рестарта снова будет активирован энергосберегающий режим.
Настройка автоматического запуска
Если вам нужно увеличивать производительность CPU постоянно, то добавьте строки из данного скрипта в системный инит-скрипт rc.local. Для продолжения проверьте существует ли файл rc.local.
Внимание! Расположение файла rc.local зависит от дистрибутива (используйте правильный во всех командах):
- Fedora, CentOS, RHEL — /etc/rc.d/rc.local (используется в нашем примере);
- Ubuntu — /etc/rc.local;
- openSUSE — /etc/init.d/boot.local;
- Arch — /etc/rc.local;
- Gentoo — /etc/conf.d/local.start;
Если файл уже существует, то просто добавьте строчки 3-6 из нашего примера perfinc.sh в него и сохраните изменения:
Если же файл не существует, то сперва создадим его:
Выдадим ему нужные права:
Теперь добавим всё содержимое нашего примера perfinc.sh в rc.local:
Заключение
Таким способом мы увеличили производительность системы. Все действия вы выполняете только на свой страх и риск. Мы не несём никакой ответственности за возможные повреждения системы или оборудования.
11 комментариев к записи
Спасибо, помогло! Испытывал на Asus n550jv в Linux Mint с WarThunder. Было 25 FPS в ангаре, стало 65, в полете в среднем от 30 до 40.
отлично, вкупе с настрйкой драйверов дало очень большой прирост. L4D2 заработал круче чем в винде, стабильные 40, без фризов и провисаний. В Доте разницы не заметил, но там, возможно надо еще что-то подкрутить. Intel hd3000
Возможно, что я не по теме сейчас напишу, но более близкой статьи не нашел.
Хотел бы поделиться с пользователями еще одним советом по улучшению производительности в играх. Он касается работы проприетарного драйвера Nvidia.
Как всем известно, адекватная работа вертикальной синхронизации в играх может частенько давать прирост производительности. По умолчанию, при базовой настройке через nvidia-xconfig, тройная буферизация не задействована. Чтобы включить эту функцию, надо отредактировать /etc/X11/xorg.conf и внести в Section «Device» следующую строку:
С поддержкой этой функции можно будет полноценно задействовать опцию Vsync в играх. В той же DotA 2, Borderlands 2 или Alien: Isolation удавалось добиться хорошего прироста.
И еще, касательно команды nvidia-xconfig, несколько слов.
Если планируется устанавливать на последнюю версию дистрибутива Fedora драйвера Nvidia из RPMFusion, то строго не рекомендую применять команду nvidia-xconfig. Это может сделать невозможным старт графической системы. Созданный этой командой xorg.conf лучше переименовать и разместить таким образом:
А напоследок я скажу, что есть еще определенные подводные камни с дисплейным менеджером GDM в рабочем окружении GNOME Shell. Дело в том, что проприетарные драйвера Nvidia пока не работают с Wayland. И чтобы графическая система нормально запустилась, необходимо перевести GDM на использование X11. Делается это путем редактирования /etc/gdm/custom.conf и соответственно снятием комментария с WaylandEnable=false.
Ну и, конечно же, не могу пройти мимо еще одного достоинства функции тройной буферизации на Nvidia. В рабочих окружениях KDE и GNOME она способна избавить от тиринга.
@FrancoDelille
Проприетарные драйверы NVIDIA последних версий стали настолько кривыми, что вызывают регулярные падения многих приложений и особенно оконных менеджеров.
Кстати, в современных дистрибутивах файл xorg.conf не используется.
Vitaly :
@FrancoDelille
Проприетарные драйверы NVIDIA последних версий стали настолько кривыми, что вызывают регулярные падения многих приложений и особенно оконных менеджеров.
Кстати, в современных дистрибутивах файл xorg.conf не используется.
Кривые, но на одном Nouveau далеко не уехать. Печально, но факт. Хотя, конечно, все еще зависит от потребностей самого пользователя.
А с xorg.conf ситуация складывается не совсем правильная. nvidia-xconfig неплохо было бы разработчикам драйвера настроить таким образом, чтобы он размещал все не в /etc/X11/xorg.conf, а именно в /etc/X11/xorg.conf.d/20-nvidia.conf. Все таки ситуации бывают такие, взять ту же тройную буферизацию, что необходимо что-то задействовать. А тут был бы уже готовый конфиг, без лишних телодвижений через nano отредактировал, да и делов!
Кривые, но на одном Nouveau далеко не уехать. Печально, но факт. Хотя, конечно, все еще зависит от потребностей самого пользователя.
Это да. Оконный менеджер из состава KDE Frameworks 5 например падает раз в десять чаще при использовании Nouveau.
А с xorg.conf ситуация складывается не совсем правильная. nvidia-xconfig неплохо было бы разработчикам драйвера настроить таким образом, чтобы он размещал все не в /etc/X11/xorg.conf, а именно в /etc/X11/xorg.conf.d/20-nvidia.conf. Все таки ситуации бывают такие, взять ту же тройную буферизацию, что необходимо что-то задействовать. А тут был бы уже готовый конфиг, без лишних телодвижений через nano отредактировал, да и делов!
Никто этим заниматься не станет, т.к. конфиги Xorg давно объявлены устаревшими и не поддерживаемыми во всех современных дистрибутивах.
@Vitaly
С конфигурацией xorg.conf стойкая привычка сложилась. По старинке со времен использования старых версий Ubuntu и Debian. Я ж ведь еще с тройной буферизацией завязан без конца из-за тиринга и V-Sync в играх. Поэтому мне без этого трудно обходиться. Единственное, теперь уже просто в Section «Device» пару-тройку строчек нужных вывожу и все это бросаю в /etc/X11/xorg.conf.d/.
спасибо, помогли, а то хитман подлагивал, хоть и комп дофига мощный, а теперь все идеально, как на винде
Спасибо огромное! После запуска скрипта указанного в инструкции на этом сайте, произошёл большой прирост производительности ! Спасибо огромное! Обычно не оставляю комментарии на сайтах, но сейчас был готов даже здесь зарегистрироваться для того чтобы это сделать!)
(p.s. регистрация чтобы оставлять комментарии на этом сайте не понадобилась)
Тупо лайк!
У меня не получается. Можете помочь, пожалуйста?
Сначала хотелось бы узнать, какой дистрибутив установлен на устройстве?
Блог начинающего линуксоида.
советы, руководства, инструкции.
Страницы
пятница, 4 декабря 2015 г.
Как увеличить производительность игр в Linux
В данной заметке я опишу 5 способов увеличения производительности игр в Linux. Особенно это будет актуально для «виндовых» игр, запущенных в Wine.
1) Свежие драйвера на видеокарту
Первый и самый очевидный способ. В свежие версии драйверов и компонентов графического стека, вносятся новые оптимизации, устраняются недоработки и так далее. Для Ubuntu есть несколько замечательных репозиториев, которые предоставляют свежие графические драйверы:
Самый популярный PPA-репозиторий со свежайшим графическим стеком. Соответственно, используете вы его на свой страх и риск, так как в нём нет ничего стабильного. В этом репозитории находятся свежие версии Xorg, Mesa, свободных графических драйверов и так далее. Подключение:
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update && sudo apt-get upgrade
В этом репозитории находятся более стабильные, но одновременно свежие версии свободных графических драйверов, которые также имеют поддержку Wine Gallium-Nine и многое многое другое. Подключение:
sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt-get update && sudo apt-get upgrade
Proprietary GPU Drivers
Данный репозиторий — новичок, но настоящий must have для всех, у кого видеокарта Nvidia. Здесь находятся самые свежие версии проприетарного драйвера для этих видеокарт. Подключение:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
Далее откройте менеджер драйверов, и там выберите желаемую версию драйвера
2) Установка патченого ядра.
В некоторых ситуациях, увеличить производительность игр, помогает установка модифицированного ядра. К примеру ядро Linux-RT (ядро реального времени), на моей конфигурации. дало мне прибавку в 12 FPS в некоторых играх. Данное ядро есть в стандартных репозиториях Ubuntu, и ставится командой:
sudo apt install linux-image-rt
Также положительный эффект могут дать ядра PF-Kernel и Zen-Kernel, о которых я говорил в недавней заметке.
3) Потоковая оптимизация (только для Nvidia с проприетарным драйвером).
Nvidia — лучший друг Линуксоида, когда речь заходит о 3D и играх. И начиная с драйвера версии 310, в нём появилась возможность серьёзно увеличить производительность, включив многопоточный рендеринг. По умолчанию данная опция не включена, так как есть приложения, которые не работают с ней (например игра Metro Last Light). Включить эту опцию можно следующими способами:
- Вручную: в терминале командой export __GL_THREADED_OPTIMIZATIONS=1 ;
- Автоматически при запуске системы: открыть файл /etc/profile и в конец вставить строку __GL_THREADED_OPTIMIZATIONS=1 ;
- Запускать приложение с этим параметром: например __GL_THREADED_OPTIMIZATIONS=1 steam , либо в самом Steam указать данную опцию в параметрах запуска игры: __GL_THREADED_OPIMIZATIONS=1 %command%
Прирост производительности составляет от 15 до 45 кадров в секунду, в зависимости от игры. Пригодится для Wine. Кстати о Wine. В Winetricks очень желательно выставить опцию GLSL в значение Disabled.
4) Запуск в отдельном X-сервере (или в отдельных иксах).
Это давний способ увеличить производительность игры, а также решить проблему со сворачиванием игры (не все они нормально сворачиваются, некоторые перестают работать. В прочем, для Windows проблема также актуальна). Для этого:
sudo nano /etc/X11/Xwrapper.config
Меняем параметр allowed_users=console на allowed_users=anybody и сохраняем. Это нужно для того, чтобы можно было запускать X-сервер от пользователя, а не root. Далее необходимо добавить себя в группу audio, иначе звука в отдельных иксах не будет:
usermod -G audio -a имяпользователя
Далее редактируем файл
/.Xauthority, для этого в консоли:
xauth
list
Увидим что-то вроде
blind.local:0 MIT-MAGIC-COOKIE-1 e087ead1f80cd5d35b6bd273222d1feb
[fe80::204:61ff:fe9e:c083]:0 MIT-MAGIC-COOKIE-1 e087ead1f80cd5d35b6bd273222d1feb
blind/unix:0 MIT-MAGIC-COOKIE-1 e087ead1f80cd5d35b6bd273222d1feb
Буквенно-цифровое окончание будет другим.
Пишем там же, вставив своё значение:
add :1.0 MIT-MAGIC-COOKIE-1 e087ead1f80cd5d35b6bd273222d1feb
Запуск производится следующей командой:
xinit /путь/до/исполняемого/файла/игры $* — :1
Например: xinit /usr/games/steam $* — :1
Запустится отдельная сессия X, и запустится указанное приложение. Переключение обратно в режим рабочего стола производится комбинацией Ctrl+Alt+F7, вторые иксы будут (в моём случае) на F2. Альтернативный вариант: переключиться на любую свободную консоль (F1-F6), залогиниться, и запустить приложение командой:
startx /путь/до/исполняемого/файла/игры — :1
Однако такой способ неудобен тем, что в случае если игра имеет лаунчер, или какие-то дополнительные окна при запуске, будут проблемы с их отрисовкой. Да и запускать это всё руками как-то муторно. Исправить эту проблему поможет любой легковесный оконный менеджер. Например Openbox. Устанавливаем:
sudo apt install openbox
Теперь создаём файл:
у вас запустится оконный менеджер Openbox, из которого вы уже можете запустить любое приложение. Если вы хотите, чтобы например Steam стартовал автоматически при запуске Openbox, сделайте так:
Сохраните. Теперь Стим будет запускаться автоматически, а вы можете легко перключаться между сеансами. ВНИМАНИЕ: у себя в KDE на Debian 8, я обнаружил баг, при котором после перехода в основные иксы и обратно на дополнительные, появлялись сильнешие графические артефакты в некоторых играх, а сам Стим отрисовывался кусками. Способа решения проблемы я не нашёл. Если вы знаете — напишите в комментариях, я добавлю в статью.
Соответственно, вместо Steam, вы можете добавить PlayOnLinux, если запускаете виндовые игры через него
5) Отключение графических эффектов (композитинга) для полноэкранных приложений.
Если вы используете KDE или Cinnamon, рекомендую отключить полноэкранный композитинг. В KDE: Параметры системы — Эффекты — Дополнительно — Поставить галочку на «Отключить графические эффекты для полноэкранных окон»
Для Cinnamon: Настройки — Общие — Отключить композитинг для полноэкранных окон
Вот и всё. Конечно это не избавит от проблемы кривых портов игр. Там уже вина разработчика игры. Но тем не менее, всё описанное здесь, неоднократно проверено и даёт весьма нехилый прирост производительности. Приятных игр!


