- Настройка zRam в Arch/Manjaro Linux
- Простая установка и настройка с помощью ezzram из AUR
- Ручная настройка с помощью zramctl
- Создание разделов, настройка и включение zRam
- Linux — используем память с пользой с помощью zRam
- Раздел подкачки в оперативной памяти
- Использование zRam в качестве swap
- Общий алгоритм монтирования swap в zRam
- Использование zRam+swap в Ubuntu
- Ubuntu. Установка и настройка zRAM
- Установка zram-config
- Ручная установка
- Использование zRam для увеличения количества доступной памяти под Linux
- Блог начинающего линуксоида.
- Страницы
- вторник, 15 декабря 2015 г.
- Zram и Zswap или как увеличить эффективность оперативной памяти
- Zram или Zswap?
- Установка.
Настройка zRam в Arch/Manjaro Linux
Как-то в блоге я уже писал о том, как настроить zRam на Raspberry Pi 3. Что это такое и чем оно полезно, можно узнать на Википедии. В этом материале речь пойдёт о том, как настроить zRam в Arch Linux или его варианте для новичков — Manjaro Linux.
Простая установка и настройка с помощью ezzram из AUR
В AUR есть сценарий установки пакета ezzram, который представляет из себя python-скрипт с простым конфигурационным файлом и файлом сервиса для systemd. Устанавливается как обычно любым AUR-хелпером, например yay:
После установки нужно добавить а втозапуск и запустить сервис ezzram:
Конфигурационный файл лежит по пути /etc/ezzram.conf. В нём всего три пораметра:
- size — размер раздела zram в мегабайтах
- algorithm — алгоритм сжатия данных в zram разделе
- cores — количество используемых ядер ЦП
Алгоритм сжатия по-умолчанию является оптимальным для абсолютного большинства пользователей, размер zram разумно установить в пределах 30-50% от полного объёма ОЗУ, ну а в «cores» указываем количество физических ядер своего центрального процессора. После внесения изменений сохраняем файл и активируем новую конфигурацию перезапуском сервиса:
Ручная настройка с помощью zramctl
Для тех, кто любит делать всё «вручную».
Zramctl — это скрипт на bash, который поможет в создании и настройке разделов zRam. Установить его можно из AUR, пакет называется zramswap. С помощью yay это можно сделать так:
Создание разделов, настройка и включение zRam
Чтобы для проверки создать и подключить раздел zRam без сохранения изменений в системе, выполним следующие команды консоли. Для понимания того, что делаем, я прокомментировал каждую строку.
Проверить включен ли zRam можно командой:
В ответ должны получить такой вывод:
Если так, то всё работает нормально и zRam в системе включен и настроен правильно.
Теперь можно сделать так, чтобы zRam автоматически включался и настраивался при запуске системы. Один из способов — использовать системный планировщик заданий cron. Т.к. по умолчанию в Arch Linux команды crontab -e, с помощью которой редактируются задачи cron нет, мы добавим её в систему установив пакет cronie.
Теперь привычным образом с помощью crontab создаём задачу cron, которая будет выполняться при каждой загрузке системы. Я редактирую конфиги с помощью nano, так что в моём случае команда редактирования crontab будет выглядеть так:
Создаём задание cron, выполняющееся при загрузке системы путём вставки следующей строки:
Не забываем изменить параметр «—size 2048M» на нужный Вам размер раздела zRam. Сохраняем изменения комбинацией клавиш CTRL+O и закрываем nano — CTRL+X.
Источник
Linux — используем память с пользой с помощью zRam
Что такое zRam?
zRam — относительно новый и пока малоизвестный модуль ядра Linux. Суть его в том, что он позволяет создавать виртуальные блочные устройства прямо в оперативной памяти компьютера. Но главное его отличие от tmpfs данные, помещаемые в память сжимаются алгоритмом lzo, что позволяет запихать в 1гб пространства в оперативной памяти 2-3гб информации. Какие преимущества zRam может дать? Читаем ниже.
Раздел подкачки в оперативной памяти
Раньше эта мысль вызвала бы непонимание или насмешки в сторону человека, её продвигающую. Однако времена поменялись.
Итак, представим. У вас компьютер с небольшим объемом памяти, 512 мб или 1024 мб. В принципе для повседневной работы Linux-based операционных систем этого хватит, но и здесь бывают случаи, когда памяти надо гораздо больше, например для сборки некоторых пакетов может понадобится 8гб памяти . Для этого и существует такое явление, как раздел подкачки, он же swap. Вроде всё прекрасно и из ситуации вышли, но скорость записи/чтения у жестких дисков на несколько порядков ниже, чем у оперативной памяти. Даже пускай вы используете быстрые твердотельные накопители SSD (на которых swap размещать вообще не советуют, кстати), то и они значительно уступают оперативной памяти по скорости.
А теперь развиваем мысль и подключаем модуль ядра zRam и размещаем на созданном виртуальном блочном устройстве раздел подкачки . Скорость работы с этими данными будут несколько ниже, чем напрямую с памятью из-за сжатия их, однако всё же никакой жесткий диск или твердотельный накопитель не сможет сравниться. Да и нагрузку на последние снимем таким способом.
Что же у нас получается? Если памяти вдруг перестает хватать, компьютер будет сжимать «блоки» памяти и размещать опять таки в памяти. Звучит красиво, а главное в наши дни это реально.
Что нам это даст? Бесплатное «увеличение» оперативной памяти на серверах, уменьшение нагрузки на жесткий диск и твердотельные накопители. Последнее особенно актуально на нетбуках — памяти там обычно кот наплакал, а увеличить не всегда возможно .
Использование zRam в качестве swap
Общий алгоритм монтирования swap в zRam
Операционных систем основанных на linux миллионы, так что для начала представлю общий алгоритм.
1. Если нет модуля zRam — пересобрать ядро, включив его.
2. Создать блочные устройства zRam:
параметр num_devices — количество блочных устройств zRam. Дело в том, что сжатие происходит в один поток, так что есть шанс получить выйгрыш в производительности, создав кол-во блочных устройств, равное количеству ядер в вашем процессоре.
3. Задать размер блочным устройствам:
Здесь задается размер 512мб каждому устройству zRam.
Какой размер выбрать — дело весьма индивидуальное. Могу лишь посоветовать для общего случая — суммарный размер должен быть равен половине объема вашей оперативной памяти.
4. Создание разделов подкачки в zRam:
5. Монтирование разделов подкачки:
Здесь параметр -p 5 устанавливает приоритет раздела подкачки. По умолчанию он равен -p 1. Если Вы не планируете использовать раздел подкачки на жестком диске или твердотельном накопителе, то в принципе можете его не использовать.
6. PROFIT!
Использование zRam+swap в Ubuntu
Если вы, как и я, используете Linux Ubuntu, то есть решение для ленивых.
Для Ubuntu 11.04, 11.10, 12.04, 12.10
Для Ubuntu 13.04 и 13.10
Ну вот и всё. Данные команды сами сделают то, что описано выше.
Для проверки, подключились ли разделы подкачек в zRam:
На этом всё. На долго не прощаюсь 😉
Помогла статья? Поддержи блог — расскажи о нём на своей странице в социальной сети.
Источник
Ubuntu. Установка и настройка zRAM
Сегодня, оставлю тут короткую заметку о zRAM, этот модуль позволяет избавится от медленного SWAP на диске или, например, на SSD не желательно использовать SWAP, т.к. это порождает большое количество записи на диск. Однако zRAM не хранит SWAP на самом диске, он хранит их в RAM и сжимает данные до 3-х раз, в этом и есть профит!
Вот что говорит об этом модуле Википедия:
zRam — модуль ядра Linux (ранее известный как compcache). Он увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жёстком диске. Скорость обмена с оперативной памятью быстрее, чем с жёстким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объёмом оперативной памяти.
Хотя стоимость оперативной памяти сейчас относительно низкая, zRam всё же позволяет получить преимущества на ноутбуках, «слабых» компьютерах, при виртуализации и во встраиваемых системах, использующих флеш-память, которая имеет ограниченное количество циклов перезаписи.
Настоятельно рекомендую использовать zRAM вместо дискового SWAP, особенно заметно его использование на слабых нетбуках или на виртуалках типа DigitalOcean или Amazon EC2.
Установка zram-config
Попробуйте сначала так:
Если не ругается, то у вас уже есть SWAP в виде zRAM. Ну а если выругается, то надо поставить «linux-image-generic» и перезагрузится, после чего снова попробовать поставить «zram-config»:
В новых версиях пакета создается сервис-файл для systemd, надо будет запустить сервис вручную: После перезагрузки всё запустится уже самостоятельно.
zram-config расчитает кол-во ядер процессора и поставит столько же устройств, можно проверить так:
Ручная установка
Если вам не нравится какой размер SWAP-разделов сделал zram-config, то можете сами создать нужные:
- num_devices — кол-во swap-разделов, обычно надо указывать равное кол-ву ядер процессора;
- 1040646144 — размер swap-раздела в байтах;
- /dev/zram0 — путь до устройства, таких устройств может быть много, зависит от того что вы указали в num_devices;
- swapon . -p 10 — приоритет, чем больше тем раньше будет использоваться указанный раздел.
После чего проверяете ваши swap-разделы:
Собственно все, дайте новых сил вашим слабым компьютерам на Linux!
Источник
Использование zRam для увеличения количества доступной памяти под Linux
Уже 2 месяца использую на своих компьютерах модуль zRam и хочу поделиться результатами. На практике он позволил мне не используя раздел подкачки, и не получая видимого замедления работы компьютера увеличить размер оперативной памяти в 2.5-3 раза. На сервере виртуалок тот же подход позволил очень ощутимо увеличить отзывчивость при нехватке памяти.
Заинтересовавшихся прошу под кат.
zRam это экспериментальный модуль ядра Linux (ранее известный как «compcache»). Он увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жестком диске. Скорость обмена с оперативной памятью быстрее, чем с жестким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объемом оперативной памяти.
Для пользователя все выглядит так: для начала нужно загрузить модуль (предварительно скомпилировав если он отсутствует)
В num_devices задается количество сжатых блочных устройств, которое будет создано.
Для наиболее оптимального использования CPU стоит учесть: сжатие каждого устройства zram однопоточное. Потому я создаю их по количеству ядер.
При настройке модуля задается фиксированный размер НЕ сжатых данных в байтах
В итоге будет создано устройство /dev/zram0 заданного размера
Данные записанные на него будут прозрачно сжаты в памяти. Что делать с ним далее — уже ваш выбор, я на этих устройствах создаю разделы подкачки.
Далее уже ядро думает само какие данные туда складывать в зависимости от того как часто вы к ним обращаетесь и как много памяти свободно.
Мой опыт показывает, что степень сжатия обычно 1 к 3.
На практике это позволило на ноутбуке в 8Gb памяти вынести компиляцию libreoffice в tmpfs. (она требует 7 Гбайт временных файлов и примерно 1 Гбайт памяти потребляет каждый поток gcc при сборке).
Область применения такой идеи крайне широка:
- нетбуки: у девушки ноутбук в двух-ядерным Atom-мом. И всего лишь 2 гигабайта оперативной памяти (больше не вставить). В итоге одна «наглая рыжая морда» все время съедала всю память и посылала машину в swap. Подключил zRam и девушка довольна
- Сервера виртуализации: прозрачное сжатие памяти виртуальных машин может позволить выполнять большее число виртуальных машин одновременно: у нас есть сервер используемый для тестирования веб-приложения под различными конфигурациями клиентов (операционки, браузеры, версии плагинов к браузерам, настройки локалей и кодировок). Прохождение тестов на нем всегда было «задумчивым» процессом. Использование zRam позволило уменьшить время прохождение тестов с 30 минут до 18
Дополнение:
Изначально разработка велась под названием compcache, и первые рабочие версии были сделаны для ядра 2.6.26(Июль 2008)
Начиная с декабря 2009 года и ядра 2.6.33 оно доступно в ядре, в разделе Staging. Для более старый ядер патчи все еще доступны на вышеуказанном сайте.
В ядре 3.8 должно было быть вынесено из Staging, но это не произошло.
Источник
Блог начинающего линуксоида.
советы, руководства, инструкции.
Страницы
вторник, 15 декабря 2015 г.
Zram и Zswap или как увеличить эффективность оперативной памяти
Данная статья будет актуальна для владельцев нетбуков, компьютеров с малым количеством оперативки, людей, которые запускают много ресурсоёмких приложений, которые в свою очередь потребляют много памяти и так далее. В ядре Linux не так давно появились две замечательные технологии — zram и zswap. Опишу что это и для чего:
ZRAM — модуль ядра Linux, ранее известный как compcache. До версии ядра 3.14 находился в эксперементальной ветке, с 3.14 перемещён в основную. Суть его в том, что в оперативной памяти создаётся сжатый раздел подкачки (swap). Создавая swap в ОЗУ, мы тем самым хоть и уменьшаем объем доступной оперативной памяти, но тем не менее информация в оперативной памяти всегда хранится в несжатом виде, а при использовании ZRAM происходит следующее: как только системе начинает не хватать оперативной памяти, она начинает активно занимать swap, а так как swap у нас в оперативной-же памяти, то по факту система начинает просто сжимать информацию из оперативки и помещать ее в оперативку же. Скорость работы ОЗУ всегда существенно выше чем дисковой подсистемы, а алгоритмы сжатия lzo и lz4 настолько быстры, что в итоге мы получаем существенное «увеличение» оперативной памяти за счет небольших процессорных издержек на архивацию. Таким образом, ZRAM позволяет разместить в оперативной памяти в несколько раз больше информации за счёт сжатия. Эта технология активно используется в Android, ТВ-приставках, ChromeOS, SteamOS и много где ещё. При использовании ZRAM, swap-раздел на диске необязателен. Это особенно полезно для SSD-накопителей, так как частые записи для них вредны.
ZSWAP — модуль ядра Linux, доступный с версии 3.11. Отличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные. Размер пула можно указать вручную, по умолчанию он динамический (то есть будет использовать всю доступную оперативку). Реализация такого подхода позволяет, при возникновении необходимости сброса памяти в раздел подкачки, сократить ввод-вывод и повысить скорость работы системы в целом, за счет того, что по возможности избегается использование медленного носителя. Ценой сокращения ввода/вывода является увеличение нагрузки на процессор, который тратит дополнительные ресурсы на сжатие и распаковку данных. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш. Можно считать ZSWAP продвинутым вариантом ZRAM.
Zram или Zswap?
Чтобы узнать что из этого лучше подойдёт вам, возьмём два примера: ноутбук с 4 гигами оперативки и медленным жёстким диском (представьте себе работу подкачки на таком) или с SSD-накопителем; компьютер с 8 гигами оперативки, на котором планируется запускать много виртуальных машин и других ресурсоёмких приложений. В первом случае, более подходящим будет ZRAM, так как ему не нужен swap-раздел на диске (это особенно вредно для SSD) и он позволит размещать все данные непосредственно в памяти. Однако раздел swap нужно обязательно создать если вы будете использовать на ноутбуке режим сна. На компьютере предпочтительнее будет ZSWAP, так как оперативка не будет занята виртуальными swap-файлами (а виртуалкам нужно много оперативки), а в оперативке будет хранится только сжатый кэш, что при нехватке памяти предотвратит своппинг, а в критической ситуации — быстренько скинет его на swap-раздел на диске.
Установка.
Примеры установки я покажу на дистрибутиве Ubuntu 14.04 и Debian 8. В остальных дистрибутивах различия будут не существенными (обратитесь к документации вашего дистрибутива). Начнём с ZRAM. Для Ubuntu всё просто:
sudo apt install zram-config
Всё. Этот скрипт определит количество оперативной памяти в вашей системе, а также количество ядер процессора и создаст swap-файла в памяти (блочные устройства /dev/zram) по количеству ядер. Это нужно потому что сжатие данных однопоточное (один поток==одно ядро). По умолчанию размер такого swap-файла равен 1/2 от общего количества оперативки. После перезагрузки, выполните в терминале команду swapon -s и вы увидите помимо реального swap-раздела, несколько разделов /dev/zram. Далее. Если вы изменяли значение vm.swappiness (для уменьшения порога включения подкачки), например выставили значение vm.swappiness = 10 , то измените его на 40, дабы уже при исчерпании 60% оперативки, включался ZRAM. Если вы ничего не трогали, то можете либо оставить значение по умолчанию (60, то есть при исчерпании 40% оперативки), либо:
sudo nano /etc/sysctl.conf
Дописываем в конец строку:
сохраняем и выполняем:
либо перезагружаемся. Вот и всё. Для Debian всё немного сложнее. Но совсем чуть чуть 🙂 Открываем терминал, вводим:
sudo nano /etc/init.d/zram
Вставляем следующий скрипт:
#!/bin/sh
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO
Сохраняем. Далее даём права на исполнение:
sudo chmod +x /etc/init.d/zram
sudo insserv zram
Перезагружаемся и всё.
Теперь о ZSWAP. Здесь всё значительно проще. Нужно лишь передать ядру во время загрузки, параметр zswap.enabled=1. Для этого открываем файл /etc/default/grub
sudo nano /etc/default/grub
И в строку GRUB_CMDLINE_LINUX_DEFAULT дописываем этот параметр. Чтобы было вот так:
и перезагрузка. После перезагрузки, можете убедиться в работе ZSWAP, введя команду dmesg | grep zswap Если ответом будет
[ 1.273249] zswap: loading zswap
[ 1.273252] zswap: using lzo compressor
значит всё сработало на отлично. Способ включения ZSWAP одинаков для большинства дистрибутивов. Если нужно ограничить объём пула для ZSWAP, то там же в параметрах указываем:
где x — процент отведённой памяти под ZSWAP.
Вот так мы быстро и без лишних телодвижений, увеличили эффективность оперативной памяти, лишь незначительно увеличив нагрузку на процессор.
Источник