LINUX.ORG.RU
ФорумGames

Wine сравнение производительности ESYNC vs FSYNC vs None

 ,


3

3

Сравнил производительность Fsync и Esync.

Также проверил, насколько сильно влияет значение переменной WINEFSYNC_SPINCOUNT на производительность. По умолчанию в Proton (и Wine-TkG) у этой переменной установлено значение 100.

Assassin’s Creed Odyssey: https://flightlessmango.com/games/1700/logs/778

Overwatch: https://flightlessmango.com/games/15751/logs/782

Overwatch FSYNC spincount: https://flightlessmango.com/games/15751/logs/783

Ori and the Will of the Wisps: https://flightlessmango.com/games/15605/logs/785

Bioshock: https://flightlessmango.com/games/2596/logs/786

Bioshock 2: https://flightlessmango.com/games/2597/logs/789

Grim Dawn: https://flightlessmango.com/games/9598/logs/787

The Witcher 3: https://flightlessmango.com/games/23256/logs/788

https://www.reddit.com/r/linux_gaming/comments/ih5idr/wine_esync_vs_fsync_vs_none_benchmark_in_3_games/

★★★★★

Последнее исправление: Kron4ek (всего исправлений: 1)

Ответ на: комментарий от Sunderland93

Если коротко и грубо говоря, Esync и Fsync выносят операции синхронизации объектов из wineserver. В отличие от стандартной синхронизации через wineserver, Esync/Fsync могут обрабатывать одновременно несколько объектов.

Разница в том, что Esync использует для этого файловые дескрипторы (eventfd), а Fsync использует системный вызов futex (измененный, с добавленной операцией FUTEX_WAIT_MULTIPLE).

Могу ошибаться, но вроде как-то так. Если хочется подробно, то выше ссылку дали.

Из-за специфики Esync, как правило, нужно настраивать лимиты на файловые дескрипторы в сиcтеме, по умолчанию во многих дистрибутивах слишком маленькое значение (нужно хотя бы 1 миллион). А для Fsync в данный момент нужно использовать патченое ядро, так как в апстрим нужные патчи пока не приняли.

Esync/Fsync почти всегда дают выигрыш в производительности, так что отключать имеет смысл только в конкретных случах.

В некоторых играх файловые дескрипторы текут с включенным Esync, так что какой лимит ни был бы установлен, они все равно в итоге крашатся с характерной ошибкой (например, у меня так было с Grim Dawn и Thronebreaker: The Witcher Tales). Но это далеко не во многих играх встречается.

eventfd: Too many open files
esync: write: Bad file descriptor

С Fsync данной проблемы не наблюдается, так как он не использует файловые дескрипторы.

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 3)
Ответ на: комментарий от necrus

В некоторых играх файловые дескрипторы текут с включенным Esync, так что какой лимит ни был бы установлен, они все равно в итоге крашатся с характерной ошибкой

С Fsync данной проблемы не наблюдается, так как он не использует файловые дескрипторы.

Вывод - fsync ненужен

ЛОР такой ЛОР…

mord0d ★★★★★
()
Ответ на: комментарий от Kron4ek

Разница в том, что Esync использует для этого файловые дескрипторы (eventfd)

по умолчанию во многих дистрибутивах слишком маленькое значение (нужно хотя бы 1 миллион)

Зачем ему столько дескрипторов?

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Да, в Proton Esync и Fsync по умолчанию включены. Причем Fsync там имеет более высокий приоритет, так что если ядро его поддерживает, то Proton будет его использовать вместо Esync.

Kron4ek ★★★★★
() автор топика
Ответ на: комментарий от X512

Видимо для нужд синхронизации, на каждый объект отдельный файловый дескриптор. На самом деле, 1 миллион - это не жесткое требование, просто некоторым играм меньшего количества будет недостаточно, а некоторым играм и 100 тысяч хватит.

Kron4ek ★★★★★
() автор топика
30 августа 2021 г.

Как Grim Dawn c dxvk запускал то? У меня что lutris что steam proton на первой секунде загрузке (когда в нижнем правом углу анимация идет) зависает и все. Конфиг скопировал с венды но не помогает.

bhfq ★★★★★
()

Assassin’s Creed Odyssey

А как ты решил проблему запуска Assassin’s Creed Odyssey? Запускается через раз на третий. Всегда норм после перезагрузки, но повторно - дальше лого не идет, как будто не может перейти в нужный видеорежим, а он такой же как и основной. Впечатление, что из-за оставшегося кэша в памяти. Пробовал сбрасывать кэши, но тоже - через раз помогает.

tamo
()
Ответ на: комментарий от bhfq

Как Grim Dawn c dxvk запускал то? У меня что lutris что steam proton на первой секунде загрузке (когда в нижнем правом углу анимация идет) зависает и все. Конфиг скопировал с венды но не помогает.

Зависание при загрузке я решил установкой d3dcompiler_43 и d3dcompiler_47, после этого игра отлично работает.

Kron4ek ★★★★★
() автор топика
Ответ на: Assassin’s Creed Odyssey от tamo

А как ты решил проблему запуска Assassin’s Creed Odyssey? Запускается через раз на третий. Всегда норм после перезагрузки, но повторно - дальше лого не идет, как будто не может перейти в нужный видеорежим, а он такой же как и основной. Впечатление, что из-за оставшегося кэша в памяти. Пробовал сбрасывать кэши, но тоже - через раз помогает.

Никак не решил, у меня точно такая же проблема с AC Odyssey. Иногда и по десять раз приходилось ее пытаться запустить, но в конечном итоге все же запускалась. Помимо этого еще в игре некоторые диалоги не воспроизводятся, тупо персонажи иногда молчат и все, и субтитры в это время зависают на предыдущей фразе.

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.