जब आप लिनक्स स्थापित करते हैं, तो सेटअप प्रक्रिया संभवतः लिनक्स के लिए विभाजन के साथ हार्ड डिस्क में एक स्वैप विभाजन जोड़ देगी। लेकिन यह स्वैप विभाजन किस लिए उपयोग किया जाता है और क्या यह वास्तव में आवश्यक है?
स्वैप क्या है?
जब एक मल्टीटास्किंग ऑपरेटिंग सिस्टम भौतिक मेमोरी से बाहर हो जाता है, तो यह नई प्रक्रियाओं को शुरू करने या मौजूदा प्रक्रियाओं को अधिक मेमोरी आवंटित करने में असमर्थ होता है। इस समस्या को हल करने के लिए, स्थानीय भंडारण (अक्सर हार्ड ड्राइव) पर स्थान का एक विशेष ब्लॉक उन प्रक्रियाओं के लिए अस्थायी होल्डिंग क्षेत्र के रूप में कार्य करने के लिए अलग रखा जाता है जो वर्तमान में नहीं चल रही हैं। OS निष्क्रिय प्रक्रिया को मेमोरी से बाहर और हार्ड डिस्क पर "स्वैप" करता है। यह नए काम के लिए याददाश्त को मुक्त करता है। जब निष्क्रिय प्रक्रिया फिर से सक्रिय हो जाती है, तो इसे स्थानीय भंडारण से स्मृति में वापस बदल दिया जाएगा। इस प्रक्रिया को अदला-बदली के रूप में जाना जाता है।
क्या स्वैप स्पेस वास्तव में आवश्यक है?
क्या स्वैप स्पेस तकनीकी रूप से आवश्यक है? नहीं, लिनक्स इसके बिना काम कर सकता है और कुछ स्थितियों में, एम्बेडेड समाधान की तरह, लिनक्स को बिना स्वैप के चलाया जा सकता है। यदि OS ऐसी स्थिति में आ जाता है जहाँ उसके पास पर्याप्त मेमोरी नहीं है, तो वह घबरा जाएगा और रुक जाएगा। यदि पर्याप्त भौतिक RAM है, तो मशीन बिना किसी समस्या के चलेगी।
क्या स्वैप स्पेस व्यावहारिक रूप से आवश्यक है? हां। हालाँकि स्वैपिंग कंप्यूटर को धीमा कर देती है (क्योंकि हार्ड डिस्क पर पढ़ना और लिखना रैम तक पहुँचने की तुलना में बहुत धीमा है) और बोर्ड पर अधिक से अधिक भौतिक मेमोरी होना स्वैपिंग से बचने का सबसे अच्छा उपाय है, ऐसी वैध परिस्थितियाँ हैं जहाँ स्वैपिंग वांछनीय है। उदाहरण के लिए, सिस्टम बूट के दौरान, ऐसी प्रक्रियाएं हो सकती हैं जो चलती हैं (और इसलिए सिस्टम मेमोरी का उपभोग करती हैं) लेकिन फिर प्रभावी रूप से बहुत लंबे समय तक सोती हैं। या स्मृति जिसे आवंटित किया जाता है, लिखा जाता है और फिर कभी उपयोग नहीं किया जाता है। इन स्थितियों में, स्वैपिंग एल्गोरिथम इस मेमोरी को हार्ड डिस्क पर माइग्रेट करना शुरू कर देगा और इसलिए मूल्यवान सिस्टम मेमोरी को खाली कर देगा। यह वास्तव में सुनिश्चित करता है कि RAM की अधिकतम मात्रा हर समय उपलब्ध है और इसलिए प्रदर्शन को बढ़ाता है।
जिन मशीनों में मेमोरी में रहने के लिए पर्याप्त भौतिक RAM नहीं है, तो स्वैप स्पेस का उपयोग आवश्यक है!
पूर्णता के लिए, यह ध्यान देने योग्य है कि लिनक्स में आउट-ऑफ-मेमोरी किलर (ओओएम) नामक एक सबसिस्टम भी है, जो मेमोरी से बाहर होने पर कर्नेल को रोकने के बजाय, मुक्त संसाधनों के लिए प्रक्रियाओं को मारना शुरू कर देगा। इसकी क्रियाएं विन्यास योग्य हैं।
मुझे कितना स्वैप स्थान आवंटित करना चाहिए?
कोई पूर्ण नियम नहीं है और चूंकि हार्ड डिस्क स्थान सस्ता है (डॉलर प्रति गीगाबाइट) इसलिए बहुत कम स्थान की तुलना में बहुत अधिक आवंटित करना बेहतर है। अंगूठे के एक नियम के रूप में, आपके पास भौतिक स्मृति के रूप में स्वैप स्थान की मात्रा का दो या तीन गुना होना चाहिए।
स्वैप विभाजन को बढ़ाए बिना स्वैप जोड़ना
मौजूदा स्वैप विभाजन को बदले बिना सिस्टम में स्वैप स्पेस जोड़ने के दो तरीके हैं। एक तरीका दूसरे ड्राइव पर स्वैप विभाजन का उपयोग करना है, दूसरा एक स्वैप फ़ाइल का उपयोग करना है।
किसी अन्य हार्ड ड्राइव का उपयोग करने के लिए, "लिनक्स स्वैप" (कोड 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
. में भी जोड़ने की जरूरत है फ़ाइल। प्रक्रिया बिल्कुल ऊपर की तरह ही है, लेकिन आपको /store/swapfile
. का उपयोग करने की आवश्यकता है के बजाय /dev/sdb2
स्वैप स्पेस पैरामीटर के रूप में।
स्वैपनेस
लिनक्स कर्नेल को यह परिभाषित करने के लिए ट्वीक किया जा सकता है कि इसे मेमोरी से प्रक्रियाओं को स्वैप करने के लिए कितनी आक्रामक कोशिश करनी चाहिए। यह प्रवृत्ति swappiness
. नामक कर्नेल चर द्वारा नियंत्रित होती है . एक swappiness
0 का मतलब है कि कर्नेल जितना संभव हो स्वैपिंग से बच जाएगा, जबकि 100 का मतलब है कि कर्नेल आक्रामक होगा कि वह स्वैप स्पेस का उपयोग कैसे करता है। कई लिनक्स वितरणों के लिए डिफ़ॉल्ट सेटिंग 60 है। इस कमांड का उपयोग करके संख्या को गतिशील रूप से बदलना संभव है:
sudo sysctl vm.swappiness=10
किसी मान को स्थायी रूप से सेट करने के लिए, आपको vm.swappiness
को बदलना होगा (या जोड़ना होगा, अगर यह मौजूद नहीं है) /etc/sysctl.conf
में चर फ़ाइल।
यदि आप Linux में स्वैप के बारे में कोई प्रश्न पूछना चाहते हैं तो हमें बताएं।
यह लेख पहली बार दिसंबर 2013 में प्रकाशित हुआ था और अगस्त 2020 में अपडेट किया गया था।