История изменений
Исправление Kron4ek, (текущая версия) :
Если коротко и грубо говоря, 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, :
Если коротко и грубо говоря, 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, :
Если коротко и грубо говоря, Esync и Fsync выносят операции синхронизации объектов из wineserver. В отличие от стандартной синхронизации через winserver, 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, :
Если коротко и грубо говоря, Esync и Fsync выносят операции синхронизации объектов из wineserver. В отличие от стандартной синхронизации через winserver, Esync/Fsync могут обрабатывать одновременно несколько объектов.
Разница в том, что Esync использует для этого файловые дескрипторы (eventfd), а Fsync использует системный вызов futex (измененный, с добавленной операцией FUTEX_WAIT_MULTIPLE).
Могу ошибаться, но вроде как-то так. Если хочется подробно, то выше ссылку дали.
Из-за специфики Esync, как правило, нужно настраивать лимиты на файловые дескрипторы в сиcтеме, по умолчанию во многих дистрибутивах слишком маленькое значение (нужно хотя бы 1 миллион). А для Fsync в данный момент нужно использовать патченое ядро, так как в апстрим нужные патчи пока не приняли.
Esync/Fsync почти всегда дают выигрыш в производительности, так что отключать имеет смысл только в конкретных случах.
В некоторых играх файловые дескрипторы текут с включенным Esync, так что какой лимит не был бы установлен, они все равно в итоге крашатся (например, у меня так было с Grim Dawn и Thronebreaker: The Witcher Tales), с Fsync данной проблемы не наблюдается.