пятница, 11 декабря 2015 г.

SteamOS: действительно ли медленнее Windows?

В сети активно ползут утверждения, что SteamOS значительно медленнее Windows, в частности Windows 10. Однако те тесты, вызывают много сомнений. Например были выставлены не оптимальные настройки графики, и много чего ещё. Поэтому я решил провести собственные тесты и выяснить, насколько SteamOS медленнее Windows в играх, и что именно этому способствует.


Для тех кто не в теме, напоминаю. SteamOS - это игровой дистрибутив от компании Valve (создателя таких культовых игр, как Dota 2, Half-Life, Counter Strike, Portal, Left4Dead, а также самой крупной и популярной платформой распространения игр Steam), основанный на Debian и ориентированный на игровые системы Steam Machines. Данный дистрибутив состоит из следующих компонентов:

  • Ядро Linux 4.1, с патчами для увеличения игровой производительности, а также патчами для работы в режиме реального времени и AUFS;
  • Клиент Steam, такой же как в любом другом дистрибутиве Linux;
  • Отдельную сессию Steam Big Picture, которая загружается по умолчанию в качестве графического окружения;
  • steamos-compositor - композитный менеджер, основанный на Xcompmgr, созданный для бесшовного перехода между играми, Steam BigPicture и окружением рабочего стола;
  • steamos-modeswitch-inhibitor - небольшой костыль, который разворачивает все игровые окна (например лаунчеры) на весь экран. Дело в том, что без него, в режиме BigPicture, при запуске такой игры с лаунчером, Steam сворачивается и на экране появляется окно этого лаунчера. Ингибитор решает эту проблему;
  • steamos-base-files - файлы, специфичные для SteamOS. Здесь содержатся скрипты автоматической отправки багрепортов, перезапуска Steam в случае ошибки, пара скриптов, специфичных для Alienware Steam Machine, пара юнитов для systemd (задания crony для периодической проверки обновлений), правила udev для правильного определения некоторых устройств ввода (которые могут определяться как геймпад и толком не работать. Правда, моей мыши A4 Tech X7 тут нет, потому пришлось дописывать самому), а также пара конфигов для драйвера nvidia и кое-какие мелочи. Именно этот пакет обеспечивает саму суть SteamOS;
  • Системные компоненты Debian 8, а также наиболее свежие видеодрайверы. Плюс куча драйверов для перефирийных устройств. Заработает всё.
  • Графическое окружение GNOME 3.14 (правда сильно покоцанное).

Итак, давайте проверим, правда ли SteamOS весьма медленна в играх, при чём в сравнении не только с Windows, но и с другими дистрибутивами Linux. Я, к сожалению, не располагаю крутыми мощностями для игровых тестов. Но это не особо важно, так как нам нужно просто узнать разницу в производительности. Железо у нас будет такое:

  • Процессор: Intel Core i3-550 3.2 ГГц;
  • ОЗУ: 8 Гб DDR3-1333 МГц;
  • Видеокарта: Nvidia GTX 460 1 Гб.

Операционные системы для тестов:

  • Windows 10 Professional 64-bit (драйвер Nvidia 359.00);
  • SteamOS 2 (ядро 4.1, драйвер Nvidia 352.55);
  • Ubuntu 15.10 (ядро 4.2, драйвер 352.55);
  • Debian 8 (ядро 4.1, драйвер Nvidia 340.93);
  • Manjaro 15.12 (ядро 4.1, драйвер 355.11).

Игры для теста:

  • Metro Last Light Redux;
  • War Thunder;
  • Borderlands 2;
  • Dota 2.

Настройки графики для всех игр высокие (не максимальные).

Итак, результаты первых тестов:







Что мы видим? Для War Thunder, SteamOS - это самая худшая система. FPS неиграбельный, происходят дикие лаги, особенно в танковых сражениях. В Metro Last Light и Borderlands 2 все дистрибутивы, кроме SteamOS показали примерно одинаковую производительность с Windows. А вот Dota 2 удивила. Впрочем, подобные результаты уже были, многие наверняка знают о них. Новая Dota 2 построена на базе движка Source 2, который очень хорошо оптимизирован под Linux. Поэтому мы видим значительное превосходство в производительности на Linux. Но почему же SteamOS оказалась такой медленной?

Первой же фразой, которая всплыла у меня в голове, было "Полноэкранный композитинг". Дело в том, что для многих полноэкранных приложений, крайне желательно  отключать графические эффекты и композицию, иначе могут быть проблемы с производительностью и прочее. У меня эта привычка была выработана давно, и у себя в Debian 8 KDE, композитинг для полноэкранных приложений был отключён. Но стоило мне его включить, как я получил практически то же самое снижение FPS, как и в SteamOS! И тут я решил проверить, не вина ли это графического окружения GNOME, ведь там композитинг неотключаемый. Первое время, мне казалось, что это полностью вина GNOME. Я установил чистый Debian 8 с ним, поставил Стим и снова провёл эти тесты. Но....производительность была такой же, как и везде. Никакой разницы не было. Далее я запустил Steam в режиме BigPicture. И вот тут уже FPS в War Thunder у меня упал примерно на 7 кадров в секунду. Двигаясь в этом направлении, я установил steamos-compositor и steamos-modeswitch-inhibitor, зашёл в сессию SteamOS BigPicture, и....производительность уровня SteamOS. Вывод очевиден - виноват композитинг, который не отключается в steamos-compositor. Именно из-за этого и получился парадокс, что дистрибутив, который специально затачивается под игры, является самым худшим для игр. Будем надеяться, Valve исправит эту проблему, хотя окончательное решение проблемы придёт только с полной поддержкой Wayland как в графических окружениях, так и в драйвере Nvidia.

Виновника снижения FPS мы обнаружили. Но давайте посмотрим, насколько их "оптимизированное для игр" ядро, увеличивает производительность. Установив его в Debian, я провёл ещё раз все тесты. Прирост FPS составил около 3-5 кадров в секунду. Это ни о чём, но вот отзывчивость геймпада, на мой взгляд, несколько возросла. Плюс общая отзывчивость системы. Что не мудрено, ибо у SteamOS lowlatency-ядро. Но в остальном никакой разницы между другими дистрибутивами нет. Компоненты одинаковые для любого дистрибутива. Просто собираются по-разному.

В следующей статье я опишу способы избавиться от такого недостатка SteamOS, а также напишу как собрать свою собственную SteamOS на базе Ubuntu или Debian. Также рекомендую к прочтению статью об увеличении производительности игр в Linux. Жду ваших комментариев.



8 комментариев:

  1. Когда я установил самую первую бету SteamOS, все игры в нём работали хорошо. Linux 3.10, NVIDIA 331.20. В тот момент ещё не было поддержки не-NVIDIA, и даже поддержки звука! Я доустановил ALSA, обновил один иксовый компонент для поддержки NVIDIA PRIME, и настроил этот самый PRIME, и пропатчил ядро для исправления бага "GPU has fallen the bus": https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=commit/?id=74b51ee152b6d99e61ba329799a039453fb9438f. Всё работало замечательно!

    А потом мне пришло обновление, которое обвалило Wi-Fi. Я переустановил систему. Мне всё равно было необходимо это сделать, потому что репозитории Debian и SteamOS очень конфликтовали! Потом это исправилось то ли само, то ли я как-то заморочился, вник в проблему, настроил и забыл.

    Ну что ж, Wi-Fi обвалился всё равно (но хоть иерархию пакетов починил). Зато сделали видео для всех вендоров, и звук! Но теперь установка драйвера NVIDIA из RUN-файла стала невозможной: инсталлятор прерывает свою работу, увидев пакеты из дистра. А пакеты из дистра если снёс - они быстренько сами установятся. Что бы я ни делал! Запускал apt-get и не нажимал Y/n, блокируя установку новых пакетов. Затем втыкал сетевой кабель, и они всё равно устанавливались! Особенно было "весело", когда в репозитории появлялось новое ядро, в котором не наложен патч. Я блокирую версию пакета в Synaptic - но системе пофиг, ядро обновляется!

    Решил переименовыванием файла /usr/bin/steamos-updater.

    Заработал звук. Но через пульсу. Отключаю пульсу - звука нет. Проверяю наличие пользователя в группе audio - всё есть. Проверяю конфиги ALSA - всё в норме. Делаю "cd /dev/snd && sudo chown -R desktop:users ./" - звук появляется.

    Всё заработало хорошо! Единственная проблема - теперь я боюсь обновляться. До релиза SteamOS 2.0 так и е обновил

    ОтветитьУдалить
    Ответы
    1. Мне кстати тоже показалось, что первая SteamOS работала лучше. Если у вас всё работает сейчас - то немного потерпите с обновлением. Пока поддержка Alchemist не кончилась, обновления будут приходить.

      Удалить
  2. А какую Оболочку вы в manjaro использовали при тестах

    ОтветитьУдалить
  3. А кто выиграл в тестах

    ОтветитьУдалить
    Ответы
    1. В данных тестах Debian и Manjaro примерно одинаково себя показали, но манжаро будет впереди из-за всегда свежего ядра и драйверов.

      Удалить
  4. Какой Debian вы использовали? Release или Testing?

    ОтветитьУдалить