Инструкция по оптимизации Steam Deck

Инструкция по оптимизации Steam Deck

Steam Deck База Знаний

Еще больше инструкций и гайдов в нашей группе Steam Deck База Знаний

Содержание

Рекомендации по программному обеспечению для Steam Deck 

Steam Deck оптимизация

Рекомендуемое программное обеспечение

Вернуться к содержанию

Следующее программное обеспечение отлично работает со Steam Deck и может улучшить ваш общий игровой опыт.

CryoUtilities

Скрипты и утилиты для повышения производительности и управления хранилищем Steam Deck.

Инструкция по установке CryoUtilities

Decky Loader

Это отличное программное обеспечение, которое позволяет использовать собственные плагины в игровом режиме Steam Deck. Он может добавлять более продвинутые функции, чем стандартные возможности Steam Deck.

Инструкция по установке Decky Loader

Плагин: PowerTools для Decky Loader

PowerTools позволяет выполнять расширенную настройку оборудования Steam Decks. Это может улучшить производительность в некоторых играх поколений PS2, GC и выше.

Плагин: AutoFlatpaks для Decky Loader

AutoFlatpaks позволяет обновлять/устанавливать/управлять плоскими пакетами непосредственно из игрового режима. Например, вы можете обновить RetroDECK прямо из игрового режима.

Geekbench 6

Это кроссплатформенный тест, который измеряет производительность вашей системы одним нажатием кнопки.

Полезная утилита для тестирования процессора при Андервольтинге (Undervolt)

Инструкция по установке и использованию Geekbench 6

Steam Deck оптимизация

Вернуться к содержанию

Эти оптимизации не являются обязательными, но они могут повысить производительность на некоторых более требовательных играх и эмуляторах.

Увеличьте видеопамять до 4 ГБ

Это увеличивает объем видеопамяти в BIOS до 4 ГБ, что может улучшить работу некоторых эмуляторов.

  • Полностью выключите Steam Deck.
  • Удерживайте Power Button и Volume Up Button до тех пор, пока не услышите звуковой сигнал/вибрацию, и отпустите кнопки.
  • Нажмите на Setup Utility
  • Нажмите на Advanced
  • Сменить UMA Frame buffer Size на 4 ГБ
  • Сохранить и выйти

Установите пароль sudo

Вернуться к содержанию

Это требование для многих оптимизаций и решений, а также делает вашу колоду более безопасной. Это позволяет вам запускать команды/приложения, повышающие привилегии sudo.

  • Перейдите в Desktop Mode
  • Открыть Konsole
  • Введите passwd
  • Теперь установите новый пароль sudo.
Примечание: при вводе пароля символы в Konsole не отображаются, будьте внимательны, пароль необходимо запомнить или записать
  • После завершения вы можете закрыть терминал.

Установка CryoUtilities

Вернуться к содержанию

Для этого необходимо установить пароль sudo

Утилита создаст файл SWAP (файл подкачки) размером 16 ГБ, который может улучшить производительность некоторых игр и эмуляторов. Обратите внимание, что он займет дополнительное место на вашей Steam Deck.

  • Перейдите в Desktop Mode
  • Откройте веб-браузер и перейдите на страницу GitHub CryoUtilities
  • Нажмите на релизы
  • Загрузите последнюю cryo_utilities версию и сохраните ее на рабочем столе или в домашней папке.
  • Дважды щелкните файл, и начнется установка.
  • После завершения установки вы увидите новый значок на рабочем столе CryoUtilities
  • Нажмите на CryoUtilities
  • Нажмите на Recommended Settings
  • Все готово, можете закрыть CryoUtilities

Установка Decky Loader

Вернуться к содержанию

Decky Loader — это магазин домашних плагинов для Steam Deck. Для установки необходимо установить пароль sudo.

  • Перейдите в Desktop Mode
  • Откройте Konsole и введите:
curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh
  • Теперь Decky Loader должен быть установлен, и вы можете вернуться в Game Mode.
  • Чтобы получить доступ к Decky Loader, вам нужно всего лишь нажать кнопку Menu Button - (•••)

Удалить Decky Loader

  • Откройте Konsole и введите:
curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/uninstall.sh | sh

Decky Loader: установка Power Tools

Power Tools позволяет настраивать различные параметры производительности Steam Deck. Выбор наилучшей настройки зависит от эмулятора или даже от игры.

В игровом режиме:

  • Menu Button - (•••)
  • Заходим в Decky Loader
  • Из Магазина установите Power Tools.
  • Это добавит значок 🔌 к Menu Button - (•••) месту доступа к Power Tools.

Decky Loader: AutoFlatpaks

AutoFlatpaks позволяет управлять Flatpak пакетами, такими как RetroDECK, и обновлять их непосредственно из игрового режима.

  • Menu Button - (•••)
  • Заходим в Decky Loader
  • Из Магазина установите AutoFlatpaks

Undervolt Steam Deck

Вернуться к содержанию

Андервольт увеличивает производительность процессора за счёт понижения напряжения. Даёт заметный прирост производительности в играх и увеличение автономности устройства.

Андерволь доступен в свежих версиях биоса Steam Deck, с возможностью шага от -10 до -50

Инструкция по установке и использованию Geekbench 6

Вернуться к содержанию

  • Скачиваем утилиту Geekbench 6
  • Распаковываем скаченный архив
  • Производим первый тест без андервольта, для этого необходимо в распакованной папке запустить через ПКМ (правую кнопку мыши) файл geekbench6 и выбрать Запустить в Konsole
  • Ждем окончания теста и по завершению копируем ссылку с результатом в браузер
Результат теста без Андервольта

Понижаем напряжение на процессор (Андервольт)

Примечание: Андервольт производился после оптимизации Steam Deck
  • Выключаем Steam Deck. Заходим в биос. Удерживайте Power Button и Volume Up Button до тех пор, пока не услышите звуковой сигнал/вибрацию, и отпустите кнопки.
  • Переходим в Setup Utility, Advanced. Нас интересует CPU voltage offset и GPU voltage offset (Как показали тесты уменьшение SOS voltage offset не на что не влияет)
  • Выбираем в данных позициях -10, сохраняем настройки биос и перезагружаемся, после снова запускаем тест в Geekbench 6
-10
  • Как видим имеется прирост в производительности по 1 ядру
  • Таким методом по 1 шагу уменьшаем на -10, если устройство зависнет при тесте или будут артефакты в играх, возвращайтесь к предыдущему значению, результат насколько сильно Вы сможете уменьшить напряжение на процессор без последствий, напрямую зависит насколько Вам повезло с процессором, оставлю свои тесты ниже с окончательным результатом
-20
-30
-40
-50
  • Как видим самый оптимальный вариант в производительности в моём случае -30, дает прирост по 1 ядру +5 пунктов и по всем +99

Активация режима "performance" для ЦП при запуске

Вернуться к содержанию

Примечания - в два клика включается в PowerTools. 

О чем речь

К сожалению, даже самая новая версия SteamOS 3.5 (на момент написания) по-прежнему использует регулятор частоты ЦП под названием schedutil. Этот регулятор не является оптимальным, если вы хотите стабильное и равномерное изменение частоты кадров, так как он стал известен своим эпизодическим снижением частоты в кругах энтузиастов Linux. С другой стороны, регулятор performance делает именно то, что говорит его название: Он всегда запрашивает максимальное производительное состояние доступного ЦП, тем самым предотвращая или по крайней мере уменьшая большинство нежелательных всплесков времени кадра, которые свойственны регулятору schedutil. Источник.

Я знаю, что вы сейчас думаете, потому что я действительно могу читать ваши мысли через интернет: Но как насчет температур — не растопит ли это мой Steam Deck??? Краткий ответ: Нет, не растопит!

Немного более подробный ответ:

Все современные ЦП (включая архитектуру AMD Zen 2 в Steam Deck) имеют так называемые "состояния сна", которые позволяют ЦП почти полностью отключать отдельные части ядер при возможности, что гарантирует максимальную экономию энергии и тепла, гораздо больше, чем это могла бы сделать простая стратегия снижения частоты.

Как активировать?

Просто скопируйте и вставьте следующий блок кода целиком в Konsole (то есть не построчно, потребуется пароль sudo) и нажмите ввод:

cat << EOF | sudo tee /etc/systemd/system/cpu_performance.service

[Unit]

Description=CPU performance governor

[Service]

Type=oneshot

ExecStart=/usr/bin/cpupower frequency-set -g performance

[Install]

WantedBy=multi-user.target

EOF

sudo systemctl daemon-reload

sudo systemctl enable cpu_performance.service

Вы увидите такое:

[Unit]

Description=CPU performance governor

[Service]

Type=oneshot

ExecStart=/usr/bin/cpupower frequency-set -g performance

[Install]

WantedBy=multi-user.target

Created symlink /etc/systemd/system/multi-user.target.wants/cpu_performance.service → /etc/systemd/system/cpu_performance.service.

Значит все ок

Требуется перезагрузка Steam Deck

Для того чтобы откатить изменения:

sudo systemctl disable cpu_performance.service

Silencing the Watchdog - Отключение сторожевого таймера

Вернуться к содержанию

О чем речь

Сторожевой таймер в компьютерной терминологии - это либо аппаратное устройство, либо программное обеспечение, которое может использоваться для обнаружения и восстановления сбоев. Эти компоненты критически важны для корпоративных устройств, чтобы обеспечить их высокую доступность. Однако Steam Deck не относится к таким устройствам. Поэтому отключение сторожевых таймеров не приведет к негативным последствиям. На самом деле, это может помочь Steam Deck, избегая собственных запросов прерывания. Сторожевой таймер часто используется в системах, где требуется высокая доступность, чтобы автоматически перезапустить систему при сбое. Однако в случае с Steam Deck это может быть менее критично, и отключение таймера может снизить ненужные прерывания, что, возможно, приведет к небольшому увеличению производительности. Источник.

Как отключить Watchdog

Чтобы навсегда отключить сторожевые таймеры, просто скопируйте и вставьте следующий блок целиком в Konsole (потребуется пароль sudo):

​​sudo sed -i 's/\bGRUB_CMDLINE_LINUX_DEFAULT="\b/&nowatchdog nmi_watchdog=0 /' /etc/default/grub

sudo grub-mkconfig -o /boot/efi/EFI/steamos/grub.cfg

Вы должны увидеть:

sudo grub-mkconfig -o /boot/efi/EFI/steamos/grub.cfg

[sudo] password for deck: 

Generating grub configuration file ...

Found theme: /usr/share/grub/themes/breeze/theme.txt

Found linux image: /boot/vmlinuz-linux-neptune

Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux-neptune.img

fgrep: warning: fgrep is obsolescent; using grep -F

Warning: os-prober will not be executed to detect other bootable partitions.

Systems on them will not be added to the GRUB boot configuration.

Check GRUB_DISABLE_OS_PROBER documentation entry.

Adding boot menu entry for UEFI Firmware Settings ...

done

Значит все ок

Требуется перезагрузка Steam Deck

Откатить изменение:

sudo sed -i -e 's/nowatchdog nmi_watchdog=0 //' /etc/default/grub

sudo grub-mkconfig -o /boot/efi/EFI/steamos/grub.cfg

Снятие ограничения на блокировку памяти

Вернуться к содержанию

Эмулятор RPCS3 консоли Sony PlayStation 3 будет работать лучше

Это оптимизация, которая особенно поможет RPCS3, который является эмулятором консоли Sony PlayStation 3. На самом деле, когда вы запускаете RPCS3 из терминала в Linux, он выдаст следующее предупреждение: “Предупреждающее сообщение: Не удалось установить размер RLIMIT_MEMLOCK в 2 ГБ. Попробуйте обновить конфигурацию вашей системы.” По умолчанию ядро Linux устанавливает это конкретное значение всего лишь в 64КБ, что является максимальным объемом памяти, который ядро будет блокировать за одну операцию. И вот что один из главных разработчиков RPCS3 сказал по этому поводу: “64K - это устаревшее чрезмерно осторожное ограничение эпохи 1990-х годов”.

Хорошо, тогда давайте увеличим наш лимит до 2 ГБ, чтобы быть в тренде 2020-х годов.

Просто скопируйте и вставьте следующий блок целиком в Konsole (потребуется пароль sudo):

​​cat << EOF | sudo tee /etc/security/limits.d/memlock.conf

* hard memlock 2147484

* soft memlock 2147484

EOF

Требуется перезагрузка Steam Deck

Чтобы отменить/вернуть это изменение:

sudo rm /etc/security/limits.d/memlock.conf

Что дает

В игре God of War 3 после снятия ограничения на блокировку памяти значительно улучшилась производительность. Ранее при прочих равных возникали просадки до 20-23 кадров в секунду, а сейчас минимальное значение составляет 27 кадров в секунду.

Изменение планировщика ввода/вывода (I/O)

Вернуться к содержанию

Планировщик I/O пытается эффективно сбалансировать как производительность чтения и записи, так и временную задержку доступа к блочным устройствам, таким как NVMe SSD, eMMC-память или даже карта microSD. В SteamOS можно выбрать один из трёх планировщиков ввода/вывода. [Технически существует также вариант вообще не использовать планировщик ввода/вывода.]

По умолчанию используется mq-deadline, который является портом старого планировщика deadline из времени, когда блочная подсистема ядра Linux работала только с одной очередью, к более эффективному дизайну с множественными очередями современного Linux. Два других варианта называются bfq и kyber:

BFQ сосредоточен на обеспечении операций ввода/вывода с низкой задержкой даже при высокой нагрузке; однако такой результат достигается за счет снижения производительности, особенно при записи.

Kyber, разработанный Facebook для использования на их серверах высокого класса, имеет довольно простую структуру и мало нагружает ЦП. На практике я обнаружил, что Kyber является лучшим всеобщим решением среди трех, так как он позволяет различным устройствам хранения достигать максимальной производительности (т.е. скорости чтения и записи) при одновременно достаточно низких задержках, даже при высокой нагрузке на I/O.

Как сделать

Поэтому мы собираемся постоянно менять планировщик I/O на Kyber следующим образом (обратите внимание, что это будет работать во всех случаях, то есть для NVMe SSD, eMMC и microSD).

Просто скопируйте и вставьте следующий блок целиком в Konsole (потребуется пароль sudo):

cat << EOF | sudo tee /etc/udev/rules.d/64-ioschedulers.rules

ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="kyber"

ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="kyber"

EOF

Требуется перезагрузка Steam Deck

Для отмены/возврата этого изменения:

sudo rm /etc/udev/rules.d/64-ioschedulers.rules

Анализ

Планировщики I/O играют ключевую роль в определении производительности и отзывчивости системы, особенно в приложениях или условиях с интенсивным вводом/выводом. По умолчанию используемый в SteamOS mq-deadline подходит для большинства задач, но он может быть не самым оптимальным для конкретных приложений или оборудования. BFQ, например, может быть отличным выбором для десктопных систем или рабочих станций, где задержка является критическим фактором. Kyber, с другой стороны, кажется хорошим компромиссом между производительностью и задержкой, и, как указано, может быть особенно полезным для Steam Deck, учитывая его разнообразные устройства хранения.

Предотвращение излишнего учета времени доступа к файлам

Вернуться к содержанию

Давным-давно ядро Linux обновляло время доступа к каждому файлу каждый раз при работе с ним, что означало, что даже операция чтения немедленно приводила к операции записи, так как время доступа к соответствующему файлу должно было быть обновлено. К счастью, этот вопрос в значительной степени был решен благодаря опции relatime (относительное время доступа), которая гарантирует, что время доступа к файлу обновляется только один раз в 24 часа. Однако я говорю "в значительной степени решено", потому что каждый раз, когда создается новый файл или проходит 24 часа, операция чтения файла все равно приводит к соответствующей операции записи.

Теперь вы, возможно, спрашиваете себя: насколько дорогой может быть такая операция записи? Я думал так же, пока не увидел тесты производительности, проведенные отличным сайтом Phoronix под руководством Майкла Ларабеля. В этих тестах сравнивалась производительность Ubuntu 20.04 LTS и Pop!_OS 20.04, который, на самом деле, является производным от Ubuntu и имеет одно и то же соглашение о нумерации. Тем не менее, при рассмотрении тестов производительности ввода/вывода заметно, что Pop!_OS превосходит Ubuntu.

Ключевое отличие между обеими операционными системами заключается в использовании флага noatime в Pop!_OS, который гарантирует, что ядро Linux просто перестанет записывать время доступа к файлам. И нет, неведение учета времени доступа к файлам не вызовет никаких проблем; наоборот, это действительно поможет продлить срок службы ваших устройств хранения данных, так как это сократит износ, который операции записи вызывают на носителях на основе флеш-памяти.

Как включить

Следовательно, давайте на постоянной основе переключимся на настройку noatime, просто скопируйте и вставьте следующий блок целиком в Konsole (потребуется пароль sudo):

sudo sed -i -e '/home/s/\<defaults\>/&,noatime/' /etc/fstab

Требуется перезагрузка Steam Deck

Для отмены этого изменения:

sudo sed -i -e 's/,noatime//' /etc/fstab

Анализ:

Использование noatime может действительно привести к улучшению производительности и увеличению срока службы SSD или других флеш-устройств, так как это сокращает количество ненужных операций записи. Однако стоит учитывать, что некоторые приложения могут полагаться на времена доступа к файлам, поэтому перед внесением таких изменений стоит провести тщательное тестирование в вашей конкретной среде. Данный совет особенно актуален для систем, где производительность ввода/вывода имеет критическое значение.

Отключение Turbo Boost у процессора Steam Deck

Вернуться к содержанию

Данное решение позволит снизить нагрев и энергопотребление процессора, ценой потери некоторой производительности. Сам Steam Deck изначально форсирует частоту процессора до 3.5 ГГц, что приводит к очень сильному энергопотреблению и нагреву(непропорционально к производительности). При помощи данной инструкции ограничим частоту до 2.8 ГГц, отключив турбобуст.

ВНИМАНИЕ!

*Все команды строго исполняем в терминале(консоли), ответственность за ошибку лежит строго на Вас.
*Затрагивается только операционная система, не UEFI/BIOS. Способ безопасный для устройства(кроме может быть ОС, которую всегда можно починить или переустановить).

Отключаем турбобуст

0) Задаем пароль для рут-доступа, если до этого не делали:

passwd

1) Вводим команду для входа работы из под рута(режим администратора):

sudo su

1.1) Вводим пароль для рут доступа(исходя из пункта 0)

2) Снимаем защиту на запись системного раздела:

steamos-readonly disable

3) Вводим следующие строчки как одну команду, не по-отдельности, для создания systemd службы(!):

echo '[Unit]

Description=Disable turboboost

[Service]

Type=simple

ExecStart=/etc/acpi/disableturboboost.sh

[Install]

WantedBy=multi-user.target' > /etc/systemd/system/disableturboboost.service

4) Даем права:

chmod 755 /etc/systemd/system/disableturboboost.service

5) Создаем папку:

mkdir /etc/acpi

6) Вводим следующую команду для создания скрипта, который будет исполняться нашей службой(исполнять строку как одну команду, не поотдельности!):

echo '#!/bin/bash

echo 0 > /sys/devices/system/cpu/cpufreq/boost' > /etc/acpi/disableturboboost.sh

7) Делаем наш скрипт исполняемым:

chmod u+x /etc/acpi/disableturboboost.sh

8) Запускаем нашу службу:

systemctl enable disableturboboost.service

9) Включаем режим только чтения для системного раздела:

steamos-readonly enable

10) Обязательно перезагружаемся.

Включаем турбобуст обратно

1) Входим для работы из под рута:

sudo su

2) Снимаем защиту на запись системного раздела:

steamos-readonly disable

3) Отключаем службу

systemctl disable disableturboboost.service

4) Включаем режим только чтения для системного раздела:

steamos-readonly enable

5) Обязательно перезагружаемся.

Анализ

До

После


Report Page