Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a) / 17 сообщений из 17, страница 1 из 1
13.01.2016, 21:55
    #39146804
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
hi all.

решил я тут поглядеть, в каком режиме ФБ открывает:
1) файл базы, когда fw= ON vs OFF
2) файл GTT, когда база в fw = ON.

Запустил ProcMon, поставил оставил только IO-активность, задал соотв. фильтры на PID, Operation и Path.

В итоге получил следующие сведения для файла базы :
1) при fw = OFF :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Date & Time:	13.01.2016 20:23:46
Event Class:	File System
Operation:	CreateFile
Result:	SUCCESS
Path:	C:\MIX\firebird\QA\fbt-repo\tmp\E30.FDB
TID:	4988
Duration:	0.0000246
Desired Access:	Generic Read/Write
Disposition:	Open
Options:	Synchronous IO Non-Alert, Non-Directory File
Attributes:	N
ShareMode:	Read
AllocationSize:	n/a
OpenResult:	Opened
2) при fw = ON :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Date & Time:	13.01.2016 20:21:14
Event Class:	File System
Operation:	CreateFile
Result:	SUCCESS
Path:	C:\MIX\firebird\QA\fbt-repo\tmp\E30.FDB
TID:	4300
Duration:	0.0000246
Desired Access:	Generic Read/Write
Disposition:	Open
Options:	Synchronous IO Non-Alert, Non-Directory File
Attributes:	N
ShareMode:	Read
AllocationSize:	n/a
OpenResult:	Opened


Date & Time:	13.01.2016 20:21:14
Event Class:	File System
Operation:	CreateFile
Result:	SUCCESS
Path:	C:\MIX\firebird\QA\fbt-repo\tmp\E30.FDB
TID:	4300
Duration:	0.0000196
Desired Access:	Generic Read/Write
Disposition:	Open
Options:	 Write Through , Synchronous IO Non-Alert, Non-Directory File
Attributes:	N
ShareMode:	Read
AllocationSize:	n/a
OpenResult:	Opened

(да, тут именно два события; сначала такое же как в fw =OFF, но затем файл переоткрывается с "Write Through").
Далее создал GTT и запустил insert в неё. Каталог с файлами GTT мне известен, поменял фильтр на этот Path.
И увидел там вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Date & Time:	13.01.2016 21:16:38
Event Class:	File System
Operation:	CreateFile
Result:	SUCCESS
Path:	C:\TEMP\fb_table_71qpfn
TID:	5296
Duration:	0.0003673
Desired Access:	Generic Read/Write, Delete
Disposition:	OverwriteIf
Options:	 Synchronous IO  Non-Alert, Non-Directory File, Delete On Close
Attributes:	NT
ShareMode:	Read
AllocationSize:	0
OpenResult:	Overwritten
Некто Марк Руссинович и Ко в книге "Windows Internals, 6th ed", объясняют режимы Write Through & Synchronous IO так:
Forcing the Cache to Write Through to Disk, pg 448Because some applications can’t tolerate even momentary delays between writing a file and seeing the updates on disk, the cache manager also supports write-through caching on a per–file object basis; changes are written to disk as soon as they’re made .Types of I/O, pg 41Synchronous and Asynchronous I/O
Most I/O operations that applications issue are synchronous (which is the default); that is, the application thread waits while the device performs the data operation and returns a status code when the I/O is complete .
ИТОГО получаем:
1. При FW = ON файл базы открывается так, что кеш виндузы вообще игнорится и изменения пишутся мимо него.
Вопрос-1. Правильно ли я теперь понимать, что параметр FileSystemCacheThreshold - он играет рояль только для баз с fw = OFF ?
2. При любом FW СУБД будет ждать подтверждения от операционки, что очередной пакет данных действительно записан в файл базы. Потому что в обоих случаях файл открывается с "Synchronous IO" флагом.
Вопрос-2. У мну разрыв шаблона: что тогда есть fw = OFF ?? Получается, что это всего лишь отмена флага Write Through, и больше ничего ?
3. При любом FW СУБД будет ждать подтверждения записи и для файлов GTT! Также будем ждать ответа, что всё записано, файл GTT открыт "Synchronous IO" флагом.
Вопрос-3. Для GTT-файлов - зачем такое строгое требование ? Почему этот файл нельзя открывать в async-реджиме ?
...
Рейтинг: 0 / 0
13.01.2016, 22:11
    #39146812
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Непонятно, что тебя смущает и чего хочешь добиться в новогоднюю ночь? =)

Синхронный в/в ты немного не так понял, что там написано, но по факту это ничего не меняет.
...
Рейтинг: 0 / 0
13.01.2016, 22:15
    #39146814
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
ЗимарглНепонятно, что тебя смущает и чего хочешь добиться в новогоднюю ночь? =)

Синхронный в/в ты немного не так понял, что там написано, но по факту это ничего не меняет.Смущает необх-сть открытия GTT-тряпки в sync режиме. Зачем чего-то там ждать, пока в эту помой времянку запишется очередная порция данных ?
Про синхронный в/в - поясни, плз, подробнее. Как ПРАВИЛЬНО надо понимать то, что там написано.
...
Рейтинг: 0 / 0
13.01.2016, 22:16
    #39146815
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Таблоид,

ты понял всё не правильно. Сначала читай MSDN, флаги используемые CreateFile.
Потом поговорим, если вопросы останутся.
...
Рейтинг: 0 / 0
13.01.2016, 22:20
    #39146817
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
ТаблоидЗимарглНепонятно, что тебя смущает и чего хочешь добиться в новогоднюю ночь? =)

Синхронный в/в ты немного не так понял, что там написано, но по факту это ничего не меняет.Смущает необх-сть открытия GTT-тряпки в sync режиме. Зачем чего-то там ждать, пока в эту помой времянку запишется очередная порция данных ?
Про синхронный в/в - поясни, плз, подробнее. Как ПРАВИЛЬНО надо понимать то, что там написано.
Правильно - дословно - ф-ция в/в вернет управление после выполнения, а не раньше. Но это может быть только фактом записи в кэш.
В асинк.в/в ты отдельным запросом должен спрашивать - "а прочиталось ли ?" итп

GTT скорее всего сделано логично - все файлы базы открываются в едином режиме. Девелоперы точнее могут сказать, или см код.
...
Рейтинг: 0 / 0
13.01.2016, 22:40
    #39146824
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
hvladты понял всё не правильно. Сначала читай MSDN, флаги используемые CreateFile.
Потом поговорим, если вопросы останутся.Прочитал вот это: Synchronous and Asynchronous I/O Handles . synchronous handle behaves such that I/O function calls using that handle are blocked until they complete, while an asynchronous file handle makes it possible for the system to return immediately from I/O function calls, whether they completed the I/O operation or no
Ну и картинки глянул вот тута: Synchronous and Asynchronous I/O (похожую Марк в своей книжке тоже выводит).

Вопросы остались. Те же самые, плюс что именно я "понял всё не правильно".
...
Рейтинг: 0 / 0
13.01.2016, 22:41
    #39146825
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
ЗимарглGTT скорее всего сделано логично - все файлы базы открываются в едином режиме. Девелоперы точнее могут сказать, или см код.Именно так.
Режим ФлагиFW = ON FILE_FLAG_WRITE_THROUGHFW = OFFNo file system cache (FW = любой) FILE_FLAG_NO_BUFFERINGGTT FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSEКроме того, при FW = OFF по коммиту(роллбеку) вызывается FlushFileBuffers
...
Рейтинг: 0 / 0
13.01.2016, 22:42
    #39146827
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Таблоид,

я тебе сказал про флаги читать, а ты что читал ?
Читай. Флаги я показал. Делай выводы :)
...
Рейтинг: 0 / 0
13.01.2016, 22:55
    #39146830
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
hvladя тебе сказал про флаги читать, а ты что читал ?
Читай. Флаги я показал. Делай выводы :)Про флаги тоже прочёл :-)
Очень хороший флаг у нас для ГТТ:msdn FILE_ATTRIBUTE_TEMPORARY attribute causes file systems to avoid writing data back to mass storage if sufficient cache memory is available- но допустим, что запись на диск всё-таки попёрла, т.к. "sufficient cache memory" = false.
Остается вопрос из стартового поста, про Synchronous IO: зачем файл ГТТ открывается именно в таком режиме ?
...
Рейтинг: 0 / 0
13.01.2016, 22:59
    #39146832
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
ТаблоидОстается вопрос из стартового поста, про Synchronous IO: зачем файл ГТТ
открывается именно в таком режиме ?
Ты видел как программируется асинхронный ввод/вывод в винде? Это геморрой на ровном месте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.01.2016, 23:09
    #39146836
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Dimitry SibiryakovТаблоидОстается вопрос из стартового поста, про Synchronous IO: зачем файл ГТТ
открывается именно в таком режиме ?Ты видел как программируется асинхронный ввод/вывод в винде? Это геморрой на ровном месте.Нет, не видел. А в чём там гемор ? особливо интересует файл, соотв-щий gtt on commit DELETE rows, в который может вести запись одна и только одна транзакция (след-но, нет нужды думать о конкуреции за этот файлик).
...
Рейтинг: 0 / 0
13.01.2016, 23:25
    #39146846
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
ТаблоидА в чём там гемор ?
В том, что всё равно приходится ждать пока оно запишется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.01.2016, 23:29
    #39146849
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Dimitry Sibiryakovвсё равно приходится ждать пока оно запишется.Прошу пардону за неизбывную тупость, но... почему при async io всё равно надо будет ждать ?
...
Рейтинг: 0 / 0
13.01.2016, 23:41
    #39146862
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Таблоидпочему при async io всё равно надо будет ждать ?

Потому что с буфером, из которого он пишет, ничего в этот промежуток времени делать нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.01.2016, 01:52
    #39146894
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Dimitry SibiryakovТаблоидпочему при async io всё равно надо будет ждать ?
Потому что с буфером, из которого он пишет, ничего в этот промежуток времени делать нельзя.Гы... тогда зачем там вообще этот режим, async io ?..
...
Рейтинг: 0 / 0
14.01.2016, 02:18
    #39146898
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
"Ничего нельзя делать с буфером" и "совсем ничего не делать" не одно и то же.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.01.2016, 09:01
    #39146954
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a)
Таблоид,

при FW=OFF будет синхронная запись в файловый кеш , а не на диск. Почувствуй разницу.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы по режиму открытия Firebird'ом файлов базы и GTT (анализ данных ProcMon'a) / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]