Bug 2852

Summary: Ускорение работы за счёт оптимизации кэширования записи
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: Файловые операцииAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4 CC: aae, kondratyuk, pda, triada123
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 2710    

Description Vitaly Lipatov 2008-11-09 01:15:48 MSK
В сборке eter33 применено fdatasync вместо fsync, что может немного ускорить запись за счёт необновления метаданных о файле при каждой синхронизации. Скорее всего тот же эффект достигается за счёт параметра noatime при монтировании раздела.

Также в сборке eter33 добавлена обработка переменной окружения WINEDISABLEFLUSH, которая отключает выполнение FileFlushBuffers и ускоряет перепроведение документов где-то в 3 раза на 1С 7.7 (см. 
http://unixforum.org/index.php?showtopic=35172&st=0)
Comment 1 Михаил Карпухин 2008-11-10 12:49:54 MSK
А как же вот это ?:

!!! NB !!! Если внезапно пропадет питание то данные в кэше будут потеряны, при этом может быть нарушена целостность базы. Соответственно, чем дольше данные хранятся в кеше, тем выше вероятность повреждения базы. Настоятельно рекомендуется использование UPS и т.п. для стабильности питания.
Comment 2 Vitaly Lipatov 2008-11-10 16:13:08 MSK
Ну так не пользуйтесь WINEDISABLEFLUSH, если у вас не соблюдаются условия.
Меры предосторожности описаны в нашей документации.
К слову, проблемы не намного больше, чем с файловой системой при неожиданном выключении питания.
Comment 3 Vitaly Lipatov 2008-11-10 21:25:08 MSK
Просьба заинтересованным людям потестировать новую возможность:

$ WINEDISABLEFLUSH=yes wine 1cv7.exe
Comment 4 Антон Азанов (Djelf) 2008-11-10 23:56:34 MSK
1. Возможна ли реализация компромиссного решения FlushFileBuffers=on для dbf и FlushFileBuffers=off для cdx?
2. Только для справки: пока под Wine "завалить" 1С с этим патчем не удалось, но когда этот патч появился, при его тестировании в WinXP на конфигурации ~1Gb 1С "замерзала" при восстановлении выгрузки и тестировании/исправлении. Без него все работало. Возможно это была проблема конкретного "железа" или каких-то настроек ХР, но из-за этой ошибки пришлось от этого патча отказаться на всякий случай.
Comment 5 Vitaly Lipatov 2008-11-11 00:32:52 MSK
(In reply to comment #4)
> 1. Возможна ли реализация компромиссного
> решения FlushFileBuffers=on для dbf и FlushFileBuffers=off для
> cdx?
Теоретически конечно возможна. Подумаю. Но это снизит эффект.
Ну и не вижу большой проблемы всё же. При выключении питания данные могут
потеряться и по пути на диск.
Я думаю вопросом сохранения должна заниматься журналируемая
файловая система. Надо просто потестировать.

> 2. Только для справки: пока под Wine "завалить"
> 1С с этим патчем не удалось, но когда этот
Он не может влиять на стабильность, тем более в монопольном режиме.

> патч появился, при его тестировании в WinXP на
> конфигурации ~1Gb 1С "замерзала" при
> восстановлении выгрузки и
> тестировании/исправлении. Без него все
Если хотите, можем потестить на такой базе.

> работало. Возможно это была проблема
> конкретного "железа" или каких-то настроек
> ХР, но из-за этой ошибки пришлось от этого
> патча отказаться на всякий случай.
Я думаю, что это совпадение. В общем, жду более детального тестирования.