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

उन मशीनों पर जिनके पास हर चीज को मेमोरी में रखने के लिए पर्याप्त भौतिक RAM नहीं है, स्वैप स्पेस का उपयोग आवश्यक है!
पूर्णता के लिए, यह उल्लेख करने योग्य है कि लिनक्स में Out-Of-Memory Killer (OOM) नामक एक सबसिस्टम भी है, जो मेमोरी खत्म होने पर कर्नेल को रोकने के बजाय, संसाधनों को मुक्त करने के लिए प्रक्रियाओं को मारना शुरू कर देगा। इसके कार्य विन्यास योग्य हैं।
मुझे कितना स्वैप स्पेस आवंटित करना चाहिए?
कोई पूर्ण नियम नहीं है और चूंकि हार्ड डिस्क स्पेस सस्ता है (प्रति गीगाबाइट डॉलर) इसलिए बहुत कम स्पेस की तुलना में बहुत अधिक स्पेस आवंटित करना बेहतर है। एक नियम के रूप में, आपके पास भौतिक मेमोरी की मात्रा का दो या तीन गुना स्वैप स्पेस होना चाहिए।
स्वैप पार्टीशन का विस्तार किए बिना स्वैप जोड़ना
मौजूदा स्वैप पार्टीशन को बदले बिना सिस्टम में स्वैप स्पेस जोड़ने के दो तरीके हैं। एक तरीका है किसी अन्य ड्राइव पर स्वैप पार्टीशन का उपयोग करना, दूसरा है स्वैप फ़ाइल का उपयोग करना।
दूसरे हार्ड ड्राइव का उपयोग करने के लिए, "Linux swap" (कोड 82) प्रकार का एक पार्टीशन बनाएं और फिर स्वैप स्पेस तैयार करने के लिए "mkswap" कमांड चलाएं:
mkswap /dev/sdb2
जहां /dev/sdb2 आपके द्वारा बनाए गए पार्टीशन का नाम है। स्वैप स्पेस का तुरंत उपयोग करने के लिए "swapon" कमांड का उपयोग करें:
swapon /dev/sdb2
वर्तमान में उपयोग किए जा रहे स्वैप स्पेस की सूची प्राप्त करने के लिए "swapon -s" का उपयोग करें। स्वैप स्पेस को सिस्टम में स्थायी रूप से जोड़ने के लिए, आपको /etc/fstab फ़ाइल को संपादित करना होगा और इस जैसी एक लाइन जोड़नी होगी:
/dev/sdb2 none swap sw 0 0
यदि आपका सिस्टम डिस्क को नाम देने के लिए अद्वितीय पहचानकर्ताओं का उपयोग कर रहा है, तो डिवाइस के लिए आईडी की सूची प्राप्त करने के लिए blkid कमांड का उपयोग करें। /etc/fstab में स्वैप स्पेस माउंट करने की लाइन तब इस तरह दिखेगी:
UUID=036da155-1ea1-4392-b8d4-700f65aa1ead none swap sw 0 0
स्वैप के लिए फ़ाइल का उपयोग करने के लिए, उस फाइलसिस्टम पर एक बड़ी खाली फ़ाइल बनाएं ( dd का उपयोग करके) जिसे आप स्वैपिंग के लिए उपयोग करना चाहते हैं। उदाहरण के लिए, 1GB फ़ाइल बनाने के लिए, टाइप करें:
dd if=/dev/zero of=/store/swapfile bs=1024 count=1048576
जहां /store/swapfile वांछित फाइलसिस्टम पर स्वैप फ़ाइल का पथ है।
अतिरिक्त स्वैप पार्टीशन के साथ, फ़ाइल को अब mkswap के साथ तैयार करने की आवश्यकता है और फिर swapon के साथ उपयोग किया जाता है। इसे /etc/fstab फ़ाइल में भी जोड़ने की आवश्यकता है। प्रक्रिया बिल्कुल ऊपर जैसी ही है, लेकिन आपको स्वैप स्पेस पैरामीटर के रूप में /dev/sdb2 के बजाय /store/swapfile का उपयोग करना होगा।
Swappiness
Linux कर्नेल को यह परिभाषित करने के लिए tweaked किया जा सकता है कि यह मेमोरी से प्रक्रियाओं को स्वैप आउट करने की कितनी आक्रामक कोशिश करनी चाहिए। इस प्रवृत्ति को swappiness नामक एक कर्नेल वेरिएबल द्वारा नियंत्रित किया जाता है। swappiness 0 का मतलब है कि कर्नेल जितना संभव हो उतना स्वैपिंग से बचने की कोशिश करेगा, जबकि 100 का मतलब है कि कर्नेल स्वैप स्पेस का उपयोग करने में आक्रामक होगा। कई लिनक्स वितरण के लिए डिफ़ॉल्ट सेटिंग 60 है। इस संख्या को गतिशील रूप से बदलना संभव है इस कमांड का उपयोग करके:
sudo sysctl vm.swappiness=10
मान को स्थायी रूप से सेट करने के लिए, आपको /etc/sysctl.conf फ़ाइल में vm.swappiness वेरिएबल को बदलने (या जोड़ने, यदि यह मौजूद नहीं है) की आवश्यकता है।
हमें बताएं यदि आपके पास लिनक्स में स्वैप के बारे में प्रश्न हैं।
यह लेख दिसंबर 2013 में पहली बार प्रकाशित हुआ था और अगस्त 2020 में अपडेट किया गया था।