Linux: «Бесплатная» RAM за счет процессора
Если вы вдруг оказались с компьютером, в котором RAM распаяна, или все слоты уже использованы, или просто нет возможности добавить еще одну планку памяти, то существует простое решение, имя ему zram.
Я не буду подробно описывать все прелести zram, в интернете достаточно много информации о том, что это такое и как можно использовать. Здесь же я хочу предоставить короткую инструкцию, как быстро и просто «добавить» себе оперативной памяти в популярной ОС.
Что это?
Многие знают о существовании swap (файл подкачки), который начинает использоваться, когда оперативной памяти начинает не хватать. Я, как и многие, стараюсь избавляться от такой штуки, потому как swap использует для хранения данных наши ssd/hdd, что в свою очередь имеет минусы:
Но если выключить swap, то мы рискуем повиснуть в тот момент, когда физическая память закончится, ведь магическим образом она ниоткуда не появится. Или появится?!
zram — технология сжатия оперативной памяти. По сути это тот же swap, только размещен он в оперативной памяти и к нему применяются алгоритмы сжатия. Разумеется магия здесь происходит за счёт процессорного времени, потому, хорошо бы иметь процессор вместо пакетика сока.
Делаем
Вся процедура заключается в том, что мы отключим swap и zswap, а затем установим и настроим zram. В моем случае системой является Ubuntu 22.04.
sudo nano /etc/fstab #/swapfile none swap sw 0 0
- Удаляем более не нужный файл где у нас хранился swap
sudo nano /etc/default/grub GRUB_CMDLINE_LINUX="" на GRUB_CMDLINE_LINUX="zswap.enabled=0"
- Устанавливаем zram
sudo apt install zram-tools
sudo nano /etc/default/zramswap
В своей версии конфига я установил иной алгоритм сжатия (zstd), если процессор будет плохо справляться — можно попробовать менее требовательный lz4.
Объем для zram можно указать относительно физического объема памяти PERCENT, либо абсолютный SIZE. В моем случае это 99% от физического объма.
sudo systemctl restart zramswap.service
Удостовериться в том, что всё работает как мы хотели, поможет комманда
Подозреваю, что полезность этого решения будет зависить от того с чем вы работаете. В моем случае это написание кода, и тут всё хорошо сжимается, однако если вы работаете с графикой — скорее всего zram окажется не так эффективен.
Увеличить оперативную память
Можно ли увеличить оперативную память ноутбука на линукс за счет флэшки?
Оперативную — нет. А своп создать можно.
Т.е. если вам ОЗУ не хватает для какой-нибудь игры, это не спасёт, играть будет невозможно. А вот открыть какой-нибудь мегадокумент, не влезающий в ОЗУ станет возможно. Вот только работать будет проблематично.
Да ладно, это ещё неплохо. На фоне людей, которые агрейдят память смартфона установкой проги.
У меня не хватает озу для работы на виртуальной машине и хостовой одновременно,т.е. когда я работает виртуалка если я запускаю какой либо процесс на хостовой ос она зависает.Поможет ли этот способ в моем случае?
Да, возможно. Советую создать своп файл на флешке (если у вас своп ещё не используется)
Именно с флэшкой, скорее всего, своп будет работать адски медленно. Если разместить своп на ssd — будет вполне комфортно.
Да, но если у него всё виснет именно из-за нехватки ОЗУ, то, хоть и медленно, но работать будет. Другое дело, я ХЗ, отчего там виснет на самом деле. Кстати, зависит ещё и от флешки, я в кноппиксе создавал своп файл на флешке, было терпимо
tiinn ★★★★★ ( 03.07.19 14:36:35 MSK )
Последнее исправление: tiinn 03.07.19 14:37:37 MSK (всего исправлений: 1)
Не лучше ли на обычном HDD (или что там, в ноуте) свап нарезать?
kravzo ★★ ( 03.07.19 14:40:31 MSK )
Последнее исправление: kravzo 03.07.19 14:41:57 MSK (всего исправлений: 1)
На HDD — не лучше. Несмотря на то, что обычные флешки уступают хардам по скорости последовательного чтения, но время случайного доступа у них на порядок меньше, в случае свопа это решает.
Может, и лучше. А ещё лучше, если бы ТС сказал нам объём ОЗУ, параметры виртуальной машины, наименование дистрибутива и результат команды swapon -s.
Обычные флэшки дно по скорости на запись, так что нихрена не лучше.
Зависание — проблема ядра. Своп не поможет.
людей, которые агрейдят память смартфона установкой проги.
Но на телефоне можно проапгрейдить память установкой проги.
Фишка в том, что приложениям не выделяется вся память телефона, есть лимит на размер кучи. Лимит прописан в build.prop (или где там ещё в Android настройки), и установлен на этапе сборки прошивки. Если есть рут, можно перепаковать initramfs с новым значением, и тогда произойдёт «апргрейд». Приложения будут выгружаться из памяти чаще, но зато отдельным приложениям станет доступно больше памяти.
Но на телефоне можно проапгрейдить память установкой проги.
И после этого начинаются фризы от OOM как на десктопе?
Записки IT специалиста
Оперативная память сегодня недорога и доступна, но, тем не менее, продолжает оставаться достаточно дефицитным ресурсов. Это связано с несколькими факторами. Во-первых, аппетиты программного обеспечения к оперативной памяти постоянно растут, во-вторых, возможности расширения часто ограниченны аппаратными особенностями устройства. Но, если вы используете Linux, есть способ выйти за рамки этих ограничений и улучшить производительность системы при помощи zRam. Как это сделать — читайте в нашей статье.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
zRam — это модуль ядра Linux, создающий блочное устройство (RAM-диск) со сжатием на лету, которое подключается как раздел подкачки и позволяет тем самым увеличить предоставляемое системе количество памяти.
И вот здесь у многих читателей может возникнуть непонимание: как же так, системе и так не хватает памяти, а мы создаем в ней какие-то RAM-диски, да еще подключаем их как подкачку. С подкачкой вообще у многих начинающих Linux-пользователей взаимоотношения сложные, в то время как это один из важнейших инструментов, обеспечивающих производительную работу системы. Поэтому также рекомендуем вам ознакомиться со статьей:
Если же говорить коротко, то современные системы оперируют понятием виртуальной памяти, которая включает в себя как физическую память, так и пространства подкачки. Каждое приложение также получает собственное виртуальное адресное пространство, которое затем отражается на физическую память. Таким образом приложению все равно где физически находятся страницы памяти, главное — что приложение получило всю запрашиваемую память и может ее использовать.
Разница проявляется в скорости доступа. Так как скорость работы с дисками гораздо меньше скорости работы с памятью, то обращения к пространствам подкачки связано с определенным снижением производительности. Но в нашем случае мы получаем пространство подкачки в оперативной памяти и почти такое же быстрое как память.
А теперь о том, откуда берется дополнительная память и в чем выгода от использования zRam. Официальная документация предлагает ориентироваться на коэффициент сжатия памяти от 1:2 д 1:3, хотя на практике могут быть и более высокие результаты. Давайте возьмем самый слабый сценарий 1:2 и посмотрим, что у нас получится. Допустим у системы есть 2 ГБ физической памяти, полностью созданный и заполненный zRam такого же размера займет всего 1ГБ, таким образом у системы останется 1 ГБ физической памяти и добавится 2 ГБ практически столь же быстрой подкачки. Т.е. мы как-бы расширили размер оперативной памяти до 3 ГБ, пусть и за счет некоторого снижения скорости доступа и увеличения нагрузки на процессор.
Еще раз повторимся, любой процесс работает с виртуальным адресным пространством и для него нет разницы между данными в RAM и данными в подкачке, вся разница только в скорости доступа.
Далее мы рассмотрим, как настроить виртуальный диск подкачки при помощи zRam в Debian или Ubuntu, но данная инструкция также подойдет для всех основанных на этих ОС дистрибутивах.
Прежде всего установим пакет для работы с zRam:
Сразу же после установки будет создан и подключен как раздел подкачки виртуальный диск и запущена служба zramswap, но размер раздела там совсем скромный — 256 МБ, поэтому давайте настроим его под свои потребности. Для этого откроем /etc/default/zramswap и внесем в него некоторые изменения.
Прежде всего определимся с алгоритмом сжатия. Их приоритет в разных сценариях приведен сразу здесь, в комментариях. Если мы говорим о скорости, то, в порядке убывания, следует использовать lz4 > zstd > lzo, если о степени сжатия, то zstd > lzo > lz4. На наш взгляд, золотой серединой является zstd, поэтому раскомментируем и приведем к следующему виду опцию:
Теперь укажем размер создаваемого раздела, безопасно будет указать размер равный объему RAM, впоследствии это можно будет легко изменить. Для этого есть два варианта, указать значение в процентах:
Или жестко задав размер в МБ:
Ниже находится еще одна опция, указывающая приоритет раздела подкачки, чем больше число, тем выше приоритет. Обычно менять его не требуется, разве только что у вас уже есть несколько пространств подкачки с разным приоритетом, в таком случае значение следует изменить, чтобы созданное при помощи zRam пространство имело наивысший приоритет. По умолчанию значение приоритета — 100.
Для применения изменений достаточно перезапустить службу:
systemctl restart zramswap
Теперь давайте посмотрим на результаты, используя каждый раз идентичную нагрузку, проще всего это сделать при помощи браузера с одним и тем же набором страниц. Было, и пусть вас не смущает высокая нагрузка CPU, это воспроизведение HD-видео в браузере:
На первый взгляд разницы особо и не видно, в обоих случаях в подкачке около 500 МБ, но теперь они находятся в оперативной памяти, что положительно отзывается на реальном быстродействии системы, это заметно по отсутствию кратковременных задержек из-за обращения к страницам подкачки на дисковых устройствах.
Что здесь можно сделать еще? Давайте заставим систему более активно использовать подкачку. Зачем держать страницы в драгоценной памяти, когда их можно сжать и сбросить в не менее быстрый своп. Для этого откроем /etc/sysctl.conf и добавим или изменим при наличии опцию:
По умолчанию используется значение 60, максимальное — 200. Имеет смысл увеличить его до 160 — 180, наша задача — по максимуму использовать сжатую память, но не допускать выхода из zRam раздела.
Для применения изменений выполните:
Снова создадим нагрузку и посмотрим на результат:
Как видим, система стала гораздо активнее свопить, но быстродействие ее от этого не ухудшилось, даже наоборот, так как процессы, которым действительно нужна память, теперь ее практически сразу получают за счет более агрессивного использования пространства подкачки.
А теперь самое время оценить эффективность сжатой памяти, этот и многие другие парамерты можно посмотреть командой:
В выводе нас интересуют столбцы DATA и MEM-USED, отдельно их можно посмотреть командой:
Как видим в подкачке находится 1,1 ГБ данных, которые в сжатом виде занимают всего 231 МБ памяти, т.е. фактически мы получили коэффициент сжатия 1:4,7, это хороший результат, просто отличный. Опираясь на него, мы можем увеличить раздел zRam раздела на величину, превышающую объем памяти. Но будьте аккуратны. Прежде чем вносить изменения протестируйте сжатие под разными видами нагрузки, чтобы убедиться, что коэффициент остается постоянно высоким. В противном случае в подкачке могут оказаться данные с совершенно другим коэффициентом сжатия, и физическая память очень быстро закончится.
И еще один вопрос, который эпизодически поднимают в сети: нужно ли при использовании zRam выключать пространства подкачки на дисках? Нет, не нужно, так как в случае того, если вам не хватит zRam раздела именно следующий уровень подкачки поможет вам, хоть и со снижением производительности. сохранить работоспособность системы.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: