क्या स्वैग बदलने से रिबूट की जरूरत होती है?


14

यदि मैं पूर्व से, किसी अन्य के लिए स्वैच्छिक मूल्य को कॉन्फ़िगर करता हूं : 60 से 0, तो मुझे हमेशा प्रभावी होने के लिए मशीन को रिबूट करना होगा? यहां तक ​​कि जब संशोधन के साथ:

sysctl -w vm.swappiness=0

जवाबों:


25

आपके द्वारा दिए गए विकिपीडिया पृष्ठ में सब कुछ अच्छी तरह से समझाया गया है।

# Set the swappiness value as root
echo 10 > /proc/sys/vm/swappiness

# Alternatively, run this as a non-root user
# This does the same as the previous command
sudo sysctl -w vm.swappiness=10

# Verify the change
cat /proc/sys/vm/swappiness
10

इस बिंदु पर, सिस्टम आपके जैसे ही इसे कॉन्फ़िगर किया गया स्वैप को प्रबंधित करेगा, लेकिन यदि आप अभी रिबूट करते हैं, तो आपका परिवर्तन भूल जाएगा और सिस्टम डिफ़ॉल्ट मान के साथ काम करेगा (60 मानकर, इसका अर्थ है कि यह 40% पर स्वैप करना शुरू कर देगा। राम का कब्जा)।

आपको /etc/sysctl.confअपना परिवर्तन स्थायी रूप से रखने के लिए नीचे दी गई पंक्ति को जोड़ना होगा :

vm.swappiness = 10

आशा है कि यह अब आपके लिए अधिक स्पष्ट है!


यह दिलचस्प है कि -wस्विच को परिवर्तन लिखना है। किसी को लगता है कि लिखने के बाद, sysctl.conf में डिफ़ॉल्ट लाइन जोड़ना आवश्यक नहीं होगा।
वेबजू

हाय वेबजू, आप सही कह रहे हैं, स्विच अभी भी मेरे लिए काम नहीं करता है (फेडोरा 25 या सेंटो 7)। तब इसकी जरूरत नहीं है, क्योंकि लाइव मूल्य को / proc फ़ाइल में बिना किसी परिवर्तन के किया जाता है।
tisc0

7

प्रभावी होने के लिए मशीन को रिबूट करने की आवश्यकता है?

विपरीत, वास्तव में - रिबूटिंग स्वैच्छिकता को उसके डिफ़ॉल्ट मूल्य पर रीसेट कर देगा। इसे रिबूट में बनाए रखने के लिए, आपको एक बूट स्क्रिप्ट में एक निर्देश शामिल करने या विकिपीडिया लेख में अनुशंसित विधि का उपयोग करके जोड़ना होगा:

vm.swappiness = ??

To /etc/sysctl.conf(या /etc/sysctl.dफ़ाइल), ??वह मान कहाँ है जिसका आप उपयोग करना चाहते हैं। ध्यान दें कि बस इसे जोड़ने से उस समय कोई बदलाव नहीं होगा।


1

स्वीकृत उत्तर सही है, लेकिन एक अलग "sysctl" कॉन्फिगर फाइल का उपयोग करने की सिफारिश की गई है ताकि आप गलती से अन्य सेटिंग्स को अधिलेखित न करें (जो कि हो सकता है कि आप वैश्विक "sysctl.conf" को ओवरराइट करें)।

# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf

जिन लोगों ने पहले ही वैश्विक कॉन्फिगर फाइल को संशोधित कर लिया है "/etc/sysctl.conf" उस फाइल से इस "स्वैगनेस" मान को परिभाषित करने वाली लाइनों को हटाना चाहते हैं। आप इन कमांड का उपयोग ग्लोबल कॉन्फिगर फाइल (टिप्पणी रखने) से इन लाइनों को हटाने के लिए कर सकते हैं:

# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf

अब, नया मान लागू sysctlकरने के लिए, इसका उपयोग करने के लिए कहें :

# sysctl -p /etc/sysctl.d/swappiness.conf

या स्वैग सहित सभी सेटिंग्स लागू करें:

# sysctl -p /etc/sysctl.d/*

इसे सत्यापित करें:

# sysctl vm.swappiness
vm.swappiness = 10

सहमत, यह सबसे अच्छा अभ्यास है, जिससे चीजें स्पष्ट और सुरक्षित हो जाती हैं। कॉन्फ़िगरेशन प्रबंधन टूल का उपयोग करते समय एक अच्छी आदत भी।
tisc0

1

मैंने पाया कि एक CentOS मशीन पर , में vm.swappinessसेट किया जा रहा था /usr/lib/tuned/virtual-guest/tuned.conf

निर्धारित जहां डिफ़ॉल्ट सेट किया जा रहा है देख कर के माध्यम से tunedविन्यास फाइल :

sudo grep -R swap /usr/lib/tuned | grep swappiness

डिफ़ॉल्ट को अपडेट करने के बाद, वर्तमान स्वप्न को रिबूट किए बिना भी सेट किया जा सकता है :

sudo sysctl vm.swappiness=10

और इसके द्वारा परीक्षण किया गया:

cat /proc/sys/vm/swappiness

1
/etc/tuned/tuned-main.conf (RHEL7) में एक सेटिंग होती है, जो /etc/sysctl.conf, /etc/sysctl.d, आदि को ट्यून की गई सेटिंग्स को ओवरराइड करने की अनुमति देती है (अर्थात पुन: लागू करें_sysctl = 1)। कम से कम मेरे इंस्टॉल पर, यह डिफ़ॉल्ट है।
kulgrien

0

sysctlकन्वेंशन द्वारा उपयोगकर्ता परिवर्तन उपसर्ग के साथ फाइलों में जाते हैं 60-इसलिए फ़ाइल नाम होना चाहिए /etc/sysctl.d/60-swappiness.confservice procps startकॉन्फ़िगरेशन मान (कोई रिबूट आवश्यक नहीं) के पुन: उपयोग के लिए रूट के रूप में निष्पादित करें।

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