LINUX.ORG.RU

ZSWAP мешает спать?

 , ,


0

2

Надоело испытывать лаги в дискорде, когда делаю ALT+TAB. HPET показывает, что у меня 340 мегабайт чего-то ушло в своп. Вместо того, чтобы искать способ это что-то из него выгнать, я вспомнил про то, как кто-то мне предлагал ZSWAP. Где-то на арчвики, я читал, что включение ZSWAP убивает гибернацию, и что приложухи из ОЗУ не смогут выгрузиться в ZSWAP(но могут в SWAP), если я закрою крышку ноутбука. Можно как-то так, чтобы и сон остался, и ZSWAP работал?


Не в курсе проблем с гибернацией, может они и есть, но у меня на ноутбуке zswap и гибернация работает.

не смогут выгрузиться в ZSWAP(но могут в SWAP)

ZSWAP - обычный swap + сжатая область в памяти, чтобы реже его использовать. При гибернации (любой) всё выгружается в обычный swap, так как память не будет сохранять своё состояние. Как без zswap, так и с ним, у тебя просто выгружается всё в тот же самый swap.

На моей памяти был нюанс с тем, что в свап запись идет без сжатия и на 8 gb памяти с zswap из-за этого может не хватит 8 gb свапа при гибернации.

altwazar ★★★★★
()

Если можешь себе позволить выключить дисковый своп вообще, то вырубай его и используй zramswap

На всякий случай уточню что, zramswap это swap в zram, но это не zswap, zswap это zram в swap :)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

zswap это zram в swap :)

zswap не сжимает ничего в swap-е. Это сжатие памяти вместе с возможностью обычного использования свопа, если этого не достаточно. Если утрировать и забить на нюансы, то zswap = приоритетный своп в памяти через zram + обычный swap.

altwazar ★★★★★
()

Если у тебя Arch, то zswap включен по-умолчанию. zswap и гибернация работают. zswap- это просто сжатый своп. Данные жмутся перед попаданием в своп. И zram не мешает по документации ArchWiki. В реале я пробовал- тоже все нормально. Но некоторые пользователи пишут, что работает через раз.

Jeronimo ★★★
()
Ответ на: комментарий от Jeronimo

zswap- это просто сжатый своп. Данные жмутся перед попаданием в своп.

Не распространяй дезинформацию. zswap — сжатый буфер. Перед выгрузкой в своп данные расжимаются.

greenman ★★★★★
()
Ответ на: комментарий от greenman

Угу. Если правильно помню и не наврал:

  1. Zram - просто «диск» со сжатием в оперативной памяти. Который можно использовать как swap. Это позволяет не держать у себя свап на физическом диске и держать больший объем данных в памяти. Но есть недостаток - туда попадает всё, что попадает в обычный swap, и место под это дело будет выделено в пределах указанного заранее размера. Что может усугубить ситуацию во время нехватки памяти и система будет заниматься бесполезной хернёй, перегоняя в оперативке несжимаемые данные.

  2. Zswap - кэш перед обычным swap-ом. Если данные при выгрузке в swap сжимаются и не превышен лимит по выделенной памяти, то данные остаются в сжатом виде в этом кэше. Несжимаемые данные или при превышении лимита пишутся в swap. Что хорошо практически во всех ситуациях, когда допустима запись в своп (он не на тормозном хдд или не на sdшке).

Со свапом в zram не получиться использовать гибернацию, по крайней мере без каких-то других костылей. Так как при гибернации состояние памяти не сохраняется и предварительно сбрасывается в своп.

С zswap при гибернации память сбрасывается в своп как обычно. А с помощью костылей можно добиться эффекта, когда свап будет использоваться только под это (сам не пробовал).

altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от greenman

Перед выгрузкой в своп данные расжимаются.

Вот тут бы почитать, как на самом деле. Читал, что при гибернации это так, но в обычном режиме не понятно в чем смысл так делать.

altwazar ★★★★★
()
Ответ на: комментарий от altwazar

и место под это дело будет выделено в пределах указанного заранее размера

В выхлопе zramctl есть столбец TOTAL с количеством оперативной памяти, которое занимает zram-диск. Обычно там немного больше размера сжатых данных.

Ну или я тебя неправильно понял.

Radjah ★★★★★
()
Ответ на: комментарий от altwazar

и система будет заниматься бесполезной хернёй, перегоняя в оперативке несжимаемые данные
ZSWAP мешает спать? (комментарий)

Cast @hakavlad. Наблюдаю попытки нападение на прекраснейший совершенный zram! )


Хотел сначала написать про nohang, в котором надо включить zram_checking_enabled в конфиге. Но ты же советуешь включать только в случаях DISKSIZE > MEMORY раза в два. А юзера чаще всего ничего не меняют в конфигах zram и используют дефолтные значения, где DISKSIZE где-то 1\4 или 1\2 от всей памяти.

krasnh ★★★★★
()
Ответ на: комментарий от altwazar

На моей памяти был нюанс с тем, что в свап запись идет без сжатия и на 8 gb памяти с zswap из-за этого может не хватит 8 gb свапа при гибернации.

Сжатие тут не принципиальный вопрос. Когда у тебя 8gb RAM и 8gb свопа, то компьютеру по сути доступно 16 gb виртуальной памяти. Если, к примеру, ты открыл вкладок браузера на 12 GB, то оно со скрипом, но будет работать и всю эту память придётся сохранять при гибернации, даже если никакого сжатия нет. Конечно обычно компьютер так не используют, но ничего не мешает.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от Radjah

Ну или я тебя неправильно понял.

Я про то, что zram-swap при использовании может вырасти до заданного размера. И растёт он еще и за счет несжимаемых данных. Из-за чего конфигурации типа 8 гб zram при 16 гб памяти в некоторых ситуациях давали негативный эффект, а 4 гб zram не хватало. В то время как 4 гб zswap работало всегда хорошо.

altwazar ★★★★★
()
Ответ на: комментарий от Radjah

Ну да, zswap может сбежать на диск, а вот у swap на zram с этим проблемы.

Почему? ZRAM не исключает использования обычного swap на диске, но у дискового ниже приоритет. Кончится реальная ОЗУ, выдавит как обычно на диск.

Frohike
()
Ответ на: комментарий от Frohike

Я потому и написал про приоритет. При этом у zswap есть «shrinker_enabled», чтобы при переполнении памяти оперативно выгружать страницы на диск, освобождая оперативную память для системы.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Ну да, zswap может сбежать на диск, а вот у swap на zram с этим проблемы.

Угу, но я даже не про это. Он эффективнее расходует память и 4 гб кэша хватает там, где 4 gb zram нет. А если выставить 8 гб кэш при 16 гб ram, то это не вызывает никаких проблем, тогда как с zram в некоторых ситуациях это сделает только хуже.

А так да, zswap еще на диск выгружает. При этом не только в случае нехватки памяти, но и холодные страницы. Из-за чего, условно, 16 gb с 4 gb zram свопом ощущаются как ~18-19 гб рам, а zswap с 8 гб кэшем (так как в отличие от zram можно спокойно поставить) как 20+. Zram хорош там, где свап на диске либо совсем нежизнеспособен (hdd, малинки на сдишках), либо когда памяти с запасом (8 гб zram на 64 гб ram десктопе лучше отсутствующего свопа).

Я практически везде использую zswap - ничего настраивать не надо, при этом не видел от него негативных побочных эффектов. Хоть на 16 гб буке с sata-ssd, хоть на 64 гб десктопе с быстрым nvme.

В теории, на 64 гб десктопе использование zram бы исключило проблемы с отзывчивостью, но я не сталкивался с проблемами с отзывчивостью из-за свопа на диске. Может быть, иногда, какое-нибудь приложение из-за этого и открывалось на пол секунды дольше, чем могло бы без свапа, но каких-то заметных пользователю проявлений я не видел.

altwazar ★★★★★
()