В Wine интегрирована поддержка ntsync для повышения производительности игр

В кодовую базу Wine, на основе которой через неделю будет сформирован выпуск 10.15, добавлена поддержка драйвера ntsync, позволяющего существенно поднять производительность Windows-игр, запускаемых при помощи Wine. Драйвер входит в состав ядра Linux начиная с выпуска 6.14 и реализует символьное устройство /dev/ntsync и набор примитивов для синхронизации, применяемых в ядре Windows NT.

Значительный прирост производительности достигается благодаря избавлению от накладных расходов, связанных с применением RPC в пространстве пользователя. Например, при использовании драйвера ntsync по сравнению с реализацией примитивов синхронизации NT в пространстве пользователя максимальный FPS в игре Dirt 3 увеличился на 678%, в игре Resident Evil 2 — на 196%, Tiny Tina’s Wonderlands — на 177%, Lara Croft: Temple of Osiris — на 131%, Call of Juarez — на 125%, The Crew — на 96%, Forza Horizon 5 — на 48%, Anger Foot — на 43%.

Для задействования оптимизированных примитивов синхронизации в Wine необходимо включить модуль ядра ntsync, который отключён по умолчанию. Для активации можно добавить файл конфигурации /etc/modules-load.d/ntsync.conf, содержащий строку «ntsync» и перезапустить систему или вручную загрузить модуль командой «sudo modprobe ntsync». Для работы требуется как минимум ядро Linux 6.14.

Чтобы убедиться, что ntsync действительно работает, необходимо что-нибудь запустить в Wine. Например, достаточно выполнить команду «winecfg», после чего запустить «lsof /dev/ntsync» и убедиться, что в выводе присутствуют процессы wine, использующие ntsync. Например:


   $ lsof /dev/ntsync

   COMMAND      PID USER FD   TYPE DEVICE SIZE/OFF NODE NAME
   start.exe 658466 user 12r   CHR 10,260      0t0  630 /dev/ntsync
   services. 658474 user 11r   CHR 10,260      0t0  630 /dev/ntsync
   explorer. 658484 user 11r   CHR 10,260      0t0  630 /dev/ntsync
   winedevic 658499 user 10r   CHR 10,260      0t0  630 /dev/ntsync
   svchost.e 658552 user 10r   CHR 10,260      0t0  630 /dev/ntsync
   plugplay. 658557 user 10r   CHR 10,260      0t0  630 /dev/ntsync
   winedevic 658605 user 10r   CHR 10,260      0t0  630 /dev/ntsync
   conhost.e 658623 user 11r   CHR 10,260      0t0  630 /dev/ntsync
   winecfg.e 658625 user 11r   CHR 10,260      0t0  630 /dev/ntsync

Источник: http://www.opennet.ru/opennews/art.shtml?num=63830