圧縮RAMスワップを永続的に有効にする方法 使用するバージョン


11

編集:正確に今がありzram-configます。これは、$(CPUコアの数)スワップデバイスに広がるRAMの最大半分を圧縮する新興企業の仕事です。起動時に常に起動するのではなく、sudo service zram-config start作品を発行します。

ここで/etc/initramfs-tools/initramfs.conf説明されているよう(私は:Pで)compcache = "256 M"を有効にしました。これ-私は信じています-を作成します/dev/ramzswap0が、スワップとして有効にされることはありません。mkswap&&の後にのみ機能しswaponます。

次に、を作成するモジュールzramがあります/dev/zram。他に何かありますか?同じように機能し/dev/ramzswapますが、ramzswapモジュールから作成されます。

結局のところ、RAMで圧縮されたスワップを使用し、2つのうちの良い方を使用したいので、ハックのない方法で永続的に有効にする方法を知る必要があります。これはどのように行われますか?

ここでLucidのramzswapについて書きましが、Nattyでは状況が変わりました。initramfs.confでramzswapを有効にできますが、アクティブにはなりません。

PS:/ libや/ etcのすべてのudevルールをスキャンしましたが、興味のあるものは見つかりませんでした。

回答:


2

現在、ブート時にzramを有効にするための適切なUpstartスクリプトをインストールするPPAがあります。システムに適したサイズと圧縮スワップデバイスの数を選択します。

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


2
zram-configも正確になりました。
ターボ

Raring 13.04から削除されたのはなぜですか?
NoBugs

PPAはおそらく更新されていません。
ライアンC.トンプソン

2

私は同じ問題に苦しんでいました。

今日、私はそれについての素晴らしいブログ投稿を見つけました。 http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

「sudo start zramswap」は機能しませんでしたが、PCを再起動すると問題が完全に解決しました。

それを試してみてください。


実際、/ etc / init /があることに気づいたのは初めてです。通常、ブート時の起動には/etc/init.d/を使用します。魅惑的な...-
ターボ

/etc/init/Upstart initスクリプトが存在する場所です。にあるものは/etc/init.d、ほとんどがにあるものを呼び出す単なる互換性ラッパーです/etc/init
ライアンC.トンプソン

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:古いものはここにありますが、上記のRyanの答えは、実際にあなたがコメントで提案したものよりもスクリプトの観点からより一般的で安全だと思います。一般的に、yr forループは、スペースや特殊文字を含むファイル名に問題を引き起こす可能性があります。これは、システムをプロセスから解放するということです。
-Cbhihe

1

Debian wikiから直接。私にとってこれが一番簡単です。

まず、このコードをコピーして/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

次に、次の2つのコマンドを実行します。

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

最後に、起動時にzramを追加するには:

sudo update-rc.d zram defaults

できた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.