Глиф Учебники

Как ограничить память ZFS (ARC)

Справочник · Proxmox VE · 2 минуты чтения

ZFS держит в памяти кэш чтения — ARC (Adaptive Replacement Cache). Предел задаёт параметр zfs_arc_max в байтах. Например, 8 ГиБ — это 8 × 1024 × 1024 × 1024 = 8589934592 байт. Чтобы ограничить ARC навсегда, откройте файл настроек модуля. Установщик Proxmox VE 8.1 и новее мог уже записать в него предел (10 % памяти, не больше 16 ГиБ); если файла нет, nano создаст его при сохранении:

Bash
nano /etc/modprobe.d/zfs.conf

Добавьте или исправьте строку:

Настройки
options zfs zfs_arc_max=8589934592

Если система стоит на ZFS (установка с пулом rpool), обновите initramfs. Затем перезагрузите сервер:

Bash
update-initramfs -u -k all
reboot

Сразу, без перезагрузки

Предел можно поменять и на ходу — до следующей перезагрузки:

Bash
echo "$((8 * 1024*1024*1024))" > /sys/module/zfs/parameters/zfs_arc_max

Кэш уменьшится не мгновенно: ZFS освобождает память постепенно. Чтобы предел сохранился после перезагрузки, всё равно нужна строка в /etc/modprobe.d/zfs.conf.

Сколько памяти занято сейчас

Bash
cat /sys/module/zfs/parameters/zfs_arc_max
arc_summary | head -n 30

Первая команда показывает предел (0 значит «по умолчанию ZFS»), вторая — сводку кэша, в том числе его текущий размер.

Сколько оставить

Слишком маленький кэш замедляет диски всех машин: ZFS чаще читает с дисков. Уменьшайте его, только если памяти действительно не хватает машинам.

«Занятая» кэшем память не потеряна: ARC отдаёт её, когда она нужна программам, хотя и не так быстро, как обычный кэш Linux. Высокая шкала памяти на странице узла при ZFS — не всегда беда.

Подводные камни