Начиная с версии 6.1.0 изменено искусственное ограничение размера кэша ZFS (Zettabyte File System) в «ИКС». Теперь FreeBSD резервирует половину оперативной памяти для ядра и прикладных программ. Вторая половина оперативной памяти используется для кэша ZFS (ARC - Adaptive Replacement Cache).
ARC имеет очень низкий приоритет для запросов к памяти. Если приложение запрашивает оперативную память, а система не имеет достаточно свободной памяти, ядро системы уменьшает ARC, предоставляя приложению запрошенную им память. Процесс возвращения оперативной памяти кэша в систему не является мгновенным; он может занять несколько секунд и система начнёт “подтормаживать”.
Для возможности изменения параметров ARC, необходимо перейти в <IP-адрес ИКС>:<порт web-интерфейса>/#/const. В данной вкладке доступны следующие параметры настройки ARC:
Параметр vfs.zfs.arc_max – позволяет установить максимальный размер ARC, указывается в мегабайтах. Пустое поле означает, что «ИКС» использует размер по умолчанию (<объём ОЗУ>/2). Если необходимо изменить размер ARC, то необходимо исходить из следующих рекомендаций:
Параметр vfs.zfs.arc_meta_limit – отвечает за размер части ARC, затраченной на хранение метаданных, указывается в мегабайтах. Пустое поле означает, что установлен размер по умолчанию (vfs.zfs.arc_max / 4) от первоначального определения arc_max. Если параметр vfs.zfs.arc_max был изменен, рекомендуется изменить данный параметр на новое значение vfs.zfs.arc_max деленное на 4. Стоит отметить, что если в «ИКС» создано много каталогов с большим количеством файлов (например: много почтовых ящиков с большим количеством писем) и система “подтормаживает”, то рекомендуется установить параметр vfs.zfs.arc_meta_limit равным vfs.zfs.arc_max/2.
Параметр vfs.zfs.arc_min – отвечает за минимальный размер ARC, указывается в мегабайтах. Пустое поле означает, что установлен размер по умолчанию (vfs.zfs.arc_meta_limit/2). Если параметр vfs.zfs.arc_max был изменен, рекомендуется изменить данный параметр на новое значение равное vfs.zfs.arc_meta_limit деленное на 2.
В ZFS реализован механизм предварительной загрузки файлов и называется zfetch. Данный механизм анализирует шаблоны чтения файлов и пытается предсказать результаты следующего чтения для сокращения времени отклика приложений. В некоторых случаях, zfetch может интенсивно нагружать процессор и иметь предел масштабируемости. Для того чтобы отключит zfetch, необходимо указать значение параметра vfs.zfs.prefetch_disable равным 1.
Для вступления в силу произведенных настроек, необходимо произвести перезагрузку «ИКС».