क्योंकि अधिकांश का मानना है कि स्वैपिंग = खराब और अगर आप स्वैगनेस को कम नहीं करते हैं, तो सिस्टम स्वैप कर देगा जब वास्तव में इसकी आवश्यकता नहीं है। दोनों में से कोई भी सच नहीं है। लोग स्वैपिंग को ऐसे समय के साथ जोड़ते हैं, जहां उनका सिस्टम अस्त-व्यस्त हो रहा है - हालाँकि, यह ज्यादातर स्वैपिंग है क्योंकि सिस्टम को अन्य तरीकों से नहीं, बल्कि नीचे की ओर से चलाया जा रहा है। जब सिस्टम स्वैप होता है, तो यह स्वैप करने के अपने निर्णय के लिए प्रदर्शन लागत को पहले ही चुका देगा, और निर्णय लिया कि ऐसा नहीं करने पर सिस्टम प्रदर्शन या स्थिरता में अधिक से अधिक जुर्माना होगा।
कुल मिलाकर डिफ़ॉल्ट सेटिंग्स का परिणाम अच्छा समग्र प्रदर्शन और स्थिरता है। मैं इसे डिफ़ॉल्ट पर छोड़ने की सलाह दूंगा। कुछ बढ़त के मामलों को हल करने के लिए अपने मेमोरी मैनेजमेंट को बेहतर बनाने के लिए लिनक्स के लिए और भी कुछ रास्ते हैं, लेकिन बड़े पैमाने पर स्वैच्छिकता नियंत्रण एक अच्छा समाधान नहीं है - इसे एक दिशा में समायोजित करें और आप एक समस्या को ठीक कर सकते हैं और अन्य समस्याएँ बना सकते हैं। यदि संभव हो, तो बस अधिक शारीरिक रैम स्थापित करना (और अकेलेपन को छोड़कर) अन्य सभी उपायों को ग्रहण करता है।
लिनक्स रैम का उपयोग कैसे करता है
कोई भी RAM जो अनुप्रयोगों द्वारा उपयोग नहीं की जा रही है, उन्हें "कैश" के रूप में उपयोग किया जा सकता है। कैश तेज, सुचारू रूप से चलने वाली प्रणाली के लिए महत्वपूर्ण है, दोनों को पढ़ता है और डिस्क पर लिखता है।
यदि आपके एप्लिकेशन अपने मेमोरी उपयोग को उस बिंदु तक बढ़ाते हैं जो वे आपके सभी रैम का उपयोग कर रहे हैं, तो आपका कैश सिकुड़ जाएगा और परिणामस्वरूप औसत डिस्क ऑपरेशन धीमा हो जाएगा। आजकल कैश के लिए सिर्फ दसियों मेगाबाइट, या उससे कम होना ही काफी नहीं है।
यदि अनुप्रयोग अपनी मेमोरी का उपयोग और भी अधिक बढ़ा देते हैं - यह मानते हुए कि आपके पास कोई स्वैप स्थान नहीं है - आपके पास न केवल कैश के लिए कोई स्थान होगा बल्कि आप अंततः मेमोरी से बाहर निकल जाएंगे और आपके सिस्टम को रनिंग प्रक्रियाओं को मारना होगा। हत्या की प्रक्रिया धीमी गति से भी बदतर है क्योंकि यह आपको एक अस्थिर, अप्रत्याशित प्रणाली देती है।
कैसे लिनक्स स्वैप का उपयोग करता है
इन दोनों समस्याओं का सामना करने के लिए, आपका सिस्टम रैम को मुक्त करने के लिए कुछ हार्ड-यूज्ड एप्लिकेशन मेमोरी को आपके डिस्क पर स्वैप स्थान पर फिर से आवंटित कर सकता है। अतिरिक्त रैम मेमोरी से बाहर भागने के कारण होने वाली प्रक्रियाओं को रोक सकता है, और थोड़ा कैश पुनः प्राप्त कर सकता है ताकि डिस्क संचालन अधिक सुचारू रूप से संचालित हो सके।
यह पुनः आवंटन हालांकि एक निश्चित कटऑफ के अनुसार नहीं किया गया है। आप आवंटन के एक निश्चित प्रतिशत तक नहीं पहुँचते हैं जिसके बाद लिनक्स स्वैप करना शुरू कर देता है। इसमें एक "फजी" एल्गोरिदम है। यह बहुत सी चीजों को ध्यान में रखता है, जिसे "स्मृति आवंटन के लिए कितना दबाव है" द्वारा सबसे अच्छा वर्णन किया जा सकता है। यदि नई मेमोरी आवंटित करने के लिए बहुत अधिक "दबाव" है, तो इससे संभावना बढ़ जाएगी कि कुछ को अधिक कमरे बनाने के लिए स्वैप किया जाएगा। यदि कम "दबाव" है तो यह इन अवसरों को कम करेगा।
आपके सिस्टम में एक "स्वैपीनेस" सेटिंग है, जो आपको इस "दबाव" की गणना करने के तरीके की गणना करने में मदद करती है। यह अक्सर "राम के प्रतिशत" के रूप में गलत तरीके से प्रस्तुत किया जाता है, लेकिन ऐसा नहीं है, यह सिर्फ एक मूल्य है जो सूत्र के हिस्से के रूप में उपयोग किया जाता है। लगभग ४० से ६० के मान अनुशंसित सेंस मान हैं, ६० आजकल डिफ़ॉल्ट हैं।
अपने सिस्टम को स्वैप करने दें, जब यह समग्र रूप से बहुत अच्छी बात है, भले ही आपके पास बहुत सी रैम हो। अपने सिस्टम को स्वैप करने दें अगर उसे आपको मानसिक शांति देने की आवश्यकता है, यदि आप कभी भी अस्थायी रूप से कम मेमोरी की स्थिति में चलते हैं (जबकि एक छोटी प्रक्रिया जो बहुत अधिक मेमोरी का उपयोग करती है), तो आपके सिस्टम के पास सब कुछ चालू रखने का एक दूसरा मौका होता है। यदि आप स्वैपिंग को पूरी तरह से अक्षम करने के लिए इतनी दूर जाते हैं, तो आप मेमोरी आवंटित करने में सक्षम नहीं होने के कारण मारे जाने की प्रक्रियाओं को जोखिम में डालते हैं।
क्या हो रहा है जब सिस्टम बुरी तरह से घिर गया है और ज़ोर से स्वैप कर रहा है?
स्वैपिंग एक धीमा और महंगा ऑपरेशन है, इसलिए सिस्टम इसे टालता है जब तक कि यह गणना नहीं करता है कि कैश परफॉर्मेंस में ट्रेड-ऑफ इसे समग्र रूप से बनाएगा, या यदि हत्या प्रक्रियाओं से बचने के लिए यह आवश्यक है।
बहुत बार लोग अपने सिस्टम को देखेंगे जो डिस्क को जोर से दबा रहा है और बहुत सारे स्वैप स्पेस का उपयोग कर रहा है और इसके लिए स्वैपिंग को दोष देता है। यह गलत तरीका है। यदि स्वैपिंग कभी भी इस चरम पर पहुंच जाती है, तो इसका मतलब है कि स्वैपिंग आपके सिस्टम की कम मेमोरी समस्याओं से निपटने का प्रयास है, समस्या का कारण नहीं है, और यह कि स्वैपिंग के बिना आपकी रनिंग प्रक्रिया बस बेतरतीब ढंग से मर जाएगी।
डेस्कटॉप सिस्टम के बारे में क्या? क्या उन्हें एक अलग दृष्टिकोण की आवश्यकता नहीं है?
एक डेस्कटॉप सिस्टम के उपयोगकर्ता वास्तव में उपयोगकर्ता द्वारा शुरू किए गए कार्यों के जवाब में "संवेदनशील महसूस करने के लिए" सिस्टम की अपेक्षा करते हैं, जैसे कि एक एप्लिकेशन खोलना, जो कि एक प्रकार की कार्रवाई है जो कभी-कभी आवश्यक मेमोरी बढ़ने के कारण स्वैप को ट्रिगर कर सकती है।
एक तरह से कुछ लोग इसे ट्विक करने की कोशिश करते हैं, यह स्वैपीनेस पैरामीटर को कम करने के लिए है जो मेमोरी अप का उपयोग करके और कैश स्पेस पर कम चलने के लिए सिस्टम की सहिष्णुता को बढ़ा सकता है।
हालाँकि, यह केवल गोलपोस्ट को स्थानांतरित करना है। पहला एप्लिकेशन अब एक स्वैप ऑपरेशन के बिना लोड हो सकता है, लेकिन यह अगले एप्लिकेशन के लिए कम सुस्त छोड़ देगा जो लोड करता है। एक ही स्वैपिंग बाद में हो सकती है, जब आप अगली बार इसके बजाय एक एप्लिकेशन खोलें। इस बीच, कैश का आकार कम होने के कारण सिस्टम प्रदर्शन कुल मिलाकर कम है। इस प्रकार, कम स्वैंगापन सेटिंग से किसी भी लाभ को मापना मुश्किल हो सकता है, कुछ समय पर स्वैप में देरी को कम कर सकता है लेकिन अन्य समय पर धीमी गति से प्रदर्शन का कारण बन सकता है। स्वैगनेस को कम करना उचित हो सकता है यदि आप जानते हैं कि आप क्या कर रहे हैं, लेकिन इसे कम से कम 10% तक कम कर सकते हैं सिस्टम सहिष्णु को बहुत कम कैशे आकार में छोड़ सकते हैं और सिस्टम को कम नोटिस पर स्वैप करने के लिए अधिक उत्तरदायी छोड़ सकते हैं।
स्वैप को पूरी तरह से अक्षम करने से बचना चाहिए क्योंकि आप आउट-ऑफ-मेमोरी शर्तों के खिलाफ अतिरिक्त सुरक्षा खो देते हैं जो प्रक्रियाओं को क्रैश या मौत का कारण बन सकते हैं।
अब तक का सबसे प्रभावी उपाय अधिक रैम स्थापित करना है यदि आप इसे खरीद सकते हैं।
क्या किसी ऐसे सिस्टम पर स्वैप को अक्षम किया जा सकता है जिसमें बहुत सारी रैम हो?
यदि आपके पास अनुप्रयोगों की आवश्यकता की तुलना में कहीं अधिक रैम है, तो आपको शायद ही कभी स्वैप की आवश्यकता होगी। स्वैप अक्षम करने से संभवत: समय का अंतर नहीं पड़ेगा। लेकिन अगर आपके पास बहुत सारी रैम है, तो स्वैप को सक्षम करने से भी कोई जुर्माना नहीं होगा क्योंकि सिस्टम को स्वैप की आवश्यकता नहीं होती है जब उसे इसकी आवश्यकता नहीं होती है।
जिन स्थितियों में यह अंतर करता है, केवल उसी स्थिति में होगा जब सिस्टम खुद को मेमोरी से बाहर पाता है और परिणामस्वरूप कैश सिस्टम में बाधा आ रही है, और यह इस प्रकार की स्थिति में है जहां आप सबसे अधिक स्वैप करना चाहते हैं । तो आप सुरक्षित रूप से इसके सामान्य सेटिंग्स पर स्वैप छोड़ सकते हैं मन की अतिरिक्त शांति के लिए, जब आपके पास बहुत अधिक स्मृति होती है तो इसका नकारात्मक प्रभाव नहीं पड़ता है।
लेकिन स्वैप मेरे सिस्टम को कैसे गति दे सकता है? धीमी गति से चीजों को स्वैप नहीं करता है?
रैम से स्वैप करने के लिए डेटा को स्थानांतरित करने का कार्य एक धीमा ऑपरेशन है, लेकिन यह केवल तभी लिया जाता है जब कर्नेल को बहुत यकीन है कि एक उचित कैश आकार रखने के परिणामस्वरूप समग्र लाभ इसे पछाड़ देगा।
एक बार डेटा स्वैप में है, यह फिर से कब निकलता है?
मेमोरी का कोई भी हिस्सा स्वैप से वापस आ जाएगा जैसे ही इसका उपयोग किया जाता है - से पढ़ा या लिखा जाता है। हालांकि, आम तौर पर जो मेमोरी स्वैप की जाती है वह मेमोरी होती है जिसे लंबे समय तक एक्सेस नहीं किया गया है और जल्द ही इसकी आवश्यकता नहीं है।
डेटा को स्वैप से बाहर स्थानांतरित करना समय लेने वाली के रूप में के रूप में इसे वहाँ में डालने के बारे में है। यदि इसकी आवश्यकता नहीं है तो आपका कर्नेल इससे डेटा नहीं निकालेगा। जबकि डेटा स्वैप में है और इसका उपयोग नहीं किया जा रहा है, यह उन अन्य चीजों के लिए अधिक मेमोरी छोड़ देता है जो उपयोग की जा रही हैं , और अधिक सिस्टम कैश।
क्या ऐसे कोई मामले हैं जहां स्वैग को कम करना उचित है?
हाँ। यदि आप किसी विशेष सर्वर अनुप्रयोग के लिए समर्पित सर्वर चला रहे हैं जो सिस्टम कैश से लाभान्वित नहीं होता है। कुछ डेटाबेस सर्वर जैसे ओरेकल सर्वर, MySQL / MariaDB कुछ मामलों में स्वैग को कम करने की सलाह देते हैं 1 से 10 तक क्योंकि ये डेटाबेस इंजन अपने स्वयं के कैशिंग का उपयोग करते हैं।
ध्यान दें कि यह केवल तभी सच है जब आपका सिस्टम उस एक कार्य के लिए समर्पित है, और MySQL / MariaDB के मामले में केवल तभी यदि आप विशुद्ध रूप से InnoDB या XtraDB का उपयोग कर रहे हैं, और MyISAM या Aria, आदि नहीं।