В ветку Wine Staging (https://github.com/wine-staging/wine-staging/), включающую не полностью готовые или рискованные изменения, пока не пригодные для принятия в основную ветку Wine, добавлен (https://bugs.winehq.org/show_bug.cgi?id=36692#c15) набор патчей "esync (https://github.com/wine-staging/wine-staging/tree/master/pat...)" (Eventfd Synchronization), позволяющих добиться увеличения производительности многопоточных Windows игр и приложений. Патчи были подготовлены ещё летом прошлого года, но включены (https://github.com/wine-staging/wine-staging/commit/553986fd...) в репозиторий только сейчас. По умолчанию esync отключен и для его активации следует установить переменную окружения WINEESYNC в значение, отличное от нуля.Использование сборки Wine с поддержкой esync значительно снижает нагрузку на CPU в некоторых играх и позволяет добиться увеличения производительности за счёт рационального использования ресурсов многоядерных CPU и эффективного распределения процессов по ядрам CPU.
Esync предлагает примитивы синхронизации, реализованные поверх Linux API eventfd (http://man7.org/linux/man-pages/man2/eventfd.2.html), который в отличие от futexes и семафоров pthread, позволяет опросить состояние сразу нескольких объектов синхронизации.
Целью проекта является (https://github.com/zfigura/wine/blob/esync/README.esync) организация выполнения всех операций синхронизации в "пользовательском пространстве", без привлечения 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".URL: https://vk.com/multi_linux_community?w=wall-114916478_348287
Новость: https://www.opennet.me/opennews/art.shtml?num=50475
Долго пересобирать, будет в официальном ppa?
Будет, начиная с Wine Staging 4.6.
> Будет, начиная с Wine Staging 4.6.Тогда, возможно, и соберу. Жаль нету автоматической сборки.
Вот здесь есть PKGBUILD для Arch Linux с Wine Staging (git) :
Я имею ввиду универсальную систему сборки, которая соберет текущую вертку и выплюнет .tar.bz2 с бинарником.
PKGBUILD соберёт и выплюнет сразу пакет, но не в архиве. В чём разница?
Это хорошо. А то я думал, как бы грамотнее его "впилить" в openSUSE. У нас и так уже wine, wine-staging, wine-nine и wine-staging-nine. В Staging это добавлять, или отдельный wine-staging-esync-nine? Теперь всё норм )
Nine можно и отдельным пакетом сделать:
https://github.com/iXit/wine-nine-standalone
> Nine можно и отдельным пакетом сделать:
> https://github.com/iXit/wine-nine-standaloneа в winetricks такое не запилят? (не проверял)
я посмотрел - там d3d9-nine.dll + ninewinecfg.exe
> $ protontricks <APPID> galliumnine
>> 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)" \
> судя по этому - нужна версия winetricks посвежее чем в 18.10 убунте
> https://github.com/Winetricks/winetricks
>> w_metadata galliumnine03 dlls \
>> title="Gallium Nine Standalone (v0.3)" \у меня в итоге автоматом не установилось
с вебархива пыталось скачать, но вебархив говорил что нет такого файла, скачал руками с гитхаба релизник галиумнайна, назвал как ему хотелось
после пыталось скачать в файл с ".../http/://..." в имени (что преобразуется в кучу папок) - создал файл подобрав имена папок под эту ересь - опять скачал тот же с гитхаба релизник галиумнайна и сохранил под этим именем (не понял зачем второй раз)
после осилило установитьигорь жив, зелёная строчка галиумнайна в логе присутствует, вайн4.5, убунта18.10
но вайнпрефикс брал с уже включенным в конфиге найном, не знаю как будет на свежем надо ли его включать как-то
Вайн в последнее время развивается просто ударными темпами. Кто-то подкинул денег из корпораций?
больше полугода на мерж готового патча без изменений и исправлений, и то в staging и в отключенном виде - это "ударными темпами"?хотя для wine... да, пожалуй.
не мержат потому что кривоват by-design: https://github.com/zfigura/wine/issues/18
"а что у нас - прямое?"(c)верблюд
А кто такой zfigura?
Zebediah Figura. Без малого 4 года коммитит в Wine.
Zebediah Figura - это один из двух мейнтейнеров Wine Staging.
Proton же. Там esync с первого выпуска https://www.opennet.me/opennews/art.shtml?num=49164
Сам Вайн не особо развивается. Тащат наработки Протона, хотя по тупой причине некоторые пилят сами(аналог DXVK).
Valve платит за банкет. Наняли на постоянную работу ребят из CodeWeavers, как минимум одного из них.
>По умолчанию esync отключен и для его активации следует установить переменную окружения WINEESYNC в значение, отличное от нуля.А что не в winecfg?
Нет, в winecfg нет возможности это включить. Не исключено, что такая возможность появится когда-либо в будущем, но пока что не сейчас...
> Так как esync создаёт отдельный файловый дескриптор для каждого объектамного я в жизни костылей видел, но чтобы такое...
Решение радует ещё больше: мы придумали ввести никому не нужное ограничение на число дескрипторов и написали код, который плодит их триллиардами. Если у вас ошибка, вспомните об этом и увеличьте число дескрипторов. Самая важная информация которую нужно помнить...
Можно запихнуть в systemd-unit ваши лимиты.
Другого механизма нет.
Если треду надо ожидать ввод-вывод, например на вызове epoll, то побудить его можно только иными костылями (сигналами допустим).
Даешь производительность выше венды
Народ, в PlayOnLinux надо [будет] какие-то дополнительные манипуляции делать? Ну, само собой, кроме скачивания 4.6+_staging через их интерфейс. Лезть в конфигурацию Wine и прописывать или там оно уже обычно само? Подскажите, если знаете.
Нужно будет прописать переменную WINEESYNC=1 для включения ESYNC, так как он по умолчанию выключен.Может со временем сделают отдельную галку для включения ESYNC, как сделано в Lutris (https://bit.ly/2uTuHwM).
Спасибо.
Какой же всё же никс конченный! ну вот почему для нормальной производительности пользователь вообще должен слышать и т.б.знать и копаться - такие термины как тут. И даже просто не неменее а даже более тупейшие вроде DRM который на самом деле никакой не DRM...