Làm thế nào để kích hoạt vĩnh viễn trao đổi ram nén? Phiên bản nào để sử dụng?


11

EDIT: Chính xác là có ngay bây giờ zram-config. Đây là một công việc mới bắt đầu nén tới một nửa số ram của bạn trải trên các thiết bị hoán đổi $ (số lõi CPU). Nó đã không bắt đầu lúc khởi động nhưng phát hành sudo service zram-config startcông việc.

Tôi đã bật compcache = "256 M" /etc/initramfs-tools/initramfs.confnhư được mô tả ở đây (bởi tôi: P). Điều này - tôi tin - tạo ra /dev/ramzswap0nhưng nó không bao giờ được kích hoạt dưới dạng trao đổi. Nó chỉ hoạt động sau mkswap&& swapon.

Sau đó, có mô-đun zram tạo ra /dev/zram. Có phải cái gì khác không? Nó hoạt động theo cùng một cách nhưng /dev/ramzswapđược tạo ra từ mô-đun ramzswap.

Vào cuối ngày, tôi muốn có một trao đổi nén trong ram và sử dụng tốt hơn cả hai và vì thế tôi cần biết cách kích hoạt nó vĩnh viễn theo cách không hack. Làm thế nào được thực hiện?

Tôi đã viết về ramzswap ở Lucid ở đây nhưng mọi thứ đã thay đổi ở Natty. Bạn vẫn có thể kích hoạt ramzswap trong initramfs.conf nhưng nó không được kích hoạt.

PS: Tôi đã quét tất cả các quy tắc udev trong / lib và / etc nhưng không tìm thấy gì đáng quan tâm.

Câu trả lời:



2

Tôi đã vật lộn với cùng một vấn đề.

Hôm nay tôi tìm thấy một bài viết blog tuyệt vời về nó. http://weirdfellow.wordpress.com/2011/05/04/compression-ram-with-zram/

Mặc dù "sudo start zramswap" không hoạt động, nhưng khi tôi khởi động lại PC, nó đã giải quyết vấn đề của tôi một cách hoàn hảo.

Thử nó.


Đó thực sự là lần đầu tiên tôi thậm chí nhận thấy rằng có / etc / init /. Thông thường tôi sử dụng /etc/init.d/ để bắt đầu công cụ khi khởi động. Hấp dẫn ...
turbo

/etc/init/là nơi Upstart init script sống. Những cái trong /etc/init.dhầu hết chỉ là các hàm bao tương thích gọi các hàm trong /etc/init.
Ryan C. Thompson

1

Đây là giải pháp giá rẻ. Thêm dòng sau vào /etc/rc.local, trước 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 ...Tôi nghĩ giải pháp tốt hơn. Vẫn còn một chút quá hackish trong cuốn sách của tôi.
turbo

Thế còn find /dev/ -maxdepth 1 -name 'ramzswap*' -print0 | while read -d0 dev; do ... ? Nó sẽ làm giảm vấn đề về tên tệp lạ với dòng mới trong đó.
Cbhihe

@turbo: những thứ cũ ở đây, nhưng tôi tin rằng câu trả lời của Ryan ở trên thực sự chung chung và an toàn hơn từ quan điểm kịch bản so với những gì bạn đề xuất trong bình luận năm ngoái. Nói chung, vòng lặp yr có thể gây rắc rối cho tên tệp có dấu cách và hoặc ký tự đặc biệt. Điều này được nói rằng bạn làm phụ tùng hệ thống của bạn một quá trình.
Cbhihe

1

Trực tiếp từ wiki Debian. Đối với tôi, đây là cách dễ nhất.

Đầu tiên, sao chép và dán mã này vào /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

Tiếp theo, thực hiện hai lệnh này:

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

Cuối cùng, để thêm zram khi khởi động:

sudo update-rc.d zram defaults

Làm xong.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.