! | Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам) |
Независимый (от записи) кеш упреждающего чтения прозрачный для приложений.
В приложениях не надо менять ничего в логкие. Они продолжают работать с логичнмилогическими блоками и читать их по одному. И незаметно для приложения упреждающее чтение кеширует медленные обращения к ОС.
Рамер упреждающего кеша не чтение задается x_nReadAheadBytes (аналогично существующему x_nWritePoolBytes и совершенно независимо от него).
При каждой операции чтения используется либо кеш записи (ближе к концу записываемого файла) либо кеш чтения при попадании в него. При промахе мимо кеша кеш генерируется всегда вперед на расстояние x_nReadAheadBytes (но не далее конца файла и начала кеша записи) от текущей позиции промаха.
Это дает массивные преимущества приложениям, читающим файл последовательно с лева на право. Однако при хаотичном чтении это будет приводить только к потерям быстродествия. Наиболее катастрофичными они будут естественно если файл читать с конца к началу.
Поэтому по умолчанию кеш выключен.
Приложение может включить кеш или переразмерить существующий, установив или изменив x_nReadAheadBytes в любой момент использования файла.
От приложения не требуется обязательно выравнивать размер на границу блока.
Во избежание абсурдного перерасхода памяти оба кеша лимитированы C_nMaxCacheBytes = 1 * 1024 * 1024;
Приложения обязаны контролировать чтобы устанавливаемый ими размер не выходил за эти пределы. Нет смысла пытаться аллокировать кеш в RAM под весь гигиантский объем загружаемых в данный момент байтов! Это не даст существенного эффекта а нестабильности добавит.