The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

В Wine Staging добавлены патчи для повышения производительности многопоточных игр

07.04.2019 20:25

В ветку Wine Staging, включающую не полностью готовые или рискованные изменения, пока не пригодные для принятия в основную ветку Wine, добавлен набор патчей "esync" (Eventfd Synchronization), позволяющих добиться увеличения производительности многопоточных Windows игр и приложений. Патчи были подготовлены ещё летом прошлого года и используются в развиваемом компанией Valve проекте Proton, но включены в репозиторий Wine Staging только сейчас. По умолчанию esync отключен и для его активации следует установить переменную окружения WINEESYNC в значение, отличное от нуля.

Использование сборки Wine с поддержкой esync значительно снижает нагрузку на CPU в некоторых играх и позволяет добиться увеличения производительности за счёт рационального использования ресурсов многоядерных CPU и эффективного распределения процессов по ядрам CPU. Esync предлагает примитивы синхронизации, реализованные поверх Linux API eventfd, который в отличие от futexes и семафоров pthread, позволяет опросить состояние сразу нескольких объектов синхронизации.

Целью проекта является организация выполнения всех операций синхронизации в "пользовательском пространстве", без привлечения wineserver. При использовании esync почти все операции ожидания события выполняются на стороне ntdll, включая привязанные к объектам сервера. Сервер лишь создаёт файловый дескриптор eventfd и возвращает его в ntdll, а ntdll создаёт необходимый объект синхронизации и кэширует его.

Так как esync создаёт отдельный файловый дескриптор для каждого объекта, то при запуске некоторых игр может быть превышен системный лимит на число открытых файлов. В случае вывода ошибки "eventfd: Too many open files" следует увеличить число открытых файлов через изменение настройки "nofile" в /etc/security/limits.conf, /etc/systemd/system.conf или /etc/systemd/user.conf или при помощи команды "ulimit -Hn 1048576".

  1. Главная ссылка к новости (https://vk.com/multi_linux_com...)
  2. OpenNews: Выпуск проекта Wine Staging 4.0, дополняющего Wine 4.0
  3. OpenNews: Стабильный релиз Wine 4.0
  4. OpenNews: Проект Hangover для запуска Windows-приложений на системах ARM64 c Linux и Android
  5. OpenNews: Вышел WineVDM 0.7
  6. OpenNews: Выпуск Proton 4.2-1, пакета для запуска Windows-игр в Linux
Автор новости: Павел Павлов
Тип: К сведению
Ключевые слова: wine, game
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (30) Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Skullnet (?), 23:50, 07/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Долго пересобирать, будет в официальном ppa?
     
     
  • 2.2, Аноним (2), 23:56, 07/04/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Будет, начиная с Wine Staging 4.6.
     
     
  • 3.5, Skullnet (?), 01:58, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Будет, начиная с Wine Staging 4.6.

    Тогда, возможно, и соберу. Жаль нету автоматической сборки.

     
     
  • 4.14, Аноним (2), 10:58, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вот здесь есть PKGBUILD для Arch Linux с Wine Staging (git) :

    https://github.com/Tk-Glitch/PKGBUILDS

     
     
  • 5.18, Skullnet (?), 12:19, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я имею ввиду универсальную систему сборки, которая соберет текущую вертку и выплюнет .tar.bz2 с бинарником.
     
     
  • 6.23, Аноним (2), 13:38, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    PKGBUILD соберёт и выплюнет сразу пакет, но не в архиве. В чём разница?
     
  • 1.3, Аноним (3), 00:57, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Это хорошо. А то я думал, как бы грамотнее его "впилить" в openSUSE. У нас и так уже wine, wine-staging, wine-nine и wine-staging-nine. В Staging это добавлять, или отдельный wine-staging-esync-nine? Теперь всё норм )
     
     
  • 2.4, axredneck (?), 01:56, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Nine можно и отдельным пакетом сделать:
    https://github.com/iXit/wine-nine-standalone
     
     
  • 3.35, J.L. (?), 15:44, 10/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Nine можно и отдельным пакетом сделать:
    > https://github.com/iXit/wine-nine-standalone

    а в winetricks такое не запилят? (не проверял)
    я посмотрел - там d3d9-nine.dll + ninewinecfg.exe
    > $ protontricks <APPID> galliumnine

     
     
  • 4.36, J.L. (?), 09:23, 11/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> Nine можно и отдельным пакетом сделать:
    >> https://github.com/iXit/wine-nine-standalone
    > а в winetricks такое не запилят? (не проверял)
    > я посмотрел - там d3d9-nine.dll + ninewinecfg.exe
    >> $ protontricks <APPID> galliumnine

    судя по этому - нужна версия winetricks посвежее чем в 18.10 убунте
    https://github.com/Winetricks/winetricks
    > w_metadata galliumnine03 dlls \
    >     title="Gallium Nine Standalone (v0.3)" \

     
     
  • 5.37, J.L. (?), 12:08, 12/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > судя по этому - нужна версия winetricks посвежее чем в 18.10 убунте
    > https://github.com/Winetricks/winetricks
    >> w_metadata galliumnine03 dlls \
    >>     title="Gallium Nine Standalone (v0.3)" \

    у меня в итоге автоматом не установилось
    с вебархива пыталось скачать, но вебархив говорил что нет такого файла, скачал руками с гитхаба релизник галиумнайна, назвал как ему хотелось
    после пыталось скачать в файл с ".../http/://..." в имени (что преобразуется в кучу папок) - создал файл подобрав имена папок под эту ересь - опять скачал тот же с гитхаба релизник галиумнайна и сохранил под этим именем (не понял зачем второй раз)
    после осилило установить

    игорь жив, зелёная строчка галиумнайна в логе присутствует, вайн4.5, убунта18.10

    но вайнпрефикс брал с уже включенным в конфиге найном, не знаю как будет на свежем надо ли его включать как-то

     
  • 1.7, Аноним (7), 06:24, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вайн в последнее время развивается просто ударными темпами. Кто-то подкинул денег из корпораций?
     
     
  • 2.8, пох (?), 07:03, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    больше полугода на мерж готового патча без изменений и исправлений, и то в staging и в отключенном виде - это "ударными темпами"?

    хотя для wine... да, пожалуй.

     
     
  • 3.13, Аноним (13), 10:53, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    не мержат потому что кривоват by-design: https://github.com/zfigura/wine/issues/18
     
     
  • 4.15, пох (?), 11:28, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    "а что у нас - прямое?"(c)верблюд
     
  • 4.21, Аноним (21), 13:17, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А кто такой zfigura?
     
     
  • 5.32, Андрей (??), 23:10, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Zebediah Figura. Без малого 4 года коммитит в Wine.
     
  • 5.34, Аноним (2), 10:02, 09/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Zebediah Figura - это один из двух мейнтейнеров Wine Staging.
     
  • 2.9, Аноним (9), 08:23, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Proton же. Там esync с первого выпуска https://www.opennet.ru/opennews/art.shtml?num=49164
     
  • 2.11, Аноним (11), 10:39, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сам Вайн не особо развивается. Тащат наработки Протона, хотя по тупой причине некоторые пилят сами(аналог DXVK).
     
  • 2.25, Аноньчек (?), 14:31, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Valve платит за банкет. Наняли на постоянную работу ребят из CodeWeavers, как минимум одного из них.
     
  • 1.10, Аноним (10), 09:07, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >По умолчанию esync отключен и для его активации следует установить переменную окружения WINEESYNC в значение, отличное от нуля.

    А что не в winecfg?

     
     
  • 2.12, Аноним (2), 10:51, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, в winecfg нет возможности это включить. Не исключено, что такая возможность появится когда-либо в будущем, но пока что не сейчас...
     
  • 1.16, Аноним (16), 11:44, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Так как esync создаёт отдельный файловый дескриптор для каждого объекта

    много я в жизни костылей видел, но чтобы такое...

     
     
  • 2.17, Аноним (17), 11:52, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Решение радует ещё больше: мы придумали ввести никому не нужное ограничение на число дескрипторов и написали код, который плодит их триллиардами. Если у вас ошибка, вспомните об этом и увеличьте число дескрипторов. Самая важная информация которую нужно помнить...
     
  • 2.28, Лёня (?), 15:27, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно запихнуть в systemd-unit ваши лимиты.
     
  • 1.24, commiethebeastie (ok), 14:20, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даешь производительность выше венды
     
  • 1.26, Аноним (26), 15:13, 08/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ, в PlayOnLinux надо [будет] какие-то дополнительные манипуляции делать? Ну, само собой, кроме скачивания 4.6+_staging через их интерфейс. Лезть в конфигурацию Wine и прописывать или там оно уже обычно само? Подскажите, если знаете.
     
     
  • 2.29, Kron4ek (ok), 15:45, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нужно будет прописать переменную WINEESYNC=1 для включения ESYNC, так как он по умолчанию выключен.

    Может со временем сделают отдельную галку для включения ESYNC, как сделано в Lutris (https://bit.ly/2uTuHwM).

     
     
  • 3.31, Аноним (26), 18:50, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:


    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру
    Hosting by Ihor