ivdok
В дефолтный настройках только в путь. Сплошь и рядом такое
Так всё равно на эту область памяти висит claim, не важно свободная она или нет
ivdok
я тебя не понял
ZFS аллоцирует кусок памяти под ARC, и KVM не может от него отхватить KVM, так как он зарезервирован ARC, неважно полностью он заполнен или нет
ivdok
нет
Что "нет"?
Владимир
Ты не понял
Владимир
Можно указать сколько держать памяти свободной, и тогда память не алоцирована zfs
Владимир
и её может взять кто угодно
Владимир
а как её взяли и свободной нет zfs снова отдаёт память чтобы всегда держать нужный объём свободным
Владимир
/sys/module/zfs/parameters/zfs_arc_sys_free
Владимир
в дефолте оно 0, а значит zfs моет скушать всю ОЗУ и тогда ядро начнёт кикать процессы
George
ZFS аллоцирует кусок памяти под ARC, и KVM не может от него отхватить KVM, так как он зарезервирован ARC, неважно полностью он заполнен или нет
у ARC нет резервирования ОЗУ неиспользуемой, окромя совсем базовых минимумов. zfs_arc_max ограничивает сверху сколько памяти МОЖЕТ быть максимально использовано. Плюс ZFS подписан в ядре на запрос освобождения памяти когда её не хватает, и в этой ситуации не моментально, но отдаст сколько попросят
George
(запрос памяти от pagecache ЕМНИП тоже не моментальный, безотносительно zfs)
Aba
в дефолте оно 0, а значит zfs моет скушать всю ОЗУ и тогда ядро начнёт кикать процессы
Ядро не будет убивать процессы, т.к. zfs потребляет память под кеш и в случае необходимости кеш без проблем высвобождается.
Владимир
Это факт
Владимир
Арк кеш в этом плане меня сильно разочаровал
A1EF
Я тоже так думал, а на деле ядро валит процессы по оом
Истинная правда, сам сталкивался с этим.
Aba
Я тоже так думал, а на деле ядро валит процессы по оом
Я не думаю и не предполагаю, я знаю. И проверял лично. А по поводу оом - это уже к нему вопросы и к его алгоритмам.
Aba
Забиваем кеш, запускам процесс который жрет память - смотрим как кеш высвобождается.
Владимир
Забиваем кеш, запускам процесс который жрет память - смотрим как кеш высвобождается.
Забивал кеш на 70гб из 128гб, запуска виртуалки, и ядро кикало виртуалки которая съела 30гб
Владимир
Факт
Владимир
Если не ставить минимально свободный объем ОЗУ арк кешу срать
Владимир
Он не воспринимается как то что может быть высвобождено
Aba
Забивал кеш на 70гб из 128гб, запуска виртуалки, и ядро кикало виртуалки которая съела 30гб
забивал кеш, запускал питоновский скрипт который жрет много памяти, видел как высвобождается арк, факт
George
Забивал кеш на 70гб из 128гб, запуска виртуалки, и ядро кикало виртуалки которая съела 30гб
ну так оом приходит раньше полного окончания памяти, забил всё - здрасьте. И свапа нет, видимо?)
Владимир
забивал кеш, запускал питоновский скрипт который жрет много памяти, видел как высвобождается арк, факт
Какая ос, какая версия зфс? Настройки минимально свободной ОЗУ сделаны?
George
т.е. съесть всё и пока кеш освобождается оом может успеть, да
Aba
Какая ос, какая версия зфс? Настройки минимально свободной ОЗУ сделаны?
Стоковая конфигурация фряхи, объем озу был в 16гб
Владимир
ну так оом приходит раньше полного окончания памяти, забил всё - здрасьте. И свапа нет, видимо?)
Конечно свапа нет, на кой он нужен??? Чтобы свапить когда зфс сожрал все?
Владимир
Бред
George
Конечно свапа нет, на кой он нужен??? Чтобы свапить когда зфс сожрал все?
вот от моего коллеги на почитать, там ещё и продолжение есть https://habr.com/ru/post/540104/
A1EF
ну так оом приходит раньше полного окончания памяти, забил всё - здрасьте. И свапа нет, видимо?)
Вопрос, с точки зрения ядра arc кэш не тождественен файловому кэшу? Т.е. ядро не считает эту память высвобождаемой?
George
и оом когда памяти мало и ещё не освободили - нормален
Владимир
Стоковая конфигурация фряхи, объем озу был в 16гб
Либо он выдаёт память постепенно либо там другая логика нежели в линукс
Den
Забивал кеш на 70гб из 128гб, запуска виртуалки, и ядро кикало виртуалки которая съела 30гб
Особенно красиво не на квм, а на lxc под pve, шиш поймешь потом, чего процессы померают
Владимир
Он мне не нужен, у меня достаточно ОЗУ чтобы его не использовать
George
Вопрос, с точки зрения ядра arc кэш не тождественен файловому кэшу? Т.е. ядро не считает эту память высвобождаемой?
в линуксе - не полностью тождественен пока, там есть сложности, но это не сильно к вопросу относится этому, освобождение кеша в принципе операция не моментальная
Владимир
Это я ещё молчу как балун нг работает если арк кеш не обуздать)
Владимир
В итоге все виртуалки будут на минимальном объёме, зато зфс сыт
Владимир
Повторюсь, если установить в зфс минимальный объем свободной памяти все работает хорошо
Владимир
Но в стоке хрень полная
Владимир
в состав ядра ему пока не светит
Ну он уже работает как модуль
Владимир
Сорри, не удержался
Он ведь даже в хтопе не жёлтым, а зелёным, как обычная юзер память
Владимир
Сильно сбивает с толку когда не понимаешь это
George
Он ведь даже в хтопе не жёлтым, а зелёным, как обычная юзер память
но это не значит что этот кеш доступен моментально
George
а кему хочет память сразу и одним запросом
Владимир
Владимир
Я лично не раз видел как жёлтая полоса забита до конца, запускаем большой процесс и ничего не кикает
Владимир
Никогда, ниразу
Владимир
Всегда прям безотказно
George
в самом простом случае пейджкеш может содержать грязные данные которые ещё не сброшены на диск
Владимир
Я не первый день наблюдаю за этим
Владимир
Даже не первый год
Владимир
Я понимаю что условности есть
Владимир
С зфс же вообще даже без условностей это не работает
Владимир
В зфс нормальное поведение только в случае если попросить зфс держать свободным какой-то объем озу
Владимир
И то я бы не сказал это идеал ным инструментом, но в целом норм
George
root@foton:~# zfs -V zfs-2.1.2-pve1 zfs-kmod-2.1.2-pve1 root@foton:~# free -m total used free shared buff/cache available Mem: 32009 28346 2868 59 794 3173 Swap: 0 0 0 root@foton:~# arcstat time read miss miss% dmis dm% pmis pm% mmis mm% size c avail 00:14:19 0 0 0 0 0 0 0 0 0 6.0G 6.0G 2.0G root@foton:~# stress -m 1 --vm-bytes 6000M -t 10 --vm-keep stress: info: [65277] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: info: [65277] successful run completed in 10s root@foton:~# arcstat time read miss miss% dmis dm% pmis pm% mmis mm% size c avail 00:14:40 6 1 17 1 17 0 0 1 25 2.8G 2.9G 6.1G root@foton:~# free -m total used free shared buff/cache available Mem: 32009 24425 7254 59 328 7138 Swap: 0 0 0 root@foton:~# grep oom /proc/vmstat oom_kill 0
Владимир
Я ведь не придумываю)
George
по arc только options zfs zfs_arc_max=6442450944 менялся
George
и кстати, свапа нет)
Владимир
George
Ну то есть не дефолт)
ну так смотри что размер ARC и уменьшился
Владимир
Вот и я меняю только параметр для поддержания свободной озу
Владимир
И всё работает
Владимир
А на случай если не успеет у меня есть самописный скрипт который рубит кеш
Владимир
В таком ключе все без проблем
Владимир
К слову на более чем половине установок все работает корректно, ну не считая балуна))))
Владимир
Оом случается там где есть процессы которые любят кушать)