Еще один вопрос об использовании 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 МБ памяти.


⁽¹⁾ https://github.com/Nefelim4ag/systemd-swap

Другие вопросы по тегам