Bagaimana cara mengaktifkan swap ram terkompresi secara permanen? Versi apa yang digunakan?


11

EDIT: Tepatnya ada sekarang zram-config. Ini adalah pekerjaan pemula yang mengkompresi hingga setengah dari ram Anda yang tersebar di perangkat swap $ (jumlah core CPU). Itu tidak selalu dimulai saat boot tetapi mengeluarkan sudo service zram-config startkarya.

Saya mengaktifkan compcache = "256 M" /etc/initramfs-tools/initramfs.confseperti yang dijelaskan di sini (oleh saya: P). Ini - saya percaya - menciptakan /dev/ramzswap0tetapi tidak pernah diaktifkan sebagai swap. Ini hanya berfungsi setelah mkswap&& swapon.

Lalu ada modul zram yang membuat /dev/zram. Apakah ini sesuatu yang lain? Ini bekerja dengan cara yang sama tetapi /dev/ramzswapdibuat dari modul ramzswap.

Pada akhir hari saya ingin memiliki swap terkompresi dalam ram dan menggunakan yang lebih baik dari keduanya dan untuk itu saya perlu tahu bagaimana mengaktifkannya secara permanen dengan cara yang tidak hack. Bagaimana ini dilakukan?

Saya menulis tentang ramzswap di Lucid di sini tetapi banyak hal telah berubah di Natty. Anda masih dapat mengaktifkan ramzswap di initramfs.conf tetapi itu tidak bisa diaktifkan.

PS: Saya memindai semua aturan udev di / lib dan / etc tetapi tidak menemukan sesuatu yang menarik.

Jawaban:



2

Saya berjuang dengan masalah yang sama.

Hari ini saya menemukan posting blog yang bagus tentang itu. http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

Meskipun "sudo start zramswap" tidak berfungsi, ketika saya me-restart PC saya itu menyelesaikan masalah saya dengan sempurna.

Cobalah.


Itu sebenarnya pertama kali saya perhatikan ada / etc / init /. Biasanya saya menggunakan /etc/init.d/ untuk memulai hal-hal saat boot. Menarik ...
turbo

/etc/init/adalah tempat skrip init pemula tinggal. Yang di /etc/init.dsebagian besar hanya pembungkus kompatibilitas yang memanggil orang-orang di /etc/init.
Ryan C. Thompson

1

Inilah solusi murahnya. Tambahkan baris berikut ke /etc/rc.local, sebelum 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 ...akan solusi yang lebih baik saya pikir. Masih sedikit terlalu nakal di buku saya.
turbo

Bagaimana dengan find /dev/ -maxdepth 1 -name 'ramzswap*' -print0 | while read -d0 dev; do ... ? Ini akan menyingkirkan masalah nama file aneh dengan baris baru di dalamnya.
Cbhihe

@turbo: barang lama di sini, tapi saya yakin jawaban Ryan di atas sebenarnya lebih umum dan lebih aman dari sudut pandang penulisan skrip daripada apa yang Anda usulkan dalam komentar Anda. Secara umum, tahun untuk loop dapat menyebabkan masalah untuk nama file dengan spasi dan atau karakter khusus. Dikatakan bahwa Anda memang mengampuni sistem Anda dari suatu proses.
Cbhihe

1

Langsung dari wiki Debian. Bagi saya, ini yang paling mudah.

Pertama, salin dan tempel kode ini ke /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

Selanjutnya, jalankan dua perintah ini:

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

Akhirnya, untuk menambahkan zram saat startup:

sudo update-rc.d zram defaults

Selesai

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.