LINUX.ORG.RU

История изменений

Исправление 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), но не аварийным. А вот что произойдёт с системой, если сработает второе ограничение — вопрос со звёздочкой.