वर्चुअल मेमोरी उन चीजों में से एक है जो आधुनिक ओएस को रेखांकित करती है लेकिन आमतौर पर, आप वास्तव में इसके बारे में तब तक नहीं सोचते जब तक आपको कोई समस्या न हो। लिनक्स डिस्ट्रोस आपको इंस्टॉलेशन के दौरान अपना वर्चुअल मेमोरी स्पेस (स्वैप पार्टिशन) सेट करने के लिए कहते हैं, लेकिन अधिकांश शुरुआती इस बात से अवगत नहीं हैं कि यह कितना उपयोगी है।
यहाँ वह सब कुछ है जो आपको Linux पर वर्चुअल मेमोरी के बारे में जानने की आवश्यकता है।
वर्चुअल मेमोरी क्या है?
वर्चुअल मेमोरी आपकी मेमोरी का प्रतिनिधित्व करने का एक तरीका है जो आपकी मशीन की भौतिक मेमोरी से सारगर्भित है। यह आपके RAM और आपके स्टोरेज स्पेस दोनों का उपयोग करता है, चाहे वह पारंपरिक हार्ड ड्राइव पर हो या SSD पर।
लिनक्स में, यह कर्नेल और हार्डवेयर स्तरों पर किया जाता है। CPU में हार्डवेयर का एक टुकड़ा होता है जिसे मेमोरी मैनेजमेंट यूनिट (MMU) कहा जाता है जो भौतिक मेमोरी एड्रेस को वर्चुअल में ट्रांसलेट करता है। ये पते इस बात से स्वतंत्र हैं कि वे मशीन पर भौतिक रूप से कहां रहते हैं। इन एड्रेस स्पेस को "पेज" के रूप में जाना जाता है और वे रैम में या आपकी हार्ड ड्राइव या एसएसडी पर हो सकते हैं। OS इन पतों को मेमोरी के एक बड़े पूल के रूप में देखता है, जिसे "एड्रेस स्पेस" के रूप में जाना जाता है।
वर्चुअल मेमोरी इस तथ्य का लाभ उठाती है कि सिद्धांत रूप में उपयोग की जा रही सभी मेमोरी का उपयोग हर समय नहीं किया जा रहा है। मेमोरी में प्रोग्राम को पृष्ठों में तोड़ दिया जाता है और जिन हिस्सों को कर्नेल अनावश्यक मानता है उन्हें "स्वैप आउट" किया जाता है या हार्ड ड्राइव में ले जाया जाता है। जब उनकी आवश्यकता होती है, तो उन्हें "स्वैप इन" किया जा सकता है या रैम में वापस लाया जा सकता है।
किसी ड्राइव पर वर्चुअल मेमोरी के लिए उपयोग की जाने वाली जगह को "बैकिंग स्टोर" या "स्वैप स्पेस" के रूप में जाना जाता है। विंडोज़ की दुनिया में, यह है आमतौर पर एक फ़ाइल के रूप में लागू किया जाता है, जिसे "स्वैप फ़ाइल" के रूप में जाना जाता है। लिनक्स में ऐसा करना भी संभव है, लेकिन यह बहुत अधिक सामान्य है प्रति एक समर्पित डिस्क विभाजन का उपयोग करें.
लिनक्स पर स्वैप फाइलें आमतौर पर न्यूनतम या एम्बेडेड सिस्टम के लिए आरक्षित होती हैं, और बाद वाले के लिए पूरी तरह से वर्चुअल मेमोरी के बिना चलना आम बात है क्योंकि एम्बेडेड ओएस को छोटा होना चाहिए।
वर्चुअल मेमोरी का नतीजा यह है कि भौतिक RAM की तुलना में अधिक मेमोरी का उपयोग करके बड़े प्रोग्राम चलाना संभव है आपकी मशीन, उसी तरह जैसे क्रेडिट कार्ड से आप अपने बैंक से अधिक पैसे में बड़ी खरीदारी कर सकते हैं खाता। क्रेडिट कार्ड की तरह, वर्चुअल मेमोरी तब उपयोगी होती है जब आपको इसकी आवश्यकता होती है लेकिन आप इसके उपयोग को अधिक नहीं करना चाहते हैं।
वर्चुअल मेमोरी भी डेवलपर्स को यह जाने बिना एप्लिकेशन बनाने की अनुमति देती है कि कंप्यूटर की मेमोरी कैसे व्यवस्थित होती है।
वर्चुअल मेमोरी के साथ ऐतिहासिक रूप से मुख्य नकारात्मक पक्ष यह रहा है कि हार्ड ड्राइव रैम की तुलना में धीमी रही है। यदि किसी मशीन में पर्याप्त RAM नहीं है, तो सिस्टम अंतहीन रूप से पृष्ठों की अदला-बदली कर सकता है, इस प्रक्रिया को "थ्रैशिंग" कहा जाता है। ये है आधुनिक पीसी पर अधिक रैम और तेज एसएसडी के साथ यांत्रिक हार्ड ड्राइव को विस्थापित करने में कोई समस्या नहीं है, लेकिन यह अभी भी जागरूक होने के लिए कुछ है का।
लिनक्स स्वैप विभाजन
जैसा कि पहले उल्लेख किया गया है, लिनक्स पर वर्चुअल मेमोरी स्थापित करने की सामान्य विधि एक समर्पित डिस्क विभाजन का उपयोग करना है। संस्थापन उपयोगिता आपके हार्डवेयर की जांच करेगी और एक विभाजन योजना प्रस्तावित करेगी जिसमें एक स्वैप विभाजन शामिल है।
आप संस्थापन के बाद स्वैप विभाजन भी जोड़ सकते हैं। यदि आप किसी मौजूदा ड्राइव में एक नया विभाजन जोड़ना चाहते हैं, तो आपको करना होगा एक विनाशकारी विभाजन उपकरण का उपयोग करें GParted की तरह। सुनिश्चित करें कि आपने "लिनक्स स्वैप" को अपने विभाजन के लिए फाइल सिस्टम के रूप में चुना है।
अपनी ड्राइव को फिर से विभाजित करने से पहले महत्वपूर्ण डेटा का बैकअप लें।
अपना विभाजन बनाने के बाद, अपने विभाजन को प्रारूपित करने के लिए mkswap कमांड का उपयोग करें।
sudo mkswap /dev/sdX
अब आपको अपना संपादन करना होगा /etc/fstab अपने स्वैप विभाजन को जोड़ने के लिए रूट के रूप में। फ़ाइल में जोड़ी गई यह पंक्ति, बूट समय पर आरोहित होने के लिए एक स्वैप विभाजन स्थापित करेगी:
/dev/sdX कोई भी स्वैप डिफ़ॉल्ट नहीं है 0 0
अब का प्रयोग करें जोड़ा जा चुका अपने नए स्वैप स्थान को सक्रिय करने के लिए आदेश दें, जहां sdX आपके स्वैप विभाजन का नाम है:
सुडो स्वैपन / देव / एसडीएक्स
लिनक्स पर स्वैप फाइलों का उपयोग करना
यह आसान है Linux में एक स्वैप फ़ाइल सेट करें कमांड लाइन का उपयोग करना। यदि आप अपनी ड्राइव या संपादन को पुन: विभाजित करने से परेशान नहीं होना चाहते हैं तो आप ऐसा करना चाह सकते हैं /etc/fstab. एक विधि का उपयोग करना है फैलोकेट:
उदाहरण के लिए, 2GB स्वैप फ़ाइल बनाने के लिए:
सुडो फैलोकेट -l 2G /path/to/swapfile
एक विकल्प के रूप में, आप स्वैप फ़ाइल बनाने के लिए dd कमांड का उपयोग कर सकते हैं।
सुडो डीडी यदि=/dev/शून्य का=/path/टू/स्वैपफाइल बीएस=1024 गिनती =2048
सुनिश्चित करें कि आप dd कमांड का सही उपयोग कर रहे हैं, क्योंकि इनफाइल और आउटफाइल गलत होने से डेटा हानि हो सकती है। इस कारण से फेलोकेट पसंदीदा तरीका है।
/dev/zero डिवाइस एक विशेष उपकरण है जो "0." आउटपुट करता है। यह dd कमांड जो करता है वह स्वैप स्पेस के रूप में उपयोग के लिए उपयुक्त 1024-किलोबाइट ब्लॉक का उपयोग करके एक खाली दो-गीगाबाइट ब्लॉक फ़ाइल बनाता है।
फिर आप का उपयोग कर सकते हैं mkswap तथा जोड़ा जा चुका एक स्वैप फ़ाइल के साथ कमांड जैसा कि आप एक स्वैप विभाजन के साथ करेंगे:
sudo mkswap /path/to/swapfile
सुडो स्वैपन /पथ/से/स्वैपफाइल
आपको आश्चर्य हो सकता है कि आपको अपने स्वैप स्थान के लिए एक स्वैप फ़ाइल या एक समर्पित विभाजन का उपयोग कब करना चाहिए। चुनाव आसान है: ज्यादातर परिस्थितियों में, आपको विभाजन का उपयोग करना चाहिए। लिनक्स डेस्कटॉप या सर्वर के लिए यह सबसे अच्छा विकल्प है। इंस्टॉलर द्वारा सुझाई गई विभाजन योजना आमतौर पर एकल-उपयोगकर्ता लिनक्स डेस्कटॉप पर पर्याप्त होती है।
यदि आप एक वर्चुअल मशीन में लिनक्स चला रहे हैं, एक छोटे एम्बेडेड सिस्टम पर, या आप अपने मौजूदा लिनक्स सिस्टम को फिर से विभाजित नहीं करना चाहते हैं, तो आप एक स्वैप फ़ाइल का उपयोग करना चाह सकते हैं।
कितना स्वैप स्पेस?
कई वर्षों के लिए, स्वैप स्थान की कितनी आवश्यकता है, इसके लिए मानक सलाह भौतिक RAM से दोगुनी है। बड़ी ड्राइव और मेमोरी की मात्रा के साथ जो सबसे सस्ते पीसी के साथ आता है, यह नियम सवालों के घेरे में आ सकता है।
कई प्रणालियों पर, यदि आप शीर्ष या htop की जाँच करते हैं, तो आप यह भी देख सकते हैं कि यदि आप अपना सिस्टम इस तरह से सेट करते हैं तो आपके स्वैप स्थान का उपयोग बिल्कुल भी नहीं किया जा रहा है।
फिर भी, यदि आप स्मृति पर अधिक मांग करते हैं तो दो बार भौतिक स्मृति एक अच्छा प्रारंभिक बिंदु और बीमा पॉलिसी है। आप अपने सिस्टम में आवश्यकतानुसार परिवर्तन कर सकते हैं। यदि आपका सिस्टम आपके सभी RAM का उपयोग कर रहा है, तो वर्चुअल मेमोरी का उपयोग करते समय कंप्यूटर प्रदर्शन समस्याओं में चल सकता है।
कंप्यूटर अंदर और बाहर अदला-बदली कर सकता है, एक प्रक्रिया जिसे थ्रैशिंग के रूप में जाना जाता है, जिससे यह अनुत्तरदायी प्रतीत होता है। यदि आपके पास अभी भी एक यांत्रिक हार्ड ड्राइव है, तो आप अक्सर इसे लगातार एक्सेस करते हुए सुन सकते हैं।
यह आजकल एक समस्या से बहुत कम है क्योंकि सबसे सस्ते पीसी पर भी रैम की मात्रा पर्याप्त से अधिक है, साथ ही एसएसडी की गति पुरानी हार्ड ड्राइव की तुलना में बहुत तेज है। यह अभी भी कुछ ऐसा है जिससे आपको अवगत होना चाहिए।
इसे ठीक करने का सबसे आसान तरीका है कि आप अपनी मशीन में और अधिक RAM जोड़ें। यदि यह संभव नहीं है, तो आप लिनक्स कर्नेल के "स्वैपनेस" को समायोजित करने का प्रयास कर सकते हैं।
स्वैपनेस संख्या निर्धारित करती है कि वर्चुअल मेमोरी में कर्नेल कितना डुबकी लगाता है। यह 0 से 100 तक होता है। इसे 0 पर सेट करने का अर्थ है कि लिनक्स बिल्कुल भी स्वैप नहीं करेगा, जबकि 100 पर, यह हर अवसर पर स्वैप करेगा। अधिकांश सिस्टम पर डिफ़ॉल्ट 60 है।
अदला-बदली को अस्थायी रूप से बदलने के लिए, sysctl कमांड का उपयोग करें:
sudo sysctl vm.swappiness=20
जब तक आप रीबूट नहीं करते तब तक उस कमांड में "20" स्वैपनेस नंबर होगा। इसे स्थायी रूप से बदलने के लिए, संपादित करें /etc/sysctl.conf रूट के रूप में फ़ाइल करें और लाइन रखें, "vm.swappiness=[swappiness number]", जहां "[swappiness number]" वह स्वेपनेस नंबर है जो आप चाहते हैं। यह एक स्टॉपगैप होगा जब तक कि आप अधिक रैम स्थापित नहीं कर सकते।
वर्चुअल मेमोरी आपके लिनक्स सिस्टम को सुचारू रूप से चालू रखती है
वर्चुअल मेमोरी आधुनिक OSes का एक घटक है, जिसमें Linux भी शामिल है, जो आपके कंप्यूटर को सुचारू रूप से चालू रखता है। आप एक स्वैप फ़ाइल का उपयोग कर सकते हैं, लेकिन सामान्य विधि एक समर्पित विभाजन है। आपको इसके बारे में ज्यादा सोचने की जरूरत नहीं है, लेकिन लिनक्स स्वैप पार्टीशन और स्वैप फाइल को सेट करना और समस्या निवारण करना आसान है।
यह सलाह विंडोज सहित अन्य प्रणालियों पर भी लागू होती है, भले ही वर्चुअल मेमोरी सेट करने के तरीके अलग-अलग हों।