red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
Преамбула zRam - это модуль ядра Linux который включён в стандартную поставку ядра начиная с версии 3.14. Целью данного модуля служит создание блочного устройства в оперативной памяти, но в отличии от tmpfs, данные записываются на него в сжатом виде. Поэтому одно из основных его полезных применений это возможность создание прессующего раздела подкачки в оперативной памяти. Всё это позволяет, хоть и неявно, увеличить размер ОЗУ среднем в 2-3 раза, за счёт незначительной нагрузки ЦП на компрессию и декомпрессию данных. На данный момент zRam поддерживает два вида компрессии: lzo(по умолчании) и lz4(начиная с версии ядра 3.15). Амбула Итак, у нас есть модуль и знание для чего он нужен, осталось всё это дело применить на практике. Есть несколько вариантов как всё это запилить: 1) вручную -- для этого есть интересная статья на хабре, а также описание на kernel.org. 2) с помощью zramswap из Аура -- интересующиеся могут посмотреть тему на этом форуме где об говорится. 3) systemd-swap -- об этом ниже. Рассмотрим третий способ. systemd-swap - как написано на github-е это скрипт автоматического создания и подключения: zram swap, swap файлы (через loop) устройств, swap. а) Устанавливаем:
б) Настраиваем: Вся настройка осуществляется в файле /etc/systemd-swap.conf Для наших нужд достаточно раскомментировать всего три строчки. - первая: размер создаваемого раздела - по умолчанию 1/4 от размера ОЗУ, если маловато памяти то лучше поставить 1/3 или 1/2. zram[size]=$[${sys[ram_size]}/4]K - вторая: количество потоков сжатия - по умолчанию используется один поток, если раскомментировать то количество потоков будет равно количеству ядер процессора. zram[streams]=${sys[cpu_count]} - третья: алгоритм сжатия - по умолчанию используется lz4, раньше было lzo. zram[alg]=lz4 в) Добавляем в автозагрузку и запускаем:
г) Посмотреть статус устройства: zramctl - простой инструмент для контроля устройств zram (создать, удалить, найти, статус). Входит в состав util-linux начиная с версии 2.26. гдеNAME - название(устройство) ALGORITHM - алгоритм сжатия DISKSIZE - размер раздела подкачки в оперативной памяти DATA - размер данных до сжатия COMPR - размер данных после сжатия TOTAL - STREAMS - количество потоков сжатия MOUNTPOINT - точка монтирования Постамбула Вот таким не хитрым способом можно увеличить оперативную память. В среднем у меня жмётся в три раза, но конечно всё зависит от поступающих данных. Единственное что хотелось ещё добавить это то что существует такой параметр ядра vm.swappiness отвечающий за то при каком уровне свободной оперативной памяти нужно использовать своп, по умолчанию он равен 60(40% заполнено а 60% свободно). Если учесть что средний параметр сжатия равен 1 к 3 , а также оставить некий запас прочности то можно очень приблизительно определить граничные значения: --- итоговая память ~ RAM*3 : vm.swappiness = 90; ZRAM/RAM = 1/1 (при большой нагрузке возможна нестабильность системы) --- итоговая память ~ RAM*2 : vm.swappiness ~ 70; ZRAM/RAM = 1/2 --- итоговая память ~ RAM*1.5 : vm.swappiness = 60; ZRAM/RAM = 1/4 или 1/3 Поменять vm.swappiness можно следующим образом Создать файл /etc/sysctl.d/99-sysctl.conf и добавим в него строчку: Подгрузить созданный файл конфигурации: Посмотреть что параметр действительно поменялся можно выполнив команду:
На этом всё. Спасибо за внимание. update: 25.03.2015 Обновил статью так как на днях вышла новая версия набора системных linux утилит util-linux 2.26, в эту версию вошел инструмент zramctl. При установке/обновлении util-linux, пакет zramctl будет удалён. В остальном практически всё осталось как и прежде. |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
red2-3 раза перебор!!! 10-25% более реальные данные. сам проверял когда было памяти всего 2Г. при размере памяти 4Г и более нет никакого смысла в использовании. да еще стоит помнить о зацикливании, zRam как и tmpfs может тоже уходить в свап, но свап то на zRam, в какой то момент происходит лавинообразная потеря памяти с конкретным подвисанием.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
nafanjanafanja, я спецом привёл вывод комманды zramctl status (где ORIG - это оригинальный размер, а COMPRES - это размер сжатых данных). nafanjaну почему же, мой опыт говорит обратное. По крайней мере при четырёх гигах это уж точно, когда открыто с десяток программ да и ещё 100500 открытых вкладок в браузере, то гном уже не хочет запускать программы и говорит что мало памяти. nafanjaпока с этим не сталкивался, но спасибо, будем иметь в виду если что. |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
а ты проведи эксперимент. 1 без использования сжатого свапа в памяти, забей всю память 4Г под завязку. 2 убери 2Г, включи сжатый свап, и опять забей память по максимуму тем же самым. и увидишь что так же забить не получится, не хватит памяти. хотя по идее память должно была остаться на прежнем уровне в 4Г или даже стать 6Г. )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
nafanjaк сожалению провести такой эксперимент мне будет весьма затруднительно так как использую одну планку в 4 гига, можно конечно попробовать всё это протестировать на виртуалке но для этого нужно много подготовительных действий да и чистота эксперимента будет нарушена. Да и в вашем случае вы скорее всего имели дело с zramswap, который на сколько я помню создавал разделы подкачки 1/1 да и еще при том для каждого ядра, а если ещё учесть что сам параметр ядра vm.swappiness оставался равным 60% то будет не удивительна нестабильность работы и как вы упоминали выше "зацикливание". На сколько я могу судить ваш неудачный опыт можно свести к четырём пунктам: - использовали сжатие lzo которое хуже сжимает данные чем lz4 - много плохо сжимаемых данных - плохо подогнанные параметры(чтобы уменьшить вероятность свопания самого себя) - не оставлен запас прочности |
dartsergius |
|
Темы:
18
Сообщения:
238
Участник с: 15 декабря 2011
|
На 128 метров оперативы есть смысл мудрить эту штуку? Ну и с процом без fpu? | |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
redвот это более реально. если все четко заточить, то возможно и можно будет из 2Г выжать 3Г. dartsergius))) уверен смысла нет. но можешь попробовать.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
dartsergiusбез fpu, наверное, лучше не стоит ) но если велико желание то можно и попробовать, может и нормально выйдет. |
vasek |
|
Темы:
47
Сообщения:
11870
Участник с: 17 февраля 2013
|
Особого преимущества от zram и zcaсhe при нормальной работе не замечаю (игрался с ними много). Но при работе с картами местности (приходится периодически работать) предпочитаю Ubuntu или Windows из-за отсутствия тормозов и зависонов при работе с картами в этих системах.
Ошибки не исчезают с опытом - они просто умнеют
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
vasekна одной и той же машине? zcaсhe вроде как уже убрали из ядра что то не срослось, хотя идея была хорошая. zswap только прижился.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |