कैसे संकुचित राम स्वैप को स्थायी रूप से सक्षम करने के लिए? किस संस्करण का उपयोग करें?


11

संपादित करें: सटीक में अब है zram-config। यह एक अपस्टार्ट जॉब है जो आपके आधे राम तक फैला है ($ CPU कोर की संख्या) स्वैप डिवाइस। इसने बूट शुरू नहीं किया बल्कि sudo service zram-config startकार्य जारी किया ।

मैंने यहाँ/etc/initramfs-tools/initramfs.conf वर्णित (मेरे द्वारा: P) के अनुसार compcache = "256 M" सक्षम किया। यह - मेरा मानना ​​है - बनाता है लेकिन यह कभी स्वैप के रूप में सक्षम नहीं होता है। यह केवल && के बाद काम करता है ।/dev/ramzswap0mkswapswapon

फिर मॉड्यूल zram है जो बनाता है /dev/zram। यह कुछ और है? यह उसी तरह से काम करता है, लेकिन /dev/ramzswapमॉड्यूल ramzswap से बनाया गया है।

दिन के अंत में मैं राम में एक संकुचित स्वैप चाहता हूं और दो का बेहतर उपयोग करता हूं और इसके लिए मुझे यह जानने की जरूरत है कि इसे स्थायी रूप से गैर हैकिश तरीके से कैसे सक्षम किया जाए। यह कैसे किया जाता है?

मैंने यहां ल्यूसिड में रैमस्वाप के बारे में लिखा था लेकिन नैटी में चीजें बदल गई हैं। आप अभी भी initramfs.conf में ramzswap को सक्षम कर सकते हैं लेकिन यह सक्रिय नहीं होता है।

पुनश्च: मैंने सभी udev नियमों को / lib और / etc में स्कैन किया, लेकिन कुछ भी ब्याज नहीं मिला।

जवाबों:


2

अब एक PPA है जो बूट-टाइम पर zram को सक्षम करने के लिए एक उचित Upstart स्क्रिप्ट स्थापित करता है। यह आपके सिस्टम के लिए सही आकार और संकुचित स्वैप उपकरणों की संख्या चुनता है।

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


2
अब सटीक में zram-config भी है।
टर्बो

इसे रेयरिंग 13.04 से क्यों हटाया गया?
NoBugs

PPA शायद अपडेट नहीं किया गया है।
रयान सी। थॉम्पसन

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
रयान सी। थॉम्पसन

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 ... ? इसमें नए नाम के साथ अजीब फ़ाइल नाम की समस्या को कम किया जाएगा।
14:33 पर Cbhihe

@turbo: यहां पुराना सामान है, लेकिन मेरा मानना ​​है कि ऊपर रयान का जवाब वास्तव में अधिक सामान्य है और स्क्रिप्टिंग दृष्टिकोण से अधिक सुरक्षित है जो आप yr टिप्पणी में प्रस्तावित करते हैं। सामान्यतया, लूप के लिए yr फ़ाइल नामों के लिए जगह और विशेष वर्णों के लिए परेशानी का कारण हो सकता है। यह कहा जा रहा है कि आप अपने सिस्टम को एक प्रक्रिया से अलग करते हैं।
Cbhihe

1

सीधे डेबियन विकी से। मेरे लिए, यह सबसे आसान है।

सबसे पहले, इस कोड को /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

किया हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.