Назад | Перейти на главную страницу

Освобождение памяти zfs arc во FreeBSD

У меня есть машина под управлением FreeBSD, которая подвержена различным рабочим нагрузкам, от интенсивного использования диска до интенсивного использования памяти.

При доступе к большим объемам данных ZFS использование проводной памяти может быстро вырасти до 95 ГБ, когда установлено только 96 ГБ, что приведет к сбоям процесса и зависанию компьютера.

Процессы checksetuid и neggrpperp могут запускать это самостоятельно.

как обходной путь, установка vfs.zfs.arc_max примерно до половины системной оперативной памяти предотвращает сбои процессов, однако это также имеет возможную проблему с производительностью, которая иногда была бы оптимальной, если бы система могла выделить больше оперативной памяти для дуги, когда она не нужна для других процессов.

Когда для других процессов требуется оперативная память, кажется, что использование проводной памяти снижается слишком медленно.

security_status_chksetuid_enable и security_status_neggrpperm_enable также установлены в NO, чтобы не заполнять дугу бесполезным материалом.

По сути, есть ли лучший способ справиться с этим, кроме установки vfs.zfs.arc_max к слегка произвольному значению?

ZFS ARC подлежит автоматическому масштабированию в любой системе, использующей ZFS. Ограничение ARC - это только обходной путь; поведение, которое вы испытываете, было в основном обычным для FreeBSD старше 11.x (однако лично я не видел никаких сбоев - только неэффективное использование памяти); после выпуска 11.0 это поведение было значительно уменьшено (поэтому, если вы используете 10.x или даже 9.x, обновите). Если вы все еще видите это в последней версии 12.x, отправьте сообщение в freebsd-stable @ ML или заполните подробный PR. Я не думаю, что отправка сообщения о проблеме в систему отслеживания ошибок Open-ZFS или ML является уместной. Вы также можете использовать sysutils/zfs-stats порт, чтобы сузить то, что происходит внутри ядерной части памяти и самого ARC, вас, вероятно, попросят прикрепить результат при обращении к stable @ ML.