Як назавжди ввімкнути стиснуту оперативну заміну? Яку версію використовувати?


11

EDIT: Точно там зараз zram-config. Це швидка робота, що стискає до половини вашої оперативної пам’яті, розміщеної на $ (кількість CPU ядер) пристроїв для обміну. Він не завжди починався під час завантаження, але видав sudo service zram-config startтвори.

Я ввімкнув compcache = "256 M" в /etc/initramfs-tools/initramfs.confописаному тут (мною: P). Це - я вважаю - створює, /dev/ramzswap0але він ніколи не включається як своп. Він працює лише після mkswap&& swapon.

Потім є модуль zram, який створює /dev/zram. Це щось інше? Він працює так само, але /dev/ramzswapстворюється з модуля ramzswap.

Наприкінці дня я хочу зробити компресований своп у баранах і використовувати кращі з двох, і для цього мені потрібно знати, як це ввімкнути назавжди не хакітим способом. Як це робиться?

Я писав про ramzswap в Lucid тут, але все змінилося в Natty. Ви все ще можете ввімкнути ramzswap в initramfs.conf, але він не активується.

PS: Я просканував усі правила udev в / lib та / etc, але нічого цікавого не знайшов.

Відповіді:


2

Зараз є PPA, який встановлює належний сценарій Upstart для включення zram під час завантаження. Він вибирає правильний розмір та кількість стислих пристроїв для заміни для вашої системи.

https://launchpad.net/~shnatsel/+archive/zram


2
зараз також є точно zram-config.
турбо

Чому його видалили з Raring 13.04?
NoBugs

PPA, ймовірно, не оновлювався.
Райан К. Томпсон

2

Я боровся з тією ж проблемою.

Сьогодні я знайшов чудову публікацію в цьому блозі. http://weirdfellow.wordpress.com/2011/05/04/compression-ram-with-zram/

Хоча "sudo start zramswap" не спрацював, коли я перезапустив свій комп'ютер, це вирішило мою проблему ідеально.

Спробуй це.


Це насправді вперше я навіть помітив, що є / etc / init /. Зазвичай я використовую /etc/init.d/ для запуску матеріалів під час завантаження. Захоплююче ...
турбо

/etc/init/це місце, де живуть сценарії Instart Upstart. В /etc/init.dосновному це лише обгортки сумісності, які викликають вбудовані /etc/init.
Райан К. Томпсон

1

Ось дешеве рішення. Додайте наступний рядок до /etc/rc.local, перш ніж exit 0:

find /dev/ -maxdepth 1 -name 'ramzswap*' | while read dev; do
    mkswap $dev
    swapon -p 1000 $dev
done

for i in /dev/ramzswap*;do ...було б краще рішення, я думаю. Досі в моїй книзі занадто хакіт.
турбо

Як щодо find /dev/ -maxdepth 1 -name 'ramzswap*' -print0 | while read -d0 dev; do ... ? Це усуне проблему дивного імені файлу з новим рядком у ньому.
Cbhihe

@turbo: старі речі тут, але я вважаю, що відповідь Раяна вище є насправді загальнішою та безпечнішою з точки зору сценаріїв, ніж те, що ви пропонуєте у своєму коментарі. Взагалі кажучи, yr для циклу може спричинити проблеми з іменами файлів з пробілом або спеціальними символами. Це, як кажуть, ви шкодуєте свою систему.
Cbhihe

1

Прямо з вікі Debian. Для мене це найпростіше.

Спочатку скопіюйте та вставте цей код у /etc/init.d/zram

### 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

# Author: Antonio Galea <antonio.galea@gmail.com>
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization

FRACTION=75

MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS=`grep -c processor /proc/cpuinfo`
SIZE=$(( MEMORY * FRACTION / 100 / CPUS ))

case "$1" in
  "start")
    param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '`
    modprobe zram $param=$CPUS
    for n in `seq $CPUS`; do
      i=$((n - 1))
      echo $SIZE > /sys/block/zram$i/disksize
      mkswap /dev/zram$i
      swapon /dev/zram$i -p 10
    done
    ;;
  "stop")
    for n in `seq $CPUS`; do
      i=$((n - 1))
      swapoff /dev/zram$i && echo "disabled disk $n of $CPUS" &
    done
    wait
    sleep .5
    modprobe -r zram
    ;;
  *)
    echo "Usage: `basename $0` (start | stop)"
    exit 1
    ;;
esac

Далі виконайте ці дві команди:

sudo chmod +x /etc/init.d/zram
sudo /etc/init.d/zram start

Нарешті, щоб додати zram при запуску:

sudo update-rc.d zram defaults

Зроблено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.