วิธีเปิดใช้งานการสลับ ram แบบบีบอัดอย่างถาวร? รุ่นใดที่จะใช้?


11

แก้ไข: zram-configในแม่นยำขณะนี้ มันเป็นงานพุ่งพรวดที่บีบอัด RAM ของคุณได้มากกว่าครึ่งกระจายผ่านอุปกรณ์แลกเปลี่ยน ($ จำนวนคอร์แกน) มันไม่ได้เริ่มต้นเลยตอนบูต แต่ออกsudo service zram-config startงาน

ฉันเปิดใช้งาน compcache = "256 M" /etc/initramfs-tools/initramfs.confตามที่อธิบายไว้ที่นี่ (โดยฉัน: P) สิ่งนี้ - ฉันเชื่อ - สร้าง/dev/ramzswap0แต่ไม่เคยเปิดใช้งานเป็น swap มันทำงานได้เฉพาะหลังจาก&&mkswapswapon

จากนั้นมีโมดูล zram ที่สร้าง/dev/zramขึ้น มันเป็นอย่างอื่น? มันทำงานในลักษณะเดียวกัน แต่/dev/ramzswapถูกสร้างขึ้นจากโมดูล ramzswap

ในตอนท้ายของวันฉันต้องการสลับ swap ใน ram และใช้ดีกว่าของทั้งสองและเพื่อที่ฉันต้องรู้วิธีการเปิดใช้งานอย่างถาวรในทางที่ไม่แฮ็ค สิ่งนี้ทำได้อย่างไร

ฉันเขียนเกี่ยวกับ ramzswap ที่ Lucid ที่นี่แต่สิ่งต่าง ๆ เปลี่ยนไปใน Natty คุณยังสามารถเปิดใช้งาน ramzswap ใน initramfs.conf ได้ แต่จะไม่เปิดใช้งาน

PS: ฉันสแกนกฎ udev ทั้งหมดใน / lib และ / etc แต่ไม่พบสิ่งที่น่าสนใจ

คำตอบ:


2

ตอนนี้มี PPA ที่ติดตั้งสคริปต์ Upstart ที่เหมาะสมสำหรับการเปิดใช้งาน zram ในเวลาบูต เลือกขนาดและจำนวนที่ถูกต้องของอุปกรณ์ swap ที่ถูกบีบอัดสำหรับระบบของคุณ

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


2
นอกจากนี้ยังมี zram-config อย่างแม่นยำในตอนนี้
เทอร์โบ

ทำไมมันถูกลบออกจาก Raring 13.04
NoBugs

PPA อาจไม่ได้รับการอัพเดต
Ryan C. Thompson

2

ฉันกำลังดิ้นรนกับปัญหาเดียวกัน

วันนี้ฉันพบโพสต์บล็อกที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

แม้ว่า "sudo start zramswap" ไม่ทำงานเมื่อฉันรีสตาร์ทพีซีของฉันมันแก้ปัญหาได้อย่างสมบูรณ์

ลองมัน.


นั่นเป็นครั้งแรกที่ฉันสังเกตเห็นว่ามี / etc / init / ปกติฉันจะใช้ / etc / init.d/ สำหรับการเริ่มต้นสิ่งที่บูต ที่น่าสนใจ ...
เทอร์โบ

/etc/init/คือที่สคริปต์เริ่มต้นพุ่งพรวดสด คนในนี้ส่วนใหญ่จะห่อเข้ากันได้เพียงแค่ว่าเรียกคนใน/etc/init.d /etc/init
Ryan C. Thompson

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

@ เทอร์โบ: ของเก่าที่นี่ แต่ฉันเชื่อว่าคำตอบของไรอันข้างต้นนั้นเป็นเรื่องทั่วไปและปลอดภัยกว่าจากมุมมองของสคริปต์มากกว่าสิ่งที่คุณเสนอในความคิดเห็นของคุณ โดยทั่วไปการพูดปีสำหรับลูปอาจทำให้เกิดปัญหากับชื่อไฟล์ที่มีช่องว่างและหรืออักขระพิเศษ สิ่งนี้ถูกกล่าวว่าคุณทำกระบวนการให้กับระบบของคุณ
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

เสร็จสิ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.