Sıkıştırılmış ram takasını kalıcı olarak nasıl etkinleştiririm? Hangi sürümü kullanmalı?


11

EDIT: Kesinlikle şimdi var zram-config. Bu, RAM'inizin yarısına kadar (CPU çekirdeği sayısı) takas cihazlarına yayılan bir iştir. Her zaman önyükleme yapmaya başlamadı, ancak sudo service zram-config startişleri yayınladı .

Burada/etc/initramfs-tools/initramfs.conf açıklandığı gibi compcache = "256 M" yi etkinleştirdim (benim tarafımdan: P). Bu - inanıyorum - oluşturur ama asla takas olarak etkinleştirilmez. Sadece && sonra çalışır ./dev/ramzswap0mkswapswapon

Sonra yaratan modül zram var /dev/zram. Başka bir şey mi? Aynı şekilde çalışır, ancak /dev/ramzswapramzswap modülünden oluşturulur.

Günün sonunda koç içinde sıkıştırılmış bir takas yapmak ve ikisinden daha iyi kullanmak istiyorum ve bunun için hackish olmayan bir şekilde kalıcı olarak nasıl etkinleştirileceğini bilmem gerekiyor. Bu nasıl yapılır?

Burada Lucid'deki ramzswap hakkında yazdım, ancak Natty'de işler değişti. Ramzswap'ı initramfs.conf dosyasında hala etkinleştirebilirsiniz, ancak etkinleştirilmez.

Not: / lib ve / etc'deki tüm udev kurallarını taradım, ancak ilgi çekici bir şey bulamadım.

Yanıtlar:



2

Ben de aynı problemle uğraşıyordum.

Bugün bu konuda mükemmel bir blog yazısı buldum. http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

"Sudo start zramswap" işe yaramasa da, bilgisayarımı yeniden başlattığımda sorunumu mükemmel bir şekilde çözdü.

Dene.


Aslında ilk kez bile / etc / init / olduğunu fark ettim. Normalde önyükleme sırasında şeyleri başlatmak için /etc/init.d/ kullanırım. Büyüleyici ...
turbo

/etc/init/Upstart init komut dosyalarının yaşandığı yerdir. İçindekiler /etc/init.dçoğunlukla sadece içlerini çağıran uyumluluk sarmalayıcılarıdır /etc/init.
Ryan

1

İşte ucuz çözüm. Aşağıdaki satırı ekleyin /etc/rc.localönce, 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 ...Bence daha iyi bir çözüm olurdu. Kitabımda hala biraz fazla hackish.
turbo

Nasıl find /dev/ -maxdepth 1 -name 'ramzswap*' -print0 | while read -d0 dev; do ... ? İçinde yeni satır olan garip dosya adı sorununu ortadan kaldıracak.
Cbhihe

@turbo: burada eski şeyler, ama inanıyorum ki Ryan'ın yukarıdaki cevabı aslında bir senaryonun bakış açısından daha genel ve daha güvenlidir. Genel olarak konuşursak, yr for loop, boşluklu dosya adları veya özel karakterler için soruna neden olabilir. Bu, sisteminize bir süreç yedeklediğiniz söylenir.
Cbhihe

1

Doğrudan Debian wiki'sinden. Benim için bu en kolayı.

İlk olarak, bu kodu kopyalayıp /etc/init.d/zram içine yapıştırın

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

Ardından, şu iki komutu yürütün:

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

Son olarak, başlangıçta zram eklemek için:

sudo update-rc.d zram defaults

Bitti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.