Еще один вопрос об использовании ZRAM для подкачки
Я использую 16.04 на ноутбуке с твердотельным накопителем 1 ГБ и оперативной памятью 20 ГБ. Файловая система btrfs, и я не создавал swap. Это не вызывало у меня никаких проблем больше года. Однако я хотел бы попробовать использовать ZRAM для обмена и прочитать следующее здесь: https://seravo.fi/2016/perfect-btrfs-setup-for-a-server
"Чтобы установить zram, просто запустите: apt install zram-config. После следующей перезагрузки автоматически появится устройство zram, которое система использует для подкачки. Не имеет значения, сколько оперативной памяти имеет система, потому что в какой-то момент ядро все равно поменяется местами. что-то наше из активной памяти, чтобы поменяться, чтобы использовать активную память более эффективно. "
Я сделал это, и когда я делаю cat / proc / swaps после перезагрузки, я получаю:
Filename Type Size Used Priority
/dev/zram0 partition 2553148 0 5
/dev/zram1 partition 2553148 0 5
/dev/zram2 partition 2553148 0 5
/dev/zram3 partition 2553148 0 5
Так что теперь у меня, похоже, есть своп в ZRAM. Что мне интересно, так это все, что мне нужно сделать. Мне не нужно создавать и включать файл подкачки в ZRAM? Я спрашиваю, так как я читаю здесь на Ask Ubuntu: ZRAM против обычного раздела подкачки
что, цитата: "Затем вы можете отформатировать его для свопинга с помощью mkswap /dev/zram0 и включить обмен на него с помощью swapon /dev/zram0".
Это немного сбивает с толку, поскольку в соответствии с первым сайтом, на который я ссылался, все, что мне нужно, это включить ZRAM, и система будет использовать его, в то время как в AskUbuntu мне кажется, что мне придется создавать и включать swap в ZRAM.
Может ли кто-нибудь уточнить это?
2 ответа
Все, что вам нужно сделать, это установить zram-config
пакет, который, как следует из названия, настраивает Zram для вас. cat /proc/swaps
является точным: Zram уже активен как своп.
Другой вопрос о Zram, а не о zram-config
пакет.
ZRAM - это просто сжатый драйвер ramdisk. Когда вы включаете его, вы получаете блочные устройства, /dev/zram[0-9]+
и все данные, хранящиеся в этом блочном устройстве, будут сжаты и сохранены в памяти.
Поскольку это всего лишь блочное устройство, вы можете использовать его для хранения чего угодно, например, файловой системы или пространства подкачки - не особенно полезно хранить разделы, поскольку при разбиении на разделы новые устройства для каждого раздела, такие как ваш, не отображаются. /dev/hd[a-z]
или же /dev/sd[a-z]
и т. д. будет.
Итак, чтобы использовать его для обмена, вы должны сначала отформатировать его mkswap
, а затем сделать Linux поменять на него с swapon
, zram-config
это всего лишь официальный пакет Ubuntu, который делает это автоматически для вас при загрузке (поскольку это виртуальный диск, все данные, хранящиеся в нем, исчезают при перезагрузке). Есть другие сценарии, которые будут делать то же самое. Мне особенно нравится systemd-swap
, Который я использую как в своей коробке ArchLinux, так и в моем Raspberry Pi (который запускает дистрибутив, похожий на Debian) и который выполняет автоматическую замену на дисковых свопах, ZRAM и Zswap. Я вполне уверен, что это работает и с Ubuntu.
Любопытно, что именно так zram ведет себя в отношении использования памяти: хотя максимальный объем данных, которые вы можете хранить на этом устройстве, фиксирован, объем памяти, который он использует, зависит от степени сжатия данных. Например:
% sudo swapoff /dev/zram0
% sudo dd if=/dev/zero of=/dev/zram0 bs=1M
dd: writing to '/dev/zram0': No space left on device
243+0 records in
242+0 records out
254492672 bytes (254 MB, 243 MiB) copied, 6.10473 s, 41.7 MB/s
% free -h
total used free shared buff/cache available
Mem: 970M 47M 793M 25M 128M 848M
Swap: 0B 0B 0B
% sudo dd if=/dev/urandom of=/dev/zram0 bs=1M
dd: error writing '/dev/zram0': No space left on device
243+0 records in
242+0 records out
254492672 bytes (254 MB, 243 MiB) copied, 13.2982 s, 19.1 MB/s
% free -h
total used free shared buff/cache available
Mem: 970M 292M 549M 25M 128M 603M
Swap: 0B 0B 0B
Таким образом, хотя мое zram-устройство имеет 254 МБ пространства, при заполнении нулями оно практически не использует память, а при заполнении очень несжимаемыми случайными данными оно использует 254 МБ памяти.