कार्यकारी सारांश
एक स्वैप क्षेत्र (जिसे स्वैप पार्टीशन, स्वैप फाइल या पेज फाइल कहा जाता है) ओएस द्वारा पता लगाने योग्य भौतिक मेमोरी को बढ़ाने के लिए एक तंत्र है।
यदि आप उपलब्ध भौतिक रैम में कम हैं, और आज की मशीन पर, मैं कहूंगा कि यदि आपके पास 4 जीबी या उससे कम रैम है। तब शायद आपके पास एक स्वैप होना चाहिए। लेकिन यह आपके काम के बोझ पर निर्भर करता है और आप अपनी मशीन का उपयोग कैसे करते हैं।
यदि आपके पास 4GB से अधिक रैम है, तो एक अच्छा मौका है कि आपका सिस्टम कभी भी स्वैप का उपयोग नहीं कर सकता है। तो अगर स्वैप सक्षम है या नहीं, तो यह ज्यादा नहीं बदलेगा।
यद्यपि यह अन्य कारकों पर निर्भर करता है, अब जितनी देर तक आपकी मशीन चल रही होगी, उतनी ही संभावना होगी कि ओएस रैम के छोटे अप्रयुक्त हिस्से को स्वैप करने के लिए स्वैप कर देगा। हालाँकि, अक्सर सिस्टम फ़ाइल बफ़र्स और अन्य सामान के लिए "फ्री" रैम का उपयोग करता है, और कुछ कार्यभार आपके फ़ाइल बफर का उपयोग सभी उपलब्ध रैम कर सकते हैं।
पृष्ठभूमि की जानकारी
यदि आप स्वैप को निष्क्रिय कर देते हैं और आपकी मेमोरी पूरी तरह से उपयोग हो जाती है तो क्या होगा? खैर, अगली बार जब कोई एप्लिकेशन अधिक मेमोरी का अनुरोध करता है (जैसे कि एक मॉलोक या रियललोक के साथ), तो यह एक त्रुटि प्राप्त करेगा! यदि इसे ठीक से कोडित किया गया है, तो एप्लिकेशन इसका पता लगा लेगा, लेकिन इस तरह की त्रुटि से निपटने और कार्यक्रम को शालीनतापूर्वक समाप्त करना अभी भी एक चुनौती हो सकती है! हालाँकि, कई डेवलपर सफल मेमोरी आवंटन के लिए परीक्षण नहीं करते हैं और अक्सर यह दुर्घटनाग्रस्त हो जाता है जैसे ही इस गैर-आवंटित मेमोरी का उपयोग होने वाला है। इसलिए एक मजबूत संभावना है कि एप्लिकेशन क्रैश हो जाएगा, और वास्तव में कई एप्लिकेशन क्रैश हो जाएंगे क्योंकि आपके पास एक से अधिक एप्लिकेशन हैं जो आमतौर पर एक ही समय में चल रहे हैं। उम्मीद है, कर्नेल अपने आप में प्रतिरक्षा होना चाहिए, लेकिन मेरे अनुभव में यह हमेशा मामला नहीं था।
यदि आप स्वैप करते हैं, तो आपके पास एक ही व्यवहार होगा , लेकिन आपके पास एक उच्च सीमा है इसलिए संभावना है कि आप उस सीमा तक नहीं पहुंचेंगे।
मेरे पास 8 और 16 जीबी रैम के साथ 2 मशीन हैं। इन मशीन का मेरा व्यक्तिगत उपयोग मुझे कभी भी इस रैम के उपयोग के करीब नहीं लाना चाहिए (आज (शायद कुछ वर्षों में जो अलग हो सकता है)। एकमात्र कारण जो मैं भौतिक RAM सीमा को मारता हूं, वह यह है कि एक प्रक्रिया बदमाश हो गई और सभी RAM का उपभोग कर रही है। स्वैप नहीं होने से राहत मिलती है, कर्नेल तुरंत रैम प्रक्रिया को हिट करते ही दुष्ट प्रक्रिया को मार देगा। यदि आप स्वैप करते हैं, तो आपको एक दर्दनाक अनुभव मिलेगा (शायद एसएसडी पर नहीं ...) के रूप में आपकी प्रणाली स्वैप और स्वैप और स्वैप हो जाएगी और कभी-कभी पूरी तरह से अनुत्तरदायी हो जाएगी जब तक कि उम्मीद है कि आपका कर्नेल अपराधी को मार डाले!
सलाह देता है
आपको लोगों को यह बताने से डरना नहीं चाहिए कि यदि आप स्वैप हटाते हैं तो कुछ बहुत ही गलत हो सकता है। यदि आप ऐसा करते हैं, तो आपका भौतिक पता स्थान कम हो जाएगा, जैसे कि आप 4 जीबी रैम से 2 जीबी तक जाएंगे। क्या आप ऐसा काम करेंगे? फिर आपको स्वैप को नहीं निकालना चाहिए। हालाँकि आप इसे सीमित करने का निर्णय ले सकते हैं, और यह बुद्धिमान होगा ।
यदि किसी को लगता है कि उसका कार्यभार उसे उपलब्ध भौतिक रैम से अधिक या अधिक उपयोग करने के लिए ला सकता है, या यदि किसी को I / O (रीड / राइट टू डिस्क) की बहुत आवश्यकता है, तो स्वैप रखा जाना चाहिए।
जब स्वैप रखा जाना चाहिए, तो उपयोगकर्ता को उस मात्रा की सीमा निर्धारित करने का प्रयास करना चाहिए जो एक प्रक्रिया का उपयोग कर सकती है। लिनक्स सिस्टम पर, कोई cgroups मेमोरी लिमिट्स का उपयोग करने से बच सकता है ताकि कुछ प्रक्रिया नियंत्रण से बाहर हो जाए, मुझे OS X के बराबर पता नहीं है लेकिन यह तरीका होना चाहिए।
हालांकि, यदि किसी के पास अपने कार्यभार के लिए पर्याप्त से अधिक उपलब्ध मेमोरी है, तो वह सुरक्षित रूप से स्वैप को अक्षम कर सकता है या वह इसे रख सकता है। यह प्रदर्शन के मामले में भी बहुत ज्यादा नहीं बदलेगा क्योंकि अगर सिस्टम स्वैप का उपयोग नहीं करता है, तो आप एक प्रदर्शन ड्रॉप (विशेष रूप से एसएसडी पर एक पुरानी घूर्णी हार्ड डिस्क पर दिखाई देने वाले) से नहीं टकराते हैं।
प्रति प्रक्रिया या प्रक्रियाओं के समूह में मेमोरी सीमा निर्धारित करने के लिए ऊपर दिए गए समान ट्रिक का उपयोग करना भी पर्याप्त उपलब्ध रैम से अधिक के मामले में लाभार्थी है।
मेरा अपना उदाहरण
मेरे पास 1 जीबी रैम के साथ एक पुराना पीसी है, वहां मेरे पास एक बड़ा स्वैप है: 4 जीबी इसलिए मैं फ़ायरफ़ॉक्स और उस पर अन्य एप्लिकेशन चला सकता हूं। यद्यपि मुझे एक सही उपयोगकर्ता अनुभव प्राप्त करने के लिए जितना संभव हो उतना कम एप्लिकेशन (या फ़ायरफ़ॉक्स में टैब) का उपयोग करना पड़ता है।
मेरे पास 8 जीबी रैम वाला एक छोटा सर्वर है। वहाँ मुझे ठीक-ठीक पता है कि मेरा काम का बोझ है और मैं नहीं चाहता कि मेरा सर्वर धीमा हो क्योंकि एक प्रक्रिया दुष्ट हो गई है और सभी मेमोरी का उपभोग कर रही है। वहाँ मेरे पास कोई स्वैप और cgroup मेमोरी सीमा अवरोधक नहीं है, इसलिए एप्लिकेशन या सेवाएं क्रैश हो सकती हैं लेकिन कर्नेल नहीं। Btw, यह एक लिनक्स मशीन है।
फिर, मेरे पास 16 जीबी रैम के साथ मेरा मैक है। मैं इसका एकमात्र उपयोगकर्ता नहीं हूं, और उपयोगकर्ता को स्विच करते समय हम इंतजार नहीं करेंगे। वहां हमारे पास स्वैप है, इस कंप्यूटर के अन्य उपयोगकर्ताओं के कार्य भार की योजना बनाना मेरे लिए मुश्किल है। यहां तक कि अगर मैं केवल एक ही होगा तो मैं स्वैप का उपयोग करूंगा। मैं अक्सर कई वीएम चलाता हूं और मेमोरी खपत करने वाले एप्लिकेशन का उपयोग करता हूं, लेकिन सभी एक ही समय में नहीं, इसलिए मैं अप्रयुक्त ऐप में ओएस स्वैपिंग का मन नहीं बनाऊंगा ताकि मैं तेजी से डिस्क I / O प्राप्त कर सकूं या किसी अन्य वीएम को लॉन्च कर सकूं। अब तक, मैंने इस मशीन की अदला-बदली नहीं देखी है!