Оптимизация ввода-вывода и модуль pf

Модуль pf - это кэш в пользовательском пространстве, использующий простой механизм обращения к последним использовавшимся страницам (LRU, Last Recently Used). Модуль pf также отслеживает обращения к страницам кэша для прогноза будущих запросов к данным файла и вызывает команды aio_read для предварительной загрузки данных в кэш.

Часто приложения считывают последовательно большие (размером в десятки гигабайт) файлы. Таким приложениям кэш операционной системы помогает очень мало. Большие буферы операционной системы в данном случае бесполезны, потому что повторное использование данных не выполняется. Библиотека MIO в таких ситуациях вызывает модуль pf, который обнаруживает режим последовательного доступа и заранее асинхронно считывает в кэш меньшего размера необходимые данные. Размер кэша pf должен быть достаточным для обеспечения опережающего чтения. Кроме того, модуль pf может применять прозрачный ввод-вывод во избежание лишних операций копирования из памяти в системный буфер, тем самым освобождая системный буфер для других операций. Эксперименты с файловой системой JFS или JFS2 в AIX показали эффективность прозрачного ввода-вывода модуля pf для последовательного чтения больших файлов.