Swap больше не нужен!

Смелое утверждение в заголовке новости, не так ли? Тем не менее, если вам не нужна гибернация, то 8, 4 или даже 2 Гб оперативной памяти теперь должно хватить для выполнения повседневных задач. Даже 512 Мб хватит для того, чтобы загрузиться с Live USB, запустить Chromium и в нем немного поработать:

Как же так, скажите вы, ведь на скриншоте подключен своп? - и будете отчасти правы. Только это не классический своп на диске, а динамический, в выделяемой опетаривной памяти. Его особенность заключается в том, что он эффективно (от 3 до 9 раз) и очень быстро пережимает все данные. На скриншоте выше CLDX запущенная в виртуальной машине с 512 Мб ОЗУ. Для статистики удобно использовать утилиты htop и zramctl. По ним видно, что для того, чтобы запустить браузер, система скинула в своп 387 Мб (на момент выполнения zramctl), при этом от памяти zram взял только 78 Мб.

Вот другой пример, htop запущенный на стареньким нетбуке на Atom с 2Гб ОЗУ без использования дискового swap:

Я честно пытался загрузить нетбук задачами, но он упорно со всем справлялся. При этом за системой вполне себе можно было работать.

По умолчанию zram подключается если в системе отсутствует swap раздел, т.е. в первую очередь на Live USB. Изменить настройки можно в файле /etc/conf.d/zram:

# Compression algorithm for zram disk
COMPRESSION="zstd"

# Zram disk size in percent of RAM or absolute value with suffix (K,M,G)
DISKSIZE="200%"

# Start zram swap disk
# swapless - start only for swapless system
# always - start anyway
START="swapless"

Пусть вас не пугает выставленный по умолчанию параметр DISKSIZE, т.к. учитывается не пережатый объём данных. По факту, zram в памяти будет занимать значительно меньше места. Для установленных систем с подключенным swap разделом zram запускаться не будет. Для того, чтобы изменить это поведение, отредактируйте параметр START, вписав в него значение always.

Обновление попало в ночные сборки начиная с 20200526.


P.S. Несколько лет назад мы внедряли zswap в Calculate Linux, но периодически стали поступать жалобы, что система при большой нагрузке могла зависнуть. Со временем от zswap решено было отказаться. Сейчас мы провели серию тестов и таких проблем у zram не выявили. Сотрудники компании работающие с флешек уже используют zram.
Если использовать zram совместно с zswap, то в zram попадают уже пережатые данные и он становится неэффективным. У zram есть параметр writeback, включённый по умолчанию в обновлении ядра (5.4.42). Как я понимаю он позволяет сбрасывать данные на диск, если они не помещаются в выделенный раздел.

3 Likes

Небольшое дополнение. Сравнил релиз CLDX 20 с двумя сборками, доступными сейчас на зеркалах - 20200521 и 20200526.

  • CLDX 20 - загружается с 512 Мб ОЗУ, но установить можно только из консоли предварительно остановив Xorg сервер.
  • CLDX 20200521 - уже не загружается графический сеанс при 512 Мб ОЗУ.
  • CLDX 20200526 - загружается и устанавливается графическим установщиком из X-ов при 384 Мб ОЗУ!
1 Like

Отличная новость! Читал про zram и как раз думал, что надо бы его прикрутить, а тут такой подарок. Осталось только загружать и работать полностью в RAM, а изменения сохранять в файл и вот уже, полностью неубиваеиая система готова.

Вчера полетел основной SSD диск (с CLDX на борту, данные на других дисках и с ними всё в порядке), вот смотрю и читаю, что нового появилось на просторах интернета. В принципе, запихнуть Линукс (любой) в оперативную память и работать там можно уже сейчас, но проблемы с обновлениями (каждый раз перезаписывать вручную файл, если нужно что-то сохранить).

Но, к сожалению, что-то подобное Puppyrus, с сохранением на выключении и в работе полностью в оперативной памяти обычные дистрибутивы не делают. Почему? Непонятно. Любые тесты скажут, что работать прямо в оперативной памяти быстрее, удобнее и безопаснее, но воз и ныне там. Учитывая такие технологии как zram, оперативная память для свопа вообще увеличивается чуть-ли не втрое.

Вроде бы, сам бог велел, но никто не делает. Понятно, что не всем нужно, что на многие компьютеры установлено мало оперативной памяти, но всё же её сейчас намного больше на домашних компьютерах. У меня, например, 20 ГБ. То есть, весь Calculate помещается и ещё останется с запасом на RAM, а при наличии zram и на своп.

В общем, ищу полноценный дистрибутив работающий полностью в RAM. Пока попробую создать самоделку на основе кальки. Интересно, что получится…

С начала пандемии мы снабдили всех сотрудников загрузочными флешками. При желании, систему можно загрузить в т.ч. полностью в память. Вполне неплохо получилось, на ssd корпоративных ноутбуков ставим по тому же принципу. Я думаю в 4-е утилиты мы перенесем это решение.

Это было бы прекрасно. С нетерпением жду этой возможности. Если будет ещё такая фича, как “сохранение изменений на диск” при выключении компьютера или если будет диск (или флешка) на которую во время работы будут периодически сбрасываться данные, а при выключении будет спрашивать, сохранять эти данные или нет, то будет вообще предел мечтаний.

Или создать проще, два режима работы. Один всё в RAM, для работы, для просмотра фильмов и тд. И второй режим, с диска, для обновления, для установки новых программ и тд… а потом, перезагрузка и работаешь с дистрибутива в RAM, обновлённого и с нужными программами.

Заметил, кстати, что последние версии кальки стали быстрее работать, как с жёсткого диска (на моём компе), так и с флешки, если надо переустановить или добраться до файлов на другом компьютере, то если использую Calculate, то быстрее загружается, чем другие дистрибутивы. Также поддерживает больше разнообразных компьютеров. Это радует, вы делаете один из самых стабильных и быстрых дистрибутивов и за это вам большое спасибо.

1 Like

При желании, систему можно загрузить в т.ч. полностью в память.

Кстати, вот, получилось - заметка, где я описал процесс запихивания rootfs полностью в RAM. Но пока только с Debian-подобным дистрибутивом. Для Gentoo и Calculate, к сожалению, нет достаточно примеров, чтобы кто-то не разбирающийся досконально в Linux, мог сделать подобное. В этой заметке, конечно, всё просто сделано и неправильно, с точки зрения изменения файлов, но так было проще всего и такие были примеры.

Про Gentoo читал, что там initrd надо создавать через dracut или genkernel, но это для меня пока сложно. Думаю о том, чтобы подкинуть уже сделанный в Debian файл Calculate Linux’у. Работает просто фантастически быстро. Не сравнить ни с чем.

Вопрос: почему при установке по умолчанию не отображается раздел Zram, хотя он будет создан? ( на втором скрине переустановка системы и Zram от первой установки)
image