$ cd /Система
NTSYNC: Что это такое, как оно изменит производительность Windows-игр на Linux
В марте должен состояться релиз ядра Linux 6.14, в котором будет по умолчанию включён драйвер NTSYNC. Давайте разберёмся, что это такое, и почему оно может изменить всё для игр на Linux.

В 2018 году компания Valve выпустила первую версию Proton, инструмента для запуска Windows-игр на операционных системах, основанных на Linux. Proton построен вокруг легендарного Wine, через который пользователи Linux запускают игры и приложения, изначально разработанные для Windows, ещё с 1993 года. Но в отличие от Wine, который требовал ручной настройки и не всегда работал стабильно, Proton делает всё сам и почти автоматически. Инструментарий от Valve самостоятельно применяет необходимые для лучшей работы игры библиотеки и параметры запуска, что иногда выглядит как чёрная магия. К слову, Valve работают над Proton совместно с CodeWeavers, командой, которая разрабатывает сам Wine. Как это часто бывает в мире открытого ПО, лучшие результаты достигаются сообща.
Выход SteamOS 3 в качестве операционной системы для игровой портативной ускорил развитие Proton и сильно стимулировал сообщество. Proton уже вышел за пределы экосистемы Valve и стал развиваться благодаря энтузиастами ещё быстрее. Например, появилась любительская версия Proton GE, которая включает самые последние патчи и изменения, ещё недоступные в официальных релизах, а также уникальные для этой версии возможности. Proton стал стандартом для запуска Windows-игр на Linux. Сегодня играми на Linux никого уже особо не удивишь. Как и тем, что они работают через Proton почти как на Windows, а иногда даже немного лучше.
Несмотря на такой успех Wine и Proton в последние годы, у них есть ряд серьёзных ограничений, которые пока что не дают выжать максимум из железа. Дело в том, что управление потоками в Wine и Proton осуществляется в пользовательском пространстве, но не на уровне ядра. Это создаёт дополнительные задержки и повышает нагрузку на систему, что снижает всю производительность. Это окончательно должно измениться с релизом ядра Linux 6.14, который состоится уже в марте.
В январе Линус Торвальдс принял изменения, которые содержат обновлённую версию драйвера NTSYNC. Он находился в разработке довольно давно и мог стать частью ядра ещё в версии 6.10. Но из-за ряда нерешённых проблем NTSYNC до недавних пор признавался нерабочим. В последних патчах были решены все основные проблемы, поэтому NTSYNC доберётся до пользователей уже в ближайшие месяцы.
Почему NTSYNC так важен? Дело в том, что этот драйвер реализует примитивы синхронизации Windows NT прямо в ядре Linux, что существенно снижает накладные расходы по сравнению с управлением потоками в пользовательском пространстве. Перенос всей логики в ядро позволяет повысить производительность многих игр, для которых работа с потоками была узким местом.
Разработчики NTSYNC приводят выдающиеся результаты своего тестирования. Прирост FPS благодаря NTSYNC:
- Anger Foot: с 69 FPS до 99 FPS (+43%)
- Call of Juarez: с 99.8 FPS до 224.1 FPS (+125%)
- Dirt 3: с 110.6 FPS до 860.7 FPS (+678%)
- Forza Horizon 5: с 108 FPS до 160 FPS (+48%)
- Lara Croft: Temple of Osiris: с 141 FPS до 326 FPS (+131%)
- Metro 2033: с 164.4 FPS до 199.2 FPS (+21%)
- Resident Evil 2: с 26 FPS до 77 FPS (+196%)
- The Crew: с 26 FPS до 51 FPS (+96%)
- Tiny Tina's Wonderlands: с 130 FPS до 360 FPS (+177%)
- Total War Saga: Troy: с 109 FPS до 146 FPS (+34%)
Некоторые результаты действительно впечатляют. Но следует понимать, что производительность игр даже на родной для них Windows порой очень сильно зависит от самой игры, от настроек и конфигурации системы, от драйверов и многих других факторов. Поэтому NTSYNC хоть и может существенно повысить производительность Windows-игр на Linux, но не всегда будет получаться.
Кроме того, сам факт появления NTSYNC в ядре Linux 6.14 ещё не значит автоматическое его включение в Proton и Wine. Разработчикам из Valve и CodeWears ещё предстоит доработать версии своих инструментов с учётом новых возможностей, как следует протестировать их и лишь потом сделать доступными для всех пользователей. Мы не можем знать, сколько времени уйдёт на эти процессы, но предполагаем, что как минимум месяц-другой. Ведь сложно представить, что в Valve и CodeWeavers только в январе узнали о NTSYNC и изучали его заранее, ещё в Linux 6.13, в котором NTSYNC уже поддерживался, но был отключён по умолчанию.
Внедрение NTSYNC в ядро Linux – это действительно важный шаг вперёд для Linux на десктопах. Ведь за последние годы получилось сделать главное: разорвать замкнутый круг: раньше игр и программ было мало, потому что мало пользователей, а пользователей — потому что мало игр и программ.
Proton
Wine
GIMP