LINUX.ORG.RU

Расскажите про zram

 ,


2

3

Узнал о такой штуке, как zRam, позволяющей сжимать данные в оперативной памяти. Какие истории успеха есть у ЛОРовцев? Не будет ли она тормозить систему за счет сжатия данных, когда места хватает? Какой в среднем дает прирост по объему? Есть ли смысл использовать в системе 2 ГБ + 1.3 ГГц*1 ядро? А в 3 ГБ + 2.6 ГГц*2 ядра?

★★★★★

Последнее исправление: Klymedy (всего исправлений: 1)

Тестов и замеров специальных не делал, но виртуалки с 4-6 гигами оперативы, которые периодически свапятся, перестали фризиться и фаза свапа пролетает быстрее.

SevikL ★★★★★
()

Не будет ли она тормозить систему за счет сжатия данных, когда места хватает?

Не тормозит. Гораздо лучше чем, если своп на диске или zswap. swappines лучше не трогать — 60 лучше всего.

Какой в среднем дает прирост по объему?

В зависимости от данных. У меня вроде 1.5-2 раза выходило, точно не скажу.

Есть ли смысл использовать в системе 2 ГБ + 1.3 ГГц*1 ядро? А в 3 ГБ + 2.6 ГГц*2 ядра?

Смотря что запускаешь. На 4ГБ нетбуке было полегче, но не особо. На ненагруженном сервере и дисковый своп не тормозит особо (можно и подождать).

Очень хорошо экономит память использование i686 архитектуры. На 512МБ VPS я извращался и с zram и c zwap и с uksm — все фигня, на 32 битах влезло еще столько же демонов без всяких zram.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 2)

На Raspberry Pi 2 делал два диска:

  • 128 МБ под своп
  • 42 МБ под логи yacy (ext2)

Логи жмутся примерно 1 к 3, своп как повезет, но раза в два точно. Если считать отношение занимаемой памяти к исходному размеру, то 1:2 - 10:15 получается.

Тормозов вроде нет, swappines пробовал и 100 и 60.

Radjah ★★★★★
()

погодите я не понял, zram автоматически сжимает все страницы памяти в оперативке? или это сжатый виртуальный диск в оперативке?

anonymous
()
Ответ на: комментарий от anonymous

zram (also called zRAM and, initially, compcache) is a Linux kernel feature that provides a form of virtual memory compression. zram increases performance by avoiding paging to disk and using a compressed block device in RAM instead, inside which paging takes place until it is necessary to use the swap space on a hard disk drive. Since using RAM is an alternative way to provide swapping on RAM, zram allows Linux to make more use of RAM when swapping/paging is required, especially on older computers with less RAM installed.

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

Klymedy ★★★★★
() автор топика
Ответ на: комментарий от Klymedy

Это виртуальный диск, хранящийся в оперативке в сжатом виде и использующийся как своп. Этакий loopback со сжатием.

intelfx ★★★★★
()

Оно жмёт файлы, хранимые в. Использую для /var/tmp/portage, чтобы компилять шпионского рыжего гада (Firefox, ага). Некоторые в zram размещают ext4, но я ограничился tmpfs (документацию зачитывать не буду, она к ядру прилагается), мне хватает. От ядра зависит сжатие, а вот объём памяти — по вкусу, ибо нет никакого смысла использовать zram под несколько сотен килобайт временного хлама.

r3lgar ★★★★★
()

Глянь еще zswap, он сильно проще в настройке. Я гонял какие-то самопальные тесты, разницы с zram'ом не заметил.

anonymous
()
Ответ на: комментарий от anTaRes

Заметь, write-back кэш. Я смотрел показания какой-то утилиты анализа io, реальный свап не юзается, пока не заполнится кэш.

Без нормальных тестов трудно говорить что лучше zram или zswap. При этом непонятно, как сравнивать их в одинаковых условиях, ведь в zram в качестве параметра задается объем дополнительного свапа, а в zswap объем памяти, отводимой под кэш. То есть объем несжатых данных в zram и сжатых в zswap.

anonymous
()
Ответ на: комментарий от anonymous

какой-то утилиты анализа io

iostat если точнее

anonymous
()

Смысл есть! Ставь и пробуй.

Вот мой велосипед:

#!/bin/bash
RAM_PERCENT=75

NUMCPU=`ls -1 -d /dev/cpu/? | wc -l`
RAM=$((`cat /proc/meminfo | grep MemTotal | sed 's% %%g' | sed 's%kB%%g' | cut -d':' -f2`/1024))
ZRAM=$(($RAM*$RAM_PERCENT/100))
ZRAM_DEV_SIZE=$(($ZRAM/$NUMCPU))
echo "Total RAM: 			$RAM MB"
echo "Total size of zram:		$ZRAM MB"
echo "Num of zram devices: 		$NUMCPU"
echo "Size of each zram device:	$ZRAM_DEV_SIZE MB"


modprobe zram num_devices=$NUMCPU

ls -1 -d /sys/block/zram* |
while read i
do
      echo $(($ZRAM_DEV_SIZE*1024*1024)) > $i/disksize
done

ls -1 -d /dev/zram* |
while read n
do
      mkswap $n
      swapon $n -p 10 -d
done

P.S. дает очень большой процент сжатия памяти, откусанной браузером

r0ck3r ★★★★★
()
Последнее исправление: r0ck3r (всего исправлений: 1)

Слышали про iRedMail? Это предварительно настроенный и готовый к употреблению почтовый сервер. Настроенные и подогнанные друг к другу Postfix+Dovecot+Amavis+база данных (MySQL, MariaDB, PostreSQL на выбор). Так вот, он требует VPS минимум с 1 ГБ памяти. Иначе не запускается ClamAV, жалуется на нехватку памяти. С включенным zram на 512 МБ памяти не только все запускается, но и довольно-таки прилично работает. Лично у меня это вылилось в 150 рублей экономии у хостера, чему я очень рад.

Rinaldus ★★★★★
()
Ответ на: комментарий от Rinaldus

А эта «подгонка» после обновлений «Postfix+Dovecot+Amavis+база данных» не ломается, или там всё гвоздями прибито, клеем залито и обновляется только одним куском?

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

У меня еще ни разу не ломалось. Обновление там делается вручную. Т.е на сайте выкладывается инструкция, что именно нужно ручками в конфигах прописать, чтобы обновить одну версию до другой.
http://www.iredmail.org/docs/iredmail.releases.html

Rinaldus ★★★★★
()
Последнее исправление: Rinaldus (всего исправлений: 1)
Ответ на: комментарий от Klymedy

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

anonymous
()
Ответ на: комментарий от Klymedy

Диск в памяти всё равно будет занимать место сжатые_данные+небольшой_оверхед, а не пожатых 100 метров нулей. Так что память будет использоваться системой.

Radjah ★★★★★
()

Вот еще вопрос: если zram работает как своп, не будет ли компьютер пытаться записать в него что-то при переходе в спящий режим (hibernate)?

Klymedy ★★★★★
() автор топика
Ответ на: комментарий от Klymedy

При гибернации данные пишутся в определенный раздел подкачки, как правило указывается в файле uswsusp.conf

qwerta
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.