#bsd #zfs
Inactive память
https://forums.freebsd.org/threads/freebsd-inactive-memory.50262/
Заметил тут, что со временем у меня накапливается, глядя на top,
Inactive память. Вчера доходило до 40G. И я вижу проблему в том,
что эта память не отдаётся ZFS ARC. То есть, inactive растёт, а
ARC уменьшается.
Насколько понимаю, inactive память это та, которая как бы освобождена,
не нужна, но ещё не до конца. Оставшийся кэш по сути. Чуть что, её можно
освободить по настоящему. Был бы pressure. Да вот только ARC не создаёт
pressure на неё, поэтому она и не освобождается.
Кто создаёт эти inactive страницы памяти? А фиг знает, не знаю как
выяснить. Обычной UFS ФС нет -- есть только ZFS. Поэтому кэш ФС по идее
не должен быть. NFS клиентов нет. Подозреваю mmap-ы, может быть sendfile
-- то, что мне известно делающее копии вне ARC-а. Грешил на LevelDB
storage в ipfs. Пробовал делать zfs unmount его dataset, но ничего не
сбрасывается. Локально проверял -- по идее zfs unmount сбрасывает кэш.
Или только ARC, но в inactive всё равно остаётся? Bolt
(5b6ea6b652b4a3d56b0012bbf9c9bff4efa543b5) точно использует mmap, но там
смешного размера БД. В общем, не знаю как это всё работает.
И явно нет никакой ручки чтобы освободить эту память. Не додумался
больше ни до чего, кроме как банально в /tmp (tmpfs) сделать dd-ой
большой файл, который бы форсировал давление на память и освободил
таки. Правда, оно вытеснит сперва ещё и ARC.
Забавно, но в Linux проблема обратная: там ARC не отдаёт свою память
назад. А здесь мне наоборот хочется чтобы он больше занимал.
[оставить комментарий]