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


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


183
2018-06-29 22:16


मूल


अपनी समस्या का निवारण करने में हमारी सहायता करने के लिए कृपया निम्नलिखित आदेशों / फ़ाइलों की सामग्री या आउटपुट साझा करें (इस जवाब में निर्देश): free -m, top -b 1 - ish
कल उन आदेशों के पेस्टबिन्स के साथ प्रश्न अपडेट करेंगे। यह अभी 12 बजे है :( - Mysterio
मुझे शीर्षक जोड़ने के लिए शीर्षक संपादित करना चाहिए "... लेकिन मैं अभी देखभाल करने के लिए बहुत नींद आ रहा हूं, इसलिए आप लोग भी झपकी लेते हैं": पी - ish


जवाब:


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

वहाँ से उबंटू के स्वैप अकसर किये गए सवाल:

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

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

  1. स्वभाव में 0 और 100 के बीच का मूल्य हो सकता है

  2. swappiness = 0 कर्नेल को यथासंभव लंबे समय तक भौतिक स्मृति से स्वैपिंग प्रक्रियाओं से बचने के लिए कहता है

  3. swappiness = 100 कर्नेल को आक्रामक रूप से भौतिक स्मृति से प्रक्रियाओं को स्वैप करने के लिए कहता है और उन्हें कैश स्वैप करने के लिए ले जाता है

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

स्वैपनेस मूल्य की जांच करने के लिए

cat /proc/sys/vm/swappiness

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

sudo sysctl vm.swappiness=10

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

gksudo gedit /etc/sysctl.conf

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

vm.swappiness=10

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

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


161
2018-06-29 23:10



निष्क्रिय अटकलें: यह वास्तव में प्रदर्शन के लिए फायदेमंद हो सकता है - कुछ समय में जिन पृष्ठों को एक्सेस नहीं किया गया है उन्हें स्वैप स्पेस में कॉपी किया जा सकता है, जो ओएस को उन्हें तुरंत बेदखल करने की इजाजत देता है अगर इसे कभी भी स्मृति की आवश्यकता होती है, लेकिन पृष्ठ की सामग्री स्मृति में रहती है । - Simon Richter
@ सिमोन रिचटर हां यह विचार है। 60 की स्वैपनेस शायद आधुनिक प्रणालियों पर बहुत आक्रामक है, हालांकि इसका मतलब है कि जब भी आपके पास अभी भी कई मेमोरी है तो आप स्वैप आउट करना शुरू कर रहे हैं। - Brendan Long
रन sudo sysctl --load=/etc/sysctl.conf परिवर्तन लागू करने के लिए फ़ाइल को संपादित करने के बाद - deFreitas


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

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

लिनक्स रैम का उपयोग कैसे करता है (बहुत सरल)

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

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

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

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

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

कैसे लिनक्स स्वैप का उपयोग करता है (यहां तक ​​कि अधिक सरल)

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

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

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

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

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

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

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

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

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

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

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

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


83
2017-07-04 03:50



विस्तृत स्पष्टीकरण के लिए +1। मैं अपने कंप्यूटर पर 2 जीआईबी स्वैप रखना भी पसंद करता हूं। अगर कुछ खराब हो जाता है - मेमोरी लीक इत्यादि, तो आप स्वैप जा रहे देख सकते हैं और स्मृति से पहले समस्या की तलाश कर सकते हैं। यह एक सुरक्षा नेट के साथ ही एक प्रदर्शन उपकरण है। - Joe
मेरी नेटबुक पर, जिसमें केवल 2 जीबी रैम है, मैं 4 जीबी स्वैप रखता हूं। ऐसा इसलिए है क्योंकि मैं नेटबुक का बहुत अधिक उपयोग करता हूं जिसका उद्देश्य था और मेरे कार्यक्रमों को अक्सर 2 जीबी से अधिक स्मृति की आवश्यकता होती है। चूंकि लिनक्स आउट-ऑफ-मेमोरी स्थितियों में बहुत खराब व्यवहार करता है, इसलिए मुझे एक बड़ी सुरक्षा नेट पसंद है। और मेरे पास डिस्क की बहुत सारी जगह है। - Scott Severance
यदि आपके कार्यक्रमों को अक्सर 2 जीबी से अधिक मेमोरी की आवश्यकता होती है तो मैं वहां अधिक रैम चकित करने पर विचार करता हूं (यह अल्ट्रा-सस्ता है!) क्योंकि थकाऊ रैम प्रदर्शन को नुकसान पहुंचाएगा। अन्य पाठकों के लाभ के लिए: यह सुनिश्चित करें कि आप केवल कैश मेमोरी को नहीं देख रहे हैं माना उपलब्ध राम को हॉग करने के लिए - अन्य संदर्भ देखें free -m। - thomasrutter
@neon_overload: मुझे बस ध्यान रखना चाहिए कि एचपी के अनुसार, मेरी नेटबुक की अधिकतम रैम 1 जीबी है। मेरे पास अब 2 जीबी है, और इंटरनेट स्रोत बताते हैं कि 2 जीबी वास्तविक अधिकतम है। इस प्रकार कामकाज के इस तरह की जरूरत है। - Scott Severance
@ थॉमसट्रटर: आपके उत्तर बड़े सर्वरों के लिए कैसे बदलते हैं, इनमें से एक में राम के 1TB (हाँ एक पूर्ण टेराबाइट) है और अभी भी स्वैप का उपयोग कर रहा है; क्या swappiness सेटिंग और आप किस आकार स्वैप विभाजन की सिफारिश करेंगे? - chrisinmtown


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

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

#!/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)। यह स्क्रिप्ट आपके सिस्टम को उत्तरदायी नहीं छोड़ेगी; अगर आपके पास अपर्याप्त रैम है, तो यह स्वैप टॉगल करने से इंकार कर देगा। मैंने इस स्क्रिप्ट का उपयोग अब पांच साल के लिए समस्याओं के बिना किया है।


21
2017-07-04 02:38



स्क्रिप्ट के लिए +1। आप आउटपुट में एमबी को एमआईबी बदलकर थोड़ा सा आधुनिकीकरण करना चाहेंगे। मैंने आपके द्वारा शामिल सभी (अच्छे) सुरक्षा परीक्षणों के बिना एक समान स्क्रिप्ट लिखी है। मेरी पुरानी नोटबुक पर जहां स्वैप का भारी इस्तेमाल किया जाता था, इसमें थोड़ी देर लगती थी - एक या दो मिनट, लेकिन कुछ भी चोट नहीं पहुंची। एक बार थोड़ी देर में यह असफल हो जाएगा क्योंकि इसे चलाने के लिए पर्याप्त मुक्त स्मृति नहीं थी, लेकिन इससे कोई अतिरिक्त समस्या नहीं हुई। जब ऐसा हुआ तब मुझे चीजों को साफ़ करने के लिए रिबूट करना पड़ा। इसे ट्रांसमिशन में मेमोरी लीक की तरह दिखने के साथ करना था (निश्चित रूप से, मुझे विश्वास है) और केवल 2 जीआईबी रैम है। - Joe
अगर कुछ स्वैप में ले जाया गया है और यह स्वैप में रहता है, तो यह आमतौर पर एक अच्छी बात है - इसका मतलब है कि डेटा का वास्तव में उपयोग नहीं किया जा रहा है, और यह आपकी कुछ रैम को अन्य सामानों के लिए मुक्त कर देता है, जिसके परिणामस्वरूप गति में संभावित वृद्धि होती है। आपको यह विश्वास करने के लिए क्या प्रेरित किया गया है कि यह डेटा स्वैप में नहीं होना चाहिए और इसके बजाय अधिक मूल्यवान रैम लेना चाहिए? आम तौर पर कर्नेल के बारे में जानने के लिए बहुत अच्छा है जो अप्रयुक्त है, और जो रैम को मुक्त करने के लिए स्वैप में सुरक्षित रूप से रह सकता है। - thomasrutter
@neon: ध्यान रखें कि मेरी मशीनों में क्रमशः 2 जीबी और 3 जीबी रैम है, जो इन दिनों काफी कम है। सबूत प्रदर्शन में है। उदाहरण के लिए, स्वैपिंग के कारण मेन्यू या स्विचिंग प्रोग्राम्स को धीमा कर सकते हैं, क्योंकि कंपोज़ विस्फोट प्रभाव हो सकता है। स्वैप को टॉगल करके यह धीमापन ठीक हो जाता है, इस प्रकार यह दर्शाता है कि कम से कम कुछ स्थितियों में कर्नेल के अनुकूलन एल्गोरिदम उप-स्थानिक हैं। मैं बार-बार अनुभव के साथ बहस नहीं कर सकता। - Scott Severance
ओह !! यह सिर्फ 0% स्वैप तक बढ़ा दिया गया .... मेरे पास इस पूरे प्रश्न और उसके उत्तर को देखने के लिए अधिक समय नहीं था, लेकिन जब मुझे कुछ खाली समय मिलता है तो मैं इसे पढ़ने के लिए इसे पसंद करता हूं। - AzkerM
आप केवल कम मूल्य पर स्वैपनेस क्यों नहीं सेट करेंगे? ऐसा लगता है कि आपकी स्क्रिप्ट के समान ही काम हो रहा है, लेकिन अधिक नियंत्रित फैशन में। - jhfrontz


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


4
2018-06-29 22:24



स्वैप बंद करना पूरी तरह से अधिक है क्योंकि swapiness = 0 एक ही चीज़ करता है, लेकिन सुरक्षित (यदि आप कर स्मृति में बहुत अधिक सामान के साथ समाप्त होता है, यह स्वैप में कुछ फेंक देगा)। - Brendan Long
@ ब्रेंडन लोंग फेयर प्वाइंट .. मुझे सिखाने के लिए धन्यवाद। :) - drake01


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

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

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

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


3
2018-06-30 04:02





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

#!/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

2
2017-10-03 13:37