Упреждающее кеширование чтения блоков

  !   Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам)

Независимый (от записи) кеш упреждающего чтения прозрачный для приложений.

Применение

В приложениях не надо менять ничего в логкие. Они продолжают работать с логичнмилогическими блоками и читать их по одному. И незаметно для приложения упреждающее чтение кеширует медленные обращения к ОС.

Рамер упреждающего кеша не чтение задается x_nReadAheadBytes (аналогично существующему x_nWritePoolBytes и совершенно независимо от него).

При каждой операции чтения используется либо кеш записи (ближе к концу записываемого файла) либо кеш чтения при попадании в него. При промахе мимо кеша кеш генерируется всегда вперед на расстояние x_nReadAheadBytes (но не далее конца файла и начала кеша записи) от текущей позиции промаха.

Ограничения
Сценарии чтения

Это дает массивные преимущества приложениям, читающим файл последовательно с лева на право. Однако при хаотичном чтении это будет приводить только к потерям быстродествия. Наиболее катастрофичными они будут естественно если файл читать с конца к началу.

Поэтому по умолчанию кеш выключен.

Размер кеша

Приложение может включить кеш или переразмерить существующий, установив или изменив x_nReadAheadBytes в любой момент использования файла.

От приложения не требуется обязательно выравнивать размер на границу блока.

Во избежание абсурдного перерасхода памяти оба кеша лимитированы C_nMaxCacheBytes = 1 * 1024 * 1024;

Приложения обязаны контролировать чтобы устанавливаемый ими размер не выходил за эти пределы. Нет смысла пытаться аллокировать кеш в RAM под весь гигиантский объем загружаемых в данный момент байтов! Это не даст существенного эффекта а нестабильности добавит.