स्वैप का उपयोग क्यों किया जा रहा है भले ही मेरे पास बहुत सारी मुफ्त रैम है?


208

मुझे लगा कि स्वैप का पूरा सार एक अस्थायी स्टोरेज सेफ्टी नेट के रूप में कार्य करना है जब RAM भरा था, लेकिन मेरे स्वैप विभाजन का लगातार उपयोग किया जा रहा है, भले ही मेरे पास कभी-कभी 3GB मुक्त रैम के रूप में है। क्या यह सामान्य है?


3
सामग्री या निम्न कमांड के उत्पादन साझा करें / फ़ाइलों को बेहतर करने में मदद करने के लिए हमें अपनी समस्या का निवारण ( इस जवाब निर्देश ) : free -m,top -b 1
ish

कल उन आदेशों के pastebins के साथ सवाल को अद्यतन करेगा। यह अभी 12 बजे है :(
मिस्टीरियो

मुझे जोड़ने के लिए शीर्षक को संपादित करना चाहिए ... "लेकिन मुझे अभी देखभाल करने के लिए बहुत नींद आ रही है, इसलिए आप लोग भी एक झपकी लें": P
ish

जवाबों:


188

आप अपना "स्वपन" मान बदलने का प्रयास कर सकते हैं:

से उबंटू के स्वैप पूछे जाने वाले प्रश्न :

स्वैग क्या है और मैं इसे कैसे बदल सकता हूं?

स्वैपी पैरामीटर कर्नेल की प्रक्रिया को भौतिक मेमोरी से बाहर और स्वैप डिस्क पर स्थानांतरित करने की प्रवृत्ति को नियंत्रित करता है। क्योंकि डिस्क रैम की तुलना में बहुत धीमी है, यह सिस्टम और अनुप्रयोगों के लिए धीमी प्रतिक्रिया समय पैदा कर सकता है अगर प्रक्रियाएं बहुत आक्रामक रूप से स्मृति से बाहर हो जाती हैं।

  1. स्वैग में 0 और 100 के बीच का मान हो सकता है

  2. swappiness = 0 कर्नेल को यथासंभव लंबे समय तक भौतिक मेमोरी से स्वैपिंग प्रक्रियाओं से बचने के लिए कहता है। कर्नेल संस्करण 3.5 और नए के लिए यह स्वैच्छिकता को अक्षम करता है।

  3. स्वैपीनेस = 100 शारीरिक मेमोरी से प्रक्रियाओं को आक्रामक रूप से स्वैप करने के लिए कर्नेल को बताता है और उन्हें कैश स्वैप करने के लिए स्थानांतरित करता है

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

स्वैग्मेंटेशन वैल्यू चेक करने के लिए

cat /proc/sys/vm/swappiness

Swappiness value को बदलने के लिए 10 के swappiness value के साथ एक अस्थायी परिवर्तन (रिबूट पर खो दिया) के साथ किया जा सकता है

sudo sysctl vm.swappiness=10

परिवर्तन को स्थायी बनाने के लिए , अपने पसंदीदा संपादक के साथ कॉन्फ़िगरेशन फ़ाइल को संपादित करें:

gksudo gedit /etc/sysctl.conf

Vm.swappiness की खोज करें और उसका मान वांछित रूप से बदलें। यदि vm.swappiness मौजूद नहीं है, तो इसे फ़ाइल के अंत में इस तरह जोड़ें:

vm.swappiness=10

फ़ाइल सहेजें और रिबूट करें।

इसके अलावा आप देख सकते हैं: https://askubuntu.com/a/103916/54187


1
निष्क्रिय अटकलें: यह वास्तव में प्रदर्शन के लिए फायदेमंद हो सकता है - वे पृष्ठ जिन्हें थोड़ी देर में एक्सेस नहीं किया गया है उन्हें स्वैप स्पेस में कॉपी किया जा सकता है, जो ओएस को उन्हें जल्दी से बेदखल करने की अनुमति देता है यदि इसे कभी भी मेमोरी की आवश्यकता होती है, लेकिन पेज की सामग्री स्मृति में बनी रहती है ।
साइमन रिक्टर

7
@SimonRichter हाँ यह विचार है। 60 का स्वप्नदोष शायद आधुनिक प्रणालियों पर बहुत अधिक आक्रामक है, हालांकि, इसका मतलब है कि जब आप अभी भी मुफ्त मेमोरी के कई गिग्स हैं, तो आप बाहर स्वैप करना शुरू कर रहे हैं।
ब्रेंडन लॉन्ग

1
sudo sysctl --load=/etc/sysctl.confपरिवर्तनों को लागू करने के लिए फ़ाइल को संपादित करने के बाद चलाएँ
deFreitas

92

आपके प्रश्न के कुछ अलग पहलू हैं।

सबसे पहले, "फ्री" की आपकी परिभाषा क्या है। यह वास्तव में उतना आसान नहीं है जितना कि लिनक्स (या किसी भी आधुनिक ऑपरेटिंग सिस्टम) में लगता है।

कैसे RAM रैम का उपयोग करता है (बहुत सरलीकृत)

प्रत्येक एप्लिकेशन आपकी कुछ मेमोरी का उपयोग कर सकता है। लिनक्स "कैश" के रूप में ( अन्यथा पिछले कुछ एमबी को छोड़कर) सभी अन्यथा अनुपयोगी मेमोरी का उपयोग करता है । इसमें पेज कैश, इनकोड कैश आदि शामिल हैं। यह एक अच्छी बात है - यह चीजों को गति देने में मदद करता है। डिस्क पर लिखना और डिस्क से पढ़ना दोनों को कैश द्वारा अत्यधिक खर्च किया जा सकता है।

आदर्श रूप से, आपके पास अपने सभी अनुप्रयोगों के लिए पर्याप्त मेमोरी है, और आपके पास कैश के लिए अभी भी कई सौ एमबी शेष हैं। इस स्थिति में, जब तक आपके एप्लिकेशन अपने मेमोरी उपयोग में वृद्धि नहीं करते हैं और सिस्टम कैश के लिए पर्याप्त स्थान पाने के लिए संघर्ष नहीं कर रहा है, तब तक किसी भी स्वैप की कोई आवश्यकता नहीं है।

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

यह ऐसी स्थिति नहीं है जो लिनक्स के लिए विशिष्ट है - सभी आधुनिक ऑपरेटिंग सिस्टम इस तरह से काम करते हैं। अलग-अलग ऑपरेटिंग सिस्टम सिर्फ फ्री रैम को अलग तरीके से रिपोर्ट कर सकते हैं: कुछ में कैश को शामिल किया जाता है, जिसे वे "फ्री" मानते हैं और कुछ नहीं।

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

कैसे लिनक्स स्वैप का उपयोग करता है (और भी सरल)

एक बार जब आप पर्याप्त मेमोरी का उपयोग कर लेते हैं, तो सुचारू रूप से चलने वाले कैश के लिए पर्याप्त नहीं होता है, तो लिनक्स रैम से स्वैप के लिए कुछ अप्रयुक्त एप्लिकेशन मेमोरी को फिर से आवंटित करने का निर्णय ले सकता है।

यह एक निश्चित कट-ऑफ के अनुसार ऐसा नहीं करता है। यह ऐसा नहीं है कि आप आवंटन के एक निश्चित प्रतिशत तक पहुंच जाते हैं तो लिनक्स स्वैप करना शुरू कर देता है। यह एक बल्कि "फजी" एल्गोरिथ्म है। यह बहुत सी चीजों को ध्यान में रखता है, जिसे "स्मृति आवंटन के लिए कितना दबाव है" द्वारा सबसे अच्छा वर्णन किया जा सकता है। यदि नई मेमोरी आवंटित करने के लिए बहुत अधिक "दबाव" है, तो इससे संभावना बढ़ जाएगी कि कुछ को अधिक कमरे बनाने के लिए स्वैप किया जाएगा। यदि कम "दबाव" है तो यह इन अवसरों को कम करेगा।

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

एक अच्छी तरह से ज्ञात स्थिति है जिसमें स्वैप वास्तव में एक डेस्कटॉप सिस्टम पर कथित प्रदर्शन को परेशान करता है, और यह है कि कैसे जल्दी से अनुप्रयोग उपयोगकर्ता इनपुट का जवाब लंबे समय तक बेकार रहने के बाद और आईओ में पृष्ठभूमि प्रक्रियाओं को भारी होने पर दे सकते हैं (जैसे कि रात भर बैकअप) चलाते हैं। यह एक बहुत ही सुस्त सुस्ती है, लेकिन सभी को एक साथ स्वैप करने का औचित्य साबित करने के लिए पर्याप्त नहीं है और किसी भी ऑपरेटिंग सिस्टम में रोकने के लिए बहुत कठिन है। बैकअप / वायरस स्कैन के बाद स्वैप और इस प्रारंभिक सुस्ती को बंद न करें, लेकिन सिस्टम दिन भर थोड़ा धीमा चल सकता है। यह ऐसी स्थिति नहीं है जो लिनक्स तक ही सीमित है।

जब यह चुना जाता है कि डिस्क पर स्वैप किया जाना है, तो सिस्टम मेमोरी को चुनने की कोशिश करता है जो वास्तव में उपयोग नहीं किया जा रहा है - से पढ़ा या लिखा गया है। यह गणना के लिए एक बहुत ही सरल एल्गोरिथ्म है जो ज्यादातर समय अच्छी तरह से चुनता है।

यदि आपके पास एक ऐसी प्रणाली है जहां आपके पास एक बड़ी मात्रा में रैम है (लेखन के समय, 8 जीबी एक विशिष्ट लिनक्स डिस्ट्रो के लिए एक बड़ी राशि है), तो आप शायद ही कभी ऐसी स्थिति मारेंगे जहां स्वैप की बिल्कुल आवश्यकता है। तुम भी स्वैप बंद करने की कोशिश कर सकते हैं। मैं ऐसा करने की सलाह कभी नहीं देता, लेकिन केवल इसलिए कि आप कभी नहीं जानते कि कब अधिक रैम आपको कुछ एप्लिकेशन क्रैश होने से बचा सकता है। लेकिन अगर आपको पता है कि आपको इसकी आवश्यकता नहीं है, तो आप इसे कर सकते हैं।

लेकिन स्वैप मेरे सिस्टम को कैसे गति दे सकता है? धीमी गति से चीजों को स्वैप नहीं करता है?

रैम से स्वैप करने के लिए डेटा को स्थानांतरित करने का कार्य एक धीमा ऑपरेशन है, लेकिन यह केवल तभी लिया जाता है जब कर्नेल को पूरा यकीन है कि यह समग्र लाभ होगा। उदाहरण के लिए, यदि आपकी एप्लिकेशन मेमोरी इस बिंदु पर पहुंच गई है कि आपके पास लगभग कोई कैश नहीं बचा है और I / O इस वजह से बहुत अक्षम है, तो आप वास्तव में कुछ मेमोरी को मुक्त करके अपने सिस्टम से बहुत अधिक गति प्राप्त कर सकते हैं, यहां तक ​​कि डेटा को स्वैप करने के प्रारंभिक खर्च के बाद इसे मुक्त करने के लिए।

यह भी एक अंतिम उपाय है कि आपके आवेदन वास्तव में आपके पास वास्तव में अधिक मेमोरी का अनुरोध करें । इस मामले में, आउट-ऑफ-मेमोरी स्थिति को रोकने के लिए स्वैपिंग आवश्यक है जिसके परिणामस्वरूप अक्सर एक आवेदन दुर्घटनाग्रस्त हो जाएगा या जबरन मार दिया जाएगा।

स्वैपिंग केवल उस समय से जुड़ी होती है जहां आपका सिस्टम खराब प्रदर्शन कर रहा होता है क्योंकि ऐसा कई बार होता है जब आप प्रयोग करने योग्य रैम से बाहर चल रहे होते हैं, जो आपके सिस्टम को धीमा कर देगा (या इसे अस्थिर कर देगा) भले ही आपने स्वैप नहीं किया हो। इसलिए चीजों को सरल बनाने के लिए, स्वैपिंग होती है क्योंकि आपका सिस्टम चारों ओर से दूसरे रास्ते की बजाय नीचे से टकरा रहा है।

एक बार डेटा स्वैप में है, यह फिर से कब निकलता है?

डेटा को स्वैप से बाहर स्थानांतरित करना (पारंपरिक हार्ड डिस्क के लिए, कम से कम) बस समय लेने वाली के रूप में इसे वहां डालने में है। तो समझ लें, आपका कर्नेल स्वैप से डेटा को हटाने के लिए अनिच्छुक होगा, खासकर अगर यह वास्तव में उपयोग नहीं किया जा रहा है (यानी पढ़ा या लिखा हुआ)। आप स्वैप में डेटा है और इसका उपयोग नहीं किया जा रहा है, तो यह वास्तव में एक अच्छी बात है कि यह स्वैप में रहता है, क्योंकि यह अन्य चीजें हैं जो के लिए और अधिक स्मृति छोड़ देता है कर रहे हैं इस्तेमाल किया जा रहा है, जिससे आपकी प्रणाली को तेज।


5
विस्तृत विवरण के लिए +1। मैं भी अपने कंप्यूटर पर 2GiB स्वैप रखना पसंद करता हूं। यदि कुछ खराब हो जाता है - मेमोरी लीक, आदि, तो आप स्वैप को ऊपर जाते हुए देख सकते हैं और मेमोरी के बाहर होने से पहले समस्या की तलाश कर सकते हैं। यह सुरक्षा जाल के साथ-साथ प्रदर्शन उपकरण भी है।
जो

1
मेरी नेटबुक पर, जिसमें केवल 2GB RAM है, मैं 4GB स्वैप रखता हूं। ऐसा इसलिए है क्योंकि मैं नेटबुक का उपयोग बहुत अधिक के लिए करता हूं जो इसके लिए अभिप्रेत था और मेरे कार्यक्रमों में अक्सर 2GB से अधिक मेमोरी की आवश्यकता होती है। चूंकि लिनक्स आउट-ऑफ-मेमोरी स्थितियों में बहुत खराब व्यवहार करता है, इसलिए मैं एक बड़ा सुरक्षा जाल रखना पसंद करता हूं। और मेरे पास बहुत सारे डिस्क स्थान हैं।
स्कॉट सेवेरेंस

यदि आपके कार्यक्रमों को अक्सर 2GB से अधिक मेमोरी की आवश्यकता होती है, तो मैं वहां अधिक रैम को चकिंग करने पर विचार करूंगा (यह अल्ट्रा-सस्ता है!) क्योंकि थकाऊ रैम प्रदर्शन को प्रभावित करने वाला है। अन्य पाठकों के लाभ के लिए: यह सुनिश्चित करें कि आप केवल कैश मेमोरी को नहीं देख रहे हैं जो उपलब्ध रैम को हॉग करने वाला है - अन्य संदर्भ देखें free -m
थोमसट्रेटर

2
@neon_overload: मुझे बस यह ध्यान देना चाहिए कि HP के अनुसार, मेरी नेटबुक की अधिकतम रैम 1GB है। मुझे अब वहां 2GB मिल गया है, और इंटरनेट स्रोतों से पता चलता है कि 2GB वास्तविक अधिकतम है। इस प्रकार इन प्रकार के वर्कआर्ड की आवश्यकता है।
स्कॉट सीवियरेंस

@thomasrutter: बड़े सर्वर के लिए आपका जवाब कैसे बदलता है, मेरे एक में 1TB (हाँ एक पूर्ण टेराबाइट) है और अभी भी स्वैप का उपयोग कर रहा है; क्या स्वैपीनेस सेटिंग और आप किस आकार के विभाजन की सिफारिश करेंगे?
क्रिसिनटाउन

24

Swappiness मान सेट करना हर स्थिति में काम नहीं करता है। अगर यह आपके लिए काम करता है, महान। यदि नहीं, तो मैंने समय-समय पर स्वैप को बंद करके और फिर से वापस करने के लिए एक स्क्रिप्ट लिखी है।

यदि आप सावधान नहीं हैं तो टॉगल स्वैप स्वैप थोड़ा जोखिम भरा है। यदि आपके पास पर्याप्त नि: शुल्क रैम नहीं है तो सब कुछ रैम के साथ-साथ स्वैप में सब कुछ रखने के लिए, स्वैप को अक्षम करने की कोशिश करने से आपका सिस्टम अप्रतिसादी हो जाएगा। मेरी स्क्रिप्ट पहले जांच करती है कि क्या पर्याप्त रूप से मुफ्त रैम है (जो थोड़ा सा काम करता है, क्योंकि मुफ्त रैम की वास्तविक मात्रा क्या है जो freeरिपोर्ट के रूप में अलग है ), फिर केवल टॉगल स्वैप अगर ऐसा है। लेकिन, यदि आप RAM पर थोड़े कम हैं, तो स्क्रिप्ट चालू होने के दौरान एक और बड़ी प्रक्रिया शुरू न करें। यह रहा:

#!/bin/bash

# Make sure that all text is parsed in the same language
export LC_MESSAGES=en_US.UTF-8
export LC_COLLATE=en_US.UTF-8
export LANG=en_US.utf8
export LANGUAGE=en_US:en
export LC_CTYPE=en_US.UTF-8

# Calculate how much memory and swap is free
free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"

# Do the work
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    swapoff -a
    swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi

आपको इस स्क्रिप्ट को रूट (जैसे, के साथ sudo) चलाना होगा । यह स्क्रिप्ट आपके सिस्टम को अनुत्तरदायी नहीं छोड़ेगी; यदि आपके पास अपर्याप्त रैम है, तो यह स्वैप को टॉगल करने से इंकार कर देगा। मैंने इस स्क्रिप्ट का उपयोग पाँच वर्षों के लिए समस्याओं के बिना किया है।


स्क्रिप्ट के लिए +1। आप आउटपुट में MB को MiB में बदलकर इसे थोड़ा आधुनिक बनाना चाह सकते हैं। मैंने सभी (अच्छे) सुरक्षा परीक्षणों के बिना एक समान स्क्रिप्ट लिखी, जिसमें आप शामिल हैं। मेरी पुरानी नोटबुक पर जहां स्वैप का भारी उपयोग किया गया था, उसे चलने में थोड़ी देर लगेगी - एक या दो मिनट, लेकिन कुछ भी चोट नहीं लगी। एक बार थोड़ी देर में यह विफल हो जाता है क्योंकि इसे चलाने के लिए पर्याप्त मुफ्त मेमोरी नहीं थी, लेकिन इससे कोई अतिरिक्त समस्या नहीं हुई। जब ऐसा हुआ तो मुझे चीजों को साफ करने के लिए रिबूट करना पड़ा। यह ट्रांसमिशन (मेमोरी के बाद से, मुझे विश्वास है) और केवल 2 जीआईबी राम होने में स्मृति रिसाव की तरह लग रहा था।
जो

6
अगर किसी चीज़ को स्वैप करने के लिए स्थानांतरित किया गया है और यह स्वैप में बनी हुई है, तो यह सामान्य रूप से एक अच्छी बात है - इसका मतलब है कि डेटा वास्तव में उपयोग नहीं किया जा रहा है, और यह आपके रैम को कुछ अन्य सामानों के लिए मुक्त कर दिया है, जिसके परिणामस्वरूप गति में वृद्धि हो सकती है। आपको क्या विश्वास है कि यह डेटा स्वैप में नहीं होना चाहिए और इसके बजाय अधिक मूल्यवान रैम लेना चाहिए? आमतौर पर कर्नेल का उपयोग न करने के बारे में जानने में बहुत अच्छा है, और जो सुरक्षित रूप से रैम को मुक्त करने के लिए स्वैप में रह सकता है।
थोमसट्रेटर

@ स्नेन: यह ध्यान रखें कि मेरी मशीनों में क्रमशः 2GB और 3GB RAM है, जो इन दिनों काफी कम है। साक्ष्य प्रदर्शन में है। उदाहरण के लिए, मेनू या स्विचिंग प्रोग्राम को लाना स्वैपिंग के कारण धीमा हो सकता है, जैसा कि कंपोजिट विस्कोल इफेक्ट्स कर सकते हैं। इस धीमापन को स्वैप को टॉगल करके ठीक किया जाता है, इस प्रकार यह प्रदर्शित किया जाता है कि कम से कम कुछ स्थितियों में कर्नेल का ऑप्टिमाइज़िंग एल्गोरिदम सब-ऑप्टिमल है। मैं बार-बार अनुभव के साथ बहस नहीं कर सकता।
स्कॉट सीवियरेंस

ओह !! यह सिर्फ स्वैप के 0% तक बढ़ा है .... मेरे पास इस पूर्ण प्रश्न और इसके उत्तर को देखने के लिए ज्यादा समय नहीं था, लेकिन मुझे यह पढ़ने के लिए बहुत अच्छा लगा जब मुझे कुछ खाली समय मिला।
अज़करम

आप केवल कम मूल्य पर स्वैग क्यों सेट नहीं करेंगे? ऐसा लगता है कि आपकी स्क्रिप्ट के अनुसार ही काम किया जाएगा, लेकिन बहुत अधिक नियंत्रित फैशन में।
jhfrontz

4

आम तौर पर स्वैप अब अप्रयुक्त प्रणालियों पर अप्रयुक्त रहता है। मेरे अनुभव में, गहन संचालन के बिना लंबे समय तक चलने वाली प्रक्रियाओं को लिनक्स द्वारा स्वैप करने के लिए स्थानांतरित कर दिया जाता है।
यह कुछ प्रभावित कार्यक्रमों को धीमा चलाता है।
यदि आपके पास बहुत सारे राम मुक्त हैं, तो आप कमांड चलाकर स्वैप को बंद कर सकते हैं:
swapoff -av(आपको इसके sudoलिए अधिकारों की आवश्यकता होगी ।)
यदि आपको स्वैप बंद पसंद नहीं है, तो आप सममित कमांड का उपयोग करके इसे स्विच कर सकते हैं:
swapon -av( फिर से sudoआवश्यक)।


12
स्वैपिंग को पूरी तरह से बंद कर देने से स्वप्नदोष खत्म हो जाता है = 0 एक ही काम करता है, लेकिन सुरक्षित (यदि आप मेमोरी में बहुत अधिक सामान खत्म करते हैं , तो यह स्वैप में कुछ फेंक देगा)।
ब्रेंडन लॉन्ग

@BrendanLong मेला बिंदु .. मुझे सिखाने के लिए धन्यवाद। :)
drake01

3

एक बार स्वैप का उपयोग एक कार्यक्रम के लिए किया जाता है, यह कार्यक्रम के जीवन के लिए मैप किए जाने के लिए रहता है। कई कार्यक्रमों में कोड (और डेटा) होता है जिसका उपयोग शायद ही कभी किया जाता है .. एक बार मेमोरी को स्वैप करने के बाद, इसमें स्वैप होने की संभावना नहीं है।

इन पृष्ठों को मेमोरी में बाध्य करने का एक तरीका स्वैप डिवाइस को बंद करना है। यदि आपके पास दो हैं, तो आप एक को बंद कर सकते हैं, इसे वापस चालू कर सकते हैं, फिर दूसरे को बंद कर सकते हैं। यदि स्वैप वास्तव में आवश्यक है, तो यह उपकरणों के बीच चलेगा। आप बस स्वैप डिवाइस (या फ़ाइल) को बंद कर सकते हैं, लेकिन अगर आपको वास्तव में स्वैप स्थान की आवश्यकता है तो कठोर चीजें हो सकती हैं।

मेमोरी में सामान्य चीजों के अलावा, टेम्पो स्वैप स्पेस का उपयोग करता है, और बाकी मेमोरी की तरह स्वैप करेगा। यदि आप ऐसी कोई चीज़ चलाते हैं, जिसमें बहुत सी अस्थायी डिस्क की आवश्यकता होती है, तो यह पृष्ठों को अदला-बदली करने के लिए बाध्य कर सकती है। एक बार बनाई गई अस्थायी फ़ाइलें अब कुछ मिनटों के बाद उपयोग नहीं की जा सकती हैं और स्वैप डिवाइस पर ले जाने के लिए अच्छे उम्मीदवार हैं।

एक चुटकी में आप एक स्वैप डिवाइस के रूप में एक फ़ाइल का उपयोग कर सकते हैं। यह उपयोगी है यदि आपको अस्थायी रूप से अतिरिक्त स्वैप स्थान की आवश्यकता है।


2

मैंने स्कॉट सेवरेंस की स्क्रिप्ट को मुफ्त के नए संस्करणों से मिलान करने के लिए संपादित किया , जिसमें पहले से ही उपलब्ध कुल मेमोरी फ़ील्ड शामिल है।

#!/bin/bash

free_mem="$(free | grep 'Mem:' | awk '{print $7}')"
used_swap="$(free | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$free_mem kB ($((free_mem / 1024)) MiB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MiB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $free_mem ]]; then
    echo "Freeing swap..."
    sudo swapoff -a
    sudo swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.