LinuxRuLinux без лишней теории
Игры в Linux

NTSYNC в Linux: что меняется для игр и Wine

Редакция LinuxRu7 мин чтенияНовости

NTSYNC в Linux - драйвер ядра 6.14+, который выполняет синхронизацию Windows-программ прямо в ядре, и с Wine 11 и Proton 11 он работает автоматически. Главный эффект для игр - ровнее время кадра и меньше странных зависаний, а не чудесный рост FPS. Ниже как проверить, что NTSYNC у вас включён, и как его отключить для сравнения.

NTSYNC в Linux: что меняется для игр и Wine
Фото: Daisuke Murase, CC BY-SA 2.0, Wikimedia Commons
Содержание
  1. Что произошло
  2. Как было раньше
  3. Чего ждать
  4. Требования
  5. Сравнить самому
  6. Steam и Proton
  7. Wine и Lutris
  8. Если стало хуже
  9. Частые вопросы

Что такое NTSYNC и почему о нём заговорили

NTSYNC - драйвер ядра Linux, который реализует примитивы синхронизации Windows NT: мьютексы, семафоры и события. Создаёт устройство /dev/ntsync, через которое Wine выполняет операции ожидания прямо в ядре, без похода к отдельному процессу wineserver.

Путь к пользователям занял почти два года:

  • драйвер написала Элизабет Фигура из CodeWeavers, в основное ядро он вошёл в версии 6.14 (март 2025);
  • Wine начал использовать его в ветке разработки 10.16 осенью 2025 года;
  • Wine 11.0 в январе 2026 года стал первым стабильным выпуском с поддержкой NTSYNC;
  • Proton 11.0-1 вышел в стабильной версии 7 июля 2026 года на базе Wine 11, и NTSYNC в нём используется автоматически, если ядро его поддерживает.

Для обычных Linux-программ драйвер ничего не меняет. Он нужен только Windows-приложениям и играм, запущенным через Wine, Proton и оболочки вокруг них вроде Lutris, Bottles и Heroic.

Wineserver, esync, fsync: откуда взялась проблема

Windows-игры постоянно синхронизируют потоки: рендер ждёт физику, звук ждёт загрузчик ресурсов. В Windows это дешёвые системные вызовы. В Linux точного аналога не было, и классический Wine отправлял каждый такой запрос процессу wineserver. Тысячи переходов в секунду превращались в микрозадержки и рваный фреймтайм в многопоточных играх.

Обходные пути существовали давно, но жили вне основного Wine:

МеханизмКак работаетЧто нужноСтатус в 2026 году
wineserverвсе ожидания через отдельный процессничегозапасной вариант в любом Wine
esyncобъекты на основе eventfdвысокий лимит открытых файловв Proton 11 объявлен устаревшим
fsyncфьютексы, ожидание нескольких объектовядро с futex_waitv (5.16 и новее)остаётся в Proton как запасной путь
NTSYNCсемантика NT целиком в драйвере ядраядро 6.14+ и модуль ntsyncв основном Wine 11 и Proton 11

Esync и fsync были приближениями: они ускоряли типовые случаи, но некоторые редкие сценарии Windows API вели себя иначе, и отдельные игры из-за этого падали или зависали. NTSYNC повторяет поведение Windows точно, поэтому его приняли в основной Wine, а не держат отдельным патчем.

Что реально изменится в играх

Громкие цифры с приростом в сотни процентов, которые разошлись по новостям, получены в сравнении с обычным Wine без esync и fsync, причём на нескольких старых, сильно многопоточных играх. Пользователи Steam давно запускали игры с fsync, поэтому для них разница скромнее. Честный прогноз такой:

  • Стабильнее фреймтайм. Меньше коротких подвисаний там, где игра активно жонглирует потоками.
  • Меньше странных багов. Игры, которые падали или зависали из-за неточной эмуляции синхронизации, получают шанс заработать.
  • Обычный Wine догоняет Proton. Пользователям Lutris, Bottles и системного Wine больше не нужны сторонние сборки с fsync.
  • Средний FPS в современных играх на свежем железе меняется мало: узкое место там обычно видеокарта и драйвер.

Независимых массовых тестов на десятках игр мы не нашли, поэтому проверяйте свои: включите оверлей MangoHud и сравните график времени кадра с NTSYNC и без него.

Что нужно, чтобы NTSYNC заработал

Три условия: ядро с драйвером, загруженный модуль с доступом для пользователя и Wine или Proton, собранный с поддержкой NTSYNC.

С ядром в 2026 году проблем почти нет: Ubuntu 26.04 LTS, Fedora 44, свежий Arch и SteamOS давно на ядрах новее 6.14. Debian 13 вышел с ядром 6.12, где драйвер был ещё неполным и выключенным, так что там понадобится ядро из backports. Проверка:

uname -r
modinfo ntsync          # есть ли модуль в вашем ядре
ls -l /dev/ntsync       # есть ли устройство

Если модуль есть, а устройства нет, его просто не загрузили. Загрузите вручную и добавьте в автозагрузку:

sudo modprobe ntsync
echo ntsync | sudo tee /etc/modules-load.d/ntsync.conf

В Fedora 44 принято изменение NTSYNC-Contained: модуль подгружается через файл /usr/lib/modules-load.d/ntsync.conf, который приезжает вместе с игровыми пакетами. Свои настройки при этом кладите в /etc/modules-load.d/, а не правьте системный файл.

Права на /dev/ntsync должны позволять открыть устройство обычному пользователю. В свежих ядрах это решено по умолчанию, но на старых сборках встречались узкие права, и тогда Wine молча откатывается на медленный путь.

Если пользуетесь сторонними ядрами вроде linux-zen, XanMod или CachyOS, проверьте modinfo ntsync после каждого крупного обновления. В таких ядрах конфигурация меняется чаще, а модуль иногда собирается встроенным, и тогда modprobe ничего не покажет, хотя устройство есть.

Как честно сравнить игру с NTSYNC и без него

Субъективное ощущение плавности обманчиво, поэтому меряйте. Удобнее всего MangoHud: он рисует поверх игры FPS и график времени кадра.

# Debian, Ubuntu, Linux Mint
sudo apt install mangohud
# Fedora 44
sudo dnf install mangohud
# Arch Linux
sudo pacman -S mangohud

Дальше два прогона одной и той же сцены. В параметры запуска игры в Steam по очереди впишите:

mangohud %command%
PROTON_NO_NTSYNC=1 mangohud %command%

Смотрите не на средний FPS, а на форму графика: пики на нём и есть те самые микрофризы. Для записи в файл в MangoHud есть журнал, по умолчанию он включается сочетанием Shift+F2 (левый Shift), а потом файлы можно сравнить в любом просмотрщике CSV. Делайте по два-три прогона: первый запуск после обновления Proton часто медленнее из-за компиляции шейдеров, и это не имеет отношения к синхронизации.

Тестируйте игры, где проблема была заметна: старые проекты на собственных движках, стратегии с большим количеством юнитов, открытые миры с подгрузкой. В лёгкой инди-игре разницы вы скорее всего не увидите вообще.

Steam и Proton 11: включать ничего не нужно

В Proton 11 NTSYNC используется автоматически, если доступен /dev/ntsync. Отдельного ключа для включения нет, а в документации Proton появилась обратная переменная для отключения. Выберите версию в свойствах игры: Совместимость - Принудительно использовать Proton 11.0 или Proton Experimental.

Чтобы сравнить поведение с NTSYNC и без него, впишите в параметры запуска игры:

PROTON_NO_NTSYNC=1 %command%

Проверить, что игра действительно открыла устройство, можно во время её работы:

sudo lsof /dev/ntsync

Если в списке есть процессы игры, NTSYNC работает. Пустой вывод означает, что Proton перешёл на fsync: проверьте модуль и права. На Steam Deck поддержка появилась ещё в SteamOS 3.7.20, там всё настроено из коробки. Остальные тонкости Proton, от выбора версии до логов, собраны в статье Proton и Steam в Linux, а про особенности консоли Valve - в материале о Steam Deck.

Системный Wine, Lutris и Bottles

С Wine 11 из репозитория NTSYNC тоже включается сам, но при одном условии: пакет должен быть собран с заголовками ядра, где есть ntsync.h. В дистрибутивах со старыми заголовками сборщики иногда выпускают Wine без этой поддержки, и тогда драйвер не задействуется, даже если он загружен. Для Debian такой запрос обсуждался в баг-трекере WineHQ.

# Debian, Ubuntu (из репозитория дистрибутива или WineHQ)
sudo apt install wine
# Fedora 44
sudo dnf install wine
# Arch Linux
sudo pacman -S wine
wine --version   # нужна 11.0 или новее

В Lutris и Bottles выбирайте раннер на базе Wine 11 или свежий GE-Proton. Сборки GE-Proton поддерживали NTSYNC ещё до стабильного Proton 11, но в старых версиях его надо было включать вручную переменной, поэтому обновите раннер, а не тащите старые настройки. Общие советы по Wine, префиксам и winetricks есть в статье про запуск Windows-программ.

Если после обновления игра стала работать хуже

Такое бывает: новый механизм выявляет баги в самих играх или античитах, которые раньше маскировались. Порядок действий:

  1. Запустите игру с PROTON_NO_NTSYNC=1 %command%. Если всё вернулось, проблема в связке игры и NTSYNC.
  2. Откатитесь на Proton 10 в свойствах игры, это не трогает сохранения.
  3. Включите журнал: PROTON_LOG=1 %command% создаст файл steam-ИДЕНТИФИКАТОР.log в домашнем каталоге. Его прикладывают к отчёту в трекере Proton на GitHub.
  4. Проверьте драйвер видеокарты: подвисания после обновления часто связаны с ним, а не с синхронизацией. Помогает статья про драйвер NVIDIA.

Техническое описание интерфейса драйвера для тех, кто хочет понять, что именно делает ядро, есть в документации ядра Linux.

Частые вопросы

Нужно ли включать NTSYNC в Steam вручную?

Нет. Proton 11 использует его сам, если есть /dev/ntsync. Для отключения есть переменная PROTON_NO_NTSYNC=1.

Какое ядро нужно для NTSYNC?

Linux 6.14 или новее с модулем ntsync. Проверка: modinfo ntsync и ls -l /dev/ntsync.

Даст ли NTSYNC прирост FPS?

В некоторых многопоточных играх да, особенно по сравнению с Wine без fsync. Чаще заметна стабильность времени кадра, а средний FPS меняется мало.

Работает ли NTSYNC с обычным Wine?

Да, начиная с Wine 11, если пакет собран с поддержкой ntsync и модуль загружен.

Есть ли NTSYNC на Steam Deck?

Да, поддержка появилась в SteamOS 3.7.20.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.