История изменений
Исправление intelfx, (текущая версия) :
В юзерском oom-killer (nohang) есть возможность включить zram_checking_enabled. Который срабатывает на ситуациях с несжимаемыми данными
Ты хакавлад должен мне новые глаза, но не совсем так. Оно срабатывает на ситуациях, когда ограничение на объём сжатых данных достигается быстрее, чем ограничение на объём несжатых данных. Я как раз думал упомянуть ещё и этот ахтунг, но задолбался печатать.
Суть в том, что с zswap у тебя есть ровно одно ограничение: compressed <= min(MemAvailable, max_pool_pct)
. Если оно достигается, zswap начинает как-то жонглировать страницами, какие-то вытесняя на диск, какие-то сжимая вместо вытесненных, и в целом ведя себя более-менее разумно.
А с swap на zram у тебя два независимых ограничения: одно uncompressed <= zram_disksize
(со стороны свопа), а второе — compressed <= min(MemAvailable, zram_mem_limit)
(со стороны zram). И эти ограничения принципиально не знают друг о друге, поскольку, как я уже сказал, в линуксовом свопе не предусмотрена возможность отказаться хранить данные. Если с точки зрения ядра в свопе есть свободное место, то он обязан принять страницу.
Если сработает первое ограничение, zram тупо перестанет принимать новые страницы, т. е. поведение будет абсолютно неоптимальным, но хотя бы не аварийным. А вот что произойдёт с системой, если сработает второе ограничение — вопрос со звёздочкой.
Исправление intelfx, :
В юзерском oom-killer (nohang) есть возможность включить zram_checking_enabled. Который срабатывает на ситуациях с несжимаемыми данными
Ты хакавлад должен мне новые глаза, но не совсем так. Оно срабатывает на ситуациях, когда ограничение на объём сжатых данных достигается быстрее, чем ограничение на объём несжатых данных. Я как раз думал упомянуть ещё и этот ахтунг, но задолбался печатать.
Суть в том, что с zswap у тебя есть ровно одно ограничение: compressed <= min(MemAvailable, max_pool_pct)
. Если оно достигается, zswap начинает как-то жонглировать страницами, какие-то вытесняя на диск, какие-то сжимая вместо вытесненных, и в целом ведя себя более-менее разумно.
А с swap на zram у тебя два независимых ограничения: одно uncompressed <= zram_disksize
(со стороны свопа), а второе — compressed <= min(MemAvailable, zram_mem_limit)
(со стороны zram). И эти ограничения принципиально не знают друг о друге, поскольку, как я уже сказал, в линуксовом свопе не предусмотрена возможность вернуть ошибку. Если с точки зрения ядра в свопе есть свободное место, то он обязан принять страницу.
Если сработает первое ограничение, zram тупо перестанет принимать новые страницы, т. е. поведение будет абсолютно неоптимальным, но хотя бы не аварийным. А вот что произойдёт с системой, если сработает второе ограничение — вопрос со звёздочкой.
Исходная версия intelfx, :
В юзерском oom-killer (nohang) есть возможность включить zram_checking_enabled. Который срабатывает на ситуациях с несжимаемыми данными
Ты хакавлад должен мне новые глаза, но не совсем. Оно срабатыает на ситуациях, когда ограничение на объём сжатых данных достигается быстрее, чем ограничение на объём несжатых данных. Я как раз думал упомянуть ещё и этот ахтунг, но задолбался печатать.
Суть в том, что с zswap у тебя есть ровно одно ограничение: compressed <= min(MemAvailable, max_pool_pct)
. Если оно достигается, zswap начинает как-то жонглировать страницами, какие-то вытесняя на диск, какие-то сжимая вместо вытесненных, и в целом ведя себя более-менее разумно.
А с swap на zram у тебя два независимых ограничения: одно uncompressed <= zram_disksize
(со стороны свопа), а второе — compressed <= min(MemAvailable, zram_mem_limit)
(со стороны zram). И эти ограничения принципиально не знают друг о друге, поскольку, как я уже сказал, в линуксовом свопе не предусмотрена возможность вернуть ошибку. Если с точки зрения ядра в свопе есть свободное место, то он обязан принять страницу.
Если сработает первое ограничение — zram тупо перестанет принимать новые страницы, т. е. поведение будет абсолютно неоптимальным (по сравнению с zswap), но не аварийным. А вот что произойдёт с системой, если сработает второе ограничение — вопрос со звёздочкой.