रैम में पर्याप्त खाली स्थान होने पर स्वैप का उपयोग क्यों करें?


124

रैम की जगह स्वैप स्पेस का उपयोग करने से पीसी की गति धीमी हो सकती है

तो क्यों, जब मेरे पास पर्याप्त से अधिक रैम उपलब्ध है, तो क्या मेरा लिनक्स सिस्टम (आर्क) स्वैप का उपयोग करता है?

नीचे मेरे शंकु उत्पादन की जाँच करें:

शंकु उत्पादन

इसके अलावा, यह गति और प्रणाली-जवाबदेही के मुद्दों का कारण हो सकता है जो मैं कर रहा हूं?

का आउटपुट free -m:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1257       1004        252          0         51        778
-/+ buffers/cache:        174       1082
Swap:          502        144        357

5
मुझे पूरा यकीन है कि इस मुद्दे की गतिशीलता एसएसडी के आदर्श बनने के साथ काफी बदल गई है। जबकि आपका नियमित उपभोक्ता SSD RAM की तुलना में अभी भी बहुत धीमा है, अब यह और सस्ता होने की बात है - RAM $ / GB या SSD $ / GB। SSD जबकि धीमी बहुत सस्ती है और ज्यादातर मामलों में तेजी से पर्याप्त है तो स्वैपिंग भी उपयोगकर्ता के अनुभव को काफी परेशान नहीं करना चाहिए जैसे कि यह रोटेटिंग मीडिया के साथ प्रयोग किया जाता है।
21

7
कभी-कभी, यदि आप पूर्ण रैम के कारण पूर्व में स्वैप करते थे, तो आपके पास एक स्थिति हो सकती है जहां पहले स्वैप किए गए डेटा वहां रहें क्योंकि यह इस समय उपयोगी डेटा नहीं है।
टॉटर

1
जैसा कि तोटर ने कहा। कभी-कभी सिस्टम कुछ बाहर पृष्ठ करेगा (जो भी कारण के लिए)। यदि बाद में उस पृष्ठ को रीड ऑपरेशन के लिए मेमोरी में वापस ले जाया जाता है, तो स्वैप स्पेस में कॉपी डिलीट नहीं की जाती है। यदि बाद में उसी पृष्ठ को फिर से पृष्ठांकित किया जाता है, तो बदले बिना, वह डिस्क पर फिर से लिखे बिना ऐसा कर सकता है। वहां जो कॉपी है, वह पहले से ही अप टू डेट है। दूसरे शब्दों में, एक पेज स्वैप और मुख्य मेमोरी दोनों में जगह ले सकता है।
akजक

जवाबों:


93

लिनक्स सिस्टम के लिए कुछ स्वैप का उपयोग करना सामान्य है, भले ही अभी भी रैम मुक्त हो। लिनक्स कर्नेल उन मेमोरी पेजों को स्वैप करने के लिए चलेगा जो बहुत कम उपयोग किए जाते हैं (जैसे, gettyउदाहरण जब आप केवल X11 का उपयोग करते हैं, और कुछ अन्य निष्क्रिय डेमॉन)।

स्वैप स्पेस का उपयोग केवल तब ही एक समस्या बन जाता है जब पर्याप्त रैम उपलब्ध नहीं होती है, और कर्नेल को मेमोरी पेजों को लगातार स्वैप करने और रैम पर वापस जाने के लिए मजबूर किया जाता है, बस अनुप्रयोगों को चालू रखने के लिए। इस मामले में, सिस्टम मॉनिटर एप्लिकेशन बहुत सारे डिस्क I / O गतिविधि दिखाते हैं।

तुलना के लिए, मेरा Ubuntu 10.04 सिस्टम, दो उपयोगकर्ताओं के साथ X11 सत्रों में लॉग इन किया दोनों GNOME डेस्कटॉप चला रहे हैं, ~ 600MB स्वैप और ~ 1GB RAM (बफ़र्स और fs कैश की गिनती नहीं) का उपयोग करता है, इसलिए मैं कहूंगा कि स्वैप के लिए आपके आंकड़े उपयोग सामान्य लग रहा है।


39
निष्क्रिय कार्यक्रमों को स्वैप करके, आपके पास फ़ाइल कैशिंग के लिए अधिक मेमोरी है। और वह चीजों को गति देता है।
jmanning2k

91

इस व्यवहार को निम्न का मान सेट करके कॉन्फ़िगर किया जा सकता है:

/proc/sys/vm/swappiness

डिफ़ॉल्ट मान 60 है। इसे 0 पर सेट करने का मतलब है कि स्वैप का उपयोग कभी न करें जब अभी भी रैम शेष है और 100 जल्द से जल्द मेमोरी को स्वैप कर रहा है।

मान को अस्थायी रूप से बदलने के लिए (रिबूट पर खो दिया):

sudo sysctl vm.swappiness=10

मान को स्थायी रूप से बदलने के लिए, फ़ाइल को संपादित करें:

/etc/sysctl.conf

रूट के रूप में (उदाहरण के लिए sudo nano /etc/sysctl.conf) और बदलें या जोड़ें (यदि नहीं) तो लाइन:

vm.swappiness

वांछित मूल्य के लिए। यदि यह फ़ाइल मौजूद नहीं है (जैसे आर्क लिनक्स में), तो /etc/sysctl.d/99-sysctl.confइसके बजाय प्रयास करें ।

उपलब्ध स्मृति के साथ स्वैपिंग अच्छा है या बुरा, इस पर कुछ बहस हुई है, लेकिन उबंटू मदद वास्तव में डेस्कटॉप सिस्टम के लिए 10 के मूल्य की सिफारिश करती हैCentOS के लिए डिजिटल महासागर पर इस ट्यूटोरियल को भी देखें ।


27
ध्यान दें कि swappiness को कम करने है नहीं जरूरी एक प्रदर्शन या जवाबदेही वृद्धि मतलब है। मैं की खबरों को देखा है में वृद्धि बेहतर प्रदर्शन में swappiness अनुवाद। विश्वास न करें कि आपने जो कुछ भी पढ़ा है उसमें बेंचमार्क शामिल नहीं है, और जाँच लें कि बेंचमार्क आपके समान वर्कलोड का उपयोग करता है।
गिल्स

क्या यह रिबूट के पार है? मैंने सोचा था कि प्रत्येक बूट को पुनः प्राप्त किया गया था।
हैंडींडी

@ हंडीगैंडी: मैंने उत्तर में जानकारी जोड़ी कि इसे कैसे स्थायी रूप से बदलना है।
मार्सेल स्टिमबर्ग

@HandyGandy: पांडित्यपूर्ण होने के लिए, / proc प्रत्येक बूट पर पुनर्जीवित नहीं किया जाता है, बल्कि proc एक वर्चुअल फ़ाइल सिस्टम है, इसलिए जब आप उन्हें एक्सेस करते हैं तो यह केवल "उत्पन्न" होता है। यह डिस्क पर मौजूद नहीं है।
रेयान

swappinessमूल्य का मेरे सिस्टम पर कोई प्रभाव नहीं है। यहां तक ​​कि इसे 0 पर सेट करने पर भी 2 जीबी फ्री रैम होने पर स्वैप करने के लिए महत्वपूर्ण और बार-बार उपयोग किए जाने वाले पेज (जैसे मेरा आईडीई का इंडेक्स) चलते रहेंगे।
शेफारोव

46

RAM के भरे जाने से पहले लिनक्स स्वैप करना शुरू कर देता है। यह प्रदर्शन और जवाबदेही को बेहतर बनाने के लिए किया जाता है:

  • प्रदर्शन में वृद्धि हुई है क्योंकि कभी-कभी रैम मेमोरी प्रोग्राम को स्टोर करने की तुलना में डिस्क कैश के लिए बेहतर उपयोग किया जाता है। इसलिए बेहतर है कि आप ऐसे प्रोग्राम को स्वैप करें जो थोड़ी देर के लिए निष्क्रिय हो, और इसके बजाय अक्सर उपयोग की जाने वाली फ़ाइलों को कैश में रखें।

  • सिस्टम के निष्क्रिय होने पर पृष्ठों की अदला-बदली करके जवाबदेही में सुधार किया जाता है, बजाय इसके कि जब मेमोरी पूरी हो और कुछ प्रोग्राम चल रहा हो और किसी कार्य को पूरा करने के लिए अधिक RAM का अनुरोध कर रहा हो।

स्वैपिंग सिस्टम को धीमा कर देता है, बेशक - लेकिन स्वैपिंग का विकल्प स्वैपिंग नहीं है, यह अधिक रैम वाला है या कम रैम का उपयोग कर रहा है।


तो, एक अर्थ में, स्वैप एक मामले में उपाय है? वह, और हाइबरनेट बात?
tshepang

@ त्सेपंग: आपकी वर्चुअल मेमोरी को फिट करने के लिए पर्याप्त स्वैप "स्थिति में" नहीं है, यह आवश्यक है (अन्यथा आपके प्रोग्राम मेमोरी की कमी के कारण दुर्घटनाग्रस्त हो जाएंगे)।
जिल्स

1
@Tschepang: OOM किलर दुर्घटना का कारण है। (तकनीकी रूप से आप OOM किलर के बिना कर सकते थे और बस कुछ भी आवंटित करने में सक्षम नहीं थे, लेकिन इससे सिस्टम को लॉक करने का एक अच्छा मौका होगा; OOM किलर इसे व्यवस्थापक के लिए लॉग इन करने में सक्षम होने की थोड़ी अधिक संभावना बनाता है; चालू रखने के लिए महत्वपूर्ण प्रक्रियाओं के लिए।)
गिल्स

1
मैं आपकी बात को समझता हूं "सिस्टम के बेकार होने पर पृष्ठों की अदला-बदली होती है, बजाए इसके कि जब मेमोरी पूरी हो जाए", लेकिन आदमी मुश्किल से 15% रैम का उपयोग कर रहा है। लगभग पूर्ण से दूर है, है ना? हालाँकि पूर्ण RAM के कारण पिछले स्वैपिंग ने इस स्थिति को छोड़ दिया हो सकता है ...
Totor

1
"RAM के भरे जाने से पहले लिनक्स की अदला-बदली शुरू हो जाती है" कब? ठीक
यूशा अलबायो

11

यह एक पुरानी पोस्ट है, हालांकि, मैं अभी भी अपने विचारों को यहां रखने की स्वतंत्रता लूंगा।

नीचे से शुरू करके, लिनक्स सबसे पहले मेमोरी को पेजों (आमतौर पर x86_64 सिस्टम पर 4K प्रति पेज) में विभाजित करेगा। इसके बाद, वर्चुअल मेमोरी बनाई जाती है, जिसका एमएमयू (मेमोरी मैनेजमेंट यूनिट) का उपयोग करके भौतिक मेमोरी के साथ मैपिंग की जाती है।

वर्चुअल मेमोरी क्षेत्र से प्रक्रियाओं को मेमोरी आवंटित की जाती है, इसलिए कृपया ध्यान दें, जब आप देखते हैं / proc / meminfo, तो आप VMalloc * को वर्चुअल मेमोरी विवरण के रूप में देखेंगे।

कहते हैं कि आपके पास स्मृति के लिए अनुरोध करने वाली एक प्रक्रिया है (जैसे कि 300MB - एक वेब ब्राउज़र)। वर्चुअल मेमोरी से इस प्रक्रिया को 300MB आवंटित किया जाएगा, हालांकि, यह आवश्यक नहीं है कि यह मेमोरी मैप्ड हो (जिसे भौतिक मेमोरी में मैप किया जाता है)। मेमोरी प्रबंधन के लिए "कॉपी पर राइट" की अवधारणा है, जिसके तहत, यदि आपकी प्रक्रियाएं वास्तव में वर्चुअल मेमोरी से आवंटित मेमोरी का उपयोग करती हैं (अर्थात यह मेमोरी पर कुछ लिखती है), तो केवल भौतिक मेमोरी में मैप किया जाता है। यह कर्नेल को एक बहु-प्रक्रिया वातावरण में ठीक से काम करने के लिए कुशलतापूर्वक सहायता करता है।

कैश क्या हैं?

प्रक्रियाओं द्वारा उपयोग की जाने वाली बहुत सी मेमोरी साझा की जाती हैं। बता दें कि ग्लिबेक लाइब्रेरी का उपयोग लगभग सभी प्रक्रियाओं द्वारा किया जाता है। मेमोरी में ग्लिबक की कई प्रतियां रखने का क्या मतलब है, जब हर प्रक्रिया एक ही मेमोरी स्थान तक पहुंच सकती है और काम कर सकती है। ऐसे अक्सर उपयोग किए जाने वाले संसाधनों को कैश में रखा जाता है ताकि जब प्रक्रिया की मांग हो, तो उन्हें उसी मेमोरी लोकेशन पर भेजा जा सके। यह प्रक्रियाओं को गति देने में मदद करता है, जैसा कि glibc (आदि।) को डिस्क से फिर से पढ़ने में समय लगता है।

प्रति शेयर की गई लाइब्रेरियों के लिए ऊपर था, रीडिंग फाइल करने के लिए भी यही सच है। यदि आप पहली बार एक बड़ी फ़ाइल (कहते हैं 100-200MB) पढ़ते हैं, तो इसमें बहुत समय लगेगा। हालाँकि, जब आप कोशिश करते हैं और फिर से वही पढ़ते हैं, तो यह तेज़ होगा। डेटा को मेमोरी में कैश किया गया था, और सभी ब्लॉकों के लिए फिर से रीड नहीं किया गया था।

बफर क्या है?

जहां तक ​​बफर का सवाल है, जब कोई प्रक्रिया I / O फाइल करती है, तो यह डेटा को डिस्क पर लिखने के लिए कर्नेल के बफर पर निर्भर करता है। प्रक्रियाएं, कर्नेल को कार्य करने का अनुरोध करती हैं। तो, प्रक्रिया की ओर से, कर्नेल अपने "बफर" को डेटा लिखता है, और प्रक्रिया को बताता है कि लेखन किया जाता है। एक async तरीके से, कर्नेल इस डेटा को बफर में डिस्क में सिंक करता रहेगा। इस तरह, डिस्क पर डेटा सिंक करने के लिए सही समय चुनने के लिए प्रक्रियाएँ कर्नेल पर निर्भर होती हैं, और प्रक्रियाएँ आगे काम करना जारी रख सकती हैं। याद रखें, यह सामान्य I / O है जो सामान्य प्रक्रियाएं कर रही हैं। हालांकि, विशेष प्रक्रियाएं, जिन्हें यह पुष्टि करने की आवश्यकता है कि I / O वास्तव में डिस्क पर किया गया है, डिस्क पर I / O करने के लिए अन्य तंत्र का उपयोग कर सकता है। ओपनसोर्स उपयोगिताओं में से कुछ लिबियो हैं। इसके अलावा, आपकी प्रक्रियाओं के संदर्भ में खोले गए एफडी के लिए स्पष्ट सिंक को कॉल करने के तरीके हैं,

पेज दोष क्या हैं?

एक उदाहरण पर विचार करें, जब आप एक प्रक्रिया शुरू करते हैं (एक वेब ब्राउज़र कहते हैं), जिसका बाइनरी लगभग 300 एमबी है। हालाँकि, वेब ब्राउज़र बाइनरी का पूर्ण 300MB तुरंत काम करना शुरू नहीं करता है। प्रक्रिया अपने कोड में फ़ंक्शंस-टू-फ़ंक्शंस से चलती रहती है। जैसा कि पहले कहा गया है, वर्चुअल मेमोरी 300 एमबी की खपत होगी, लेकिन सभी मेमोरी को भौतिक मेमोरी में मैप नहीं किया जाता है (आरएसएस - निवासी मेमोरी कम होगी, शीर्ष आउटपुट देखें)। जब कोड निष्पादन एक बिंदु पर पहुंच जाता है, जिसके लिए मेमोरी वास्तव में भौतिक रूप से मैप नहीं की जाती है, तो एक पेज की गलती मुद्दों होगी। कर्नेल इस मेमोरी को भौतिक में मैप करेगा, मेमोरी पेज को आपकी प्रक्रिया में संबद्ध करेगा। ऐसे पृष्ठ दोष को "मामूली पृष्ठ दोष" कहा जाता है। इसी तरह, जब एक प्रक्रिया फ़ाइल I / O कर रही होती है, तो प्रमुख पृष्ठ दोष उठाए जाते हैं।

स्वैप आउट कब और क्यों होता है?

स्थिति 1:

ऊपर दिए गए विवरणों के साथ, एक परिदृश्य पर विचार करने देता है जब अच्छी मात्रा में मेमोरी मैप हो जाती है। और अब एक प्रक्रिया शुरू होती है, जिसमें स्मृति की आवश्यकता होती है। जैसा कि ऊपर चर्चा की गई है, कर्नेल में कुछ मेमोरी मैपिंग होगी। हालाँकि, मेमोरी को मैप करने के लिए पर्याप्त भौतिक रैम उपलब्ध नहीं है। अब, कर्नेल पहले कैश में दिखेगा, इसमें कुछ पुराने मेमोरी पेज होंगे जिनका उपयोग नहीं किया जा रहा है। यह उन पृष्ठों को एक अलग विभाजन (SWAP कहा जाता है) पर फ़्लश करेगा, कुछ पृष्ठों को मुक्त करेगा, और आने वाले नए अनुरोधों के लिए पृष्ठों को मुक्त करेगा। चूंकि सॉलिड-स्टेट रैम की तुलना में डिस्क लेखन बहुत धीमा है, इसलिए इस प्रक्रिया में बहुत समय लगता है, और इसलिए धीमी गति देखी जाती है।

स्थिति 2:

कहते हैं कि आपको सिस्टम में बहुत सारी मुफ्त मेमोरी उपलब्ध हैं। तब भी आप देखते हैं कि बहुत अधिक स्वैग-आउट हो रहा है। स्मृति विखंडन का एक संभावित मुद्दा हो सकता है। एक प्रक्रिया पर विचार करें, जो कर्नेल से 50MB सन्निहित स्मृति की मांग करता है। (ध्यान रखें सन्निहित)। जाहिर है, कर्नेल ने विभिन्न प्रक्रियाओं के लिए पृष्ठों को यादृच्छिक रूप से आवंटित किया होगा, और उनमें से कुछ को मुक्त कर दिया। हालांकि, जब हम सन्निहित स्मृति की मांग करते हैं, तो उसे एक ऐसे चंक की तलाश करनी होगी जो प्रक्रियाओं की मांग को पूरा करता है। यदि यह ऐसी मेमोरी प्राप्त करने में सक्षम नहीं है, तो इसे कुछ पुराने मेमोरी पेजों की अदला-बदली करनी होगी और फिर सन्निहित लोगों को आवंटित करना होगा। यहां तक ​​कि ऐसे मामलों में SWAP बाहर होगा। कर्नेल क्रिया 2.6 और इसके बाद के संस्करण शुरू करने से ऐसी विखंडन समस्याएं काफी कम हो गई हैं। हालांकि, यदि सिस्टम लंबे समय से चल रहा है, तो ऐसी समस्याएं अभी भी आ सकती हैं।

इस उदाहरण को देखें ( vmstat आउटपुट )

2016-10-29 03:55:32 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
2016-10-29 03:55:32  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2016-10-30 03:56:04 19 23 2914752 4692144 3344908 12162628 1660    1  8803 12701 4336 37487 14  7 40 38  0
2016-10-30 03:56:34  3 20 2889296 4977580 3345316 12026752 2109    2  8445 14665 4656 36294 12  7 46 34  0
2016-10-30 03:57:04  1 11 3418868 4939716 3347804 11536356  586 4744  2547  9535 3086 24450  6  3 59 33  0  <<<-----
2016-10-30 03:57:34  3 19 3456252 5449884 3348400 11489728 3291 13371  6407 17957 2997 22556  6  4 66 24  0
2016-10-30 03:58:04  7  6 4194500 5663580 3349552 10857424 2407 12240  3824 14560 2295 18237  4  2 65 29  0
2016-10-30 03:58:34  2 16 4203036 5986864 3348908 10838492 4601 16639  7219 18808 2575 21563  6  4 60 31  0
2016-10-30 03:59:04  3 14 4205652 6059196 3348760 10821448 6624 1597  9431  4357 1750 20471  6  2 60 31  0
2016-10-30 03:59:34  2 24 4206968 6053160 3348876 10777216 5221 2067 10106  7377 1731 19161  3  3 62 32  0
2016-10-30 04:00:04  0 13 4205172 6005084 3348932 10785896 6236 1609 10330  6264 1739 20348  4  2 67 26  0
2016-10-30 04:00:34  4 11 4206420 5996396 3348976 10770220 6554 1253 10382  4896 1964 42981 10  5 58 27  0
2016-10-30 04:01:04  6  4 4177176 5878852 3348988 10825840 8682  765 10126  2716 1731 32949  8  4 69 19  0

@ 2016-10-30 03:57:04, हम देखते हैं कि अभी भी अच्छी मात्रा में मुफ्त रैम उपलब्ध है। हालाँकि, तब भी स्वैप आउट हुआ। हमने इस बिंदु पर प्रक्रिया के पेड़ की जाँच की, और हमने ऐसी कोई प्रक्रिया नहीं देखी, जो इतनी अधिक मात्रा में स्मृति (मुक्त स्मृति से अधिक) की मांग करे। स्पष्ट संदेह ऊपर वर्णित 2 था। हमने ऊपर दोस्तइनफो और ज़ोनइनफो लॉग की जाँच की (इनकी जाँच करने के लिए इको मी> / प्रिक / sysrq-ट्रिगर का उपयोग करें, आउटपुट syslogs में जाता है)।

हमारी एक सामान्य प्रणाली के लिए, ज़ोन जानकारी की तुलना यह इस प्रकार है। और कैश / फ्री / कम मेम के लिए रेखांकन भी नीचे उल्लेखित है

जोन की जानकारी

स्वैप फ्री लो फ्री

जानकारी को देखते हुए, यह स्पष्ट है कि नोड 0 और नोड 1 सामान्य में मेमोरी विखंडन है (नोड यह NUMA आधारित मशीन है, इसलिए कई नोड्स (अपने सिस्टम के लिए जानकारी की जांच करने के लिए अंकतालिका देखें)।

मेमोरी विखंडन भी एक कारण है कि जब मुफ्त मेमोरी होती है तब भी स्वैप का उपयोग बढ़ सकता है।


2
आपको यह स्पष्ट करना चाहिए कि क्या आपके "स्थिति 2" में, मांग की प्रक्रिया भौतिक मेमोरी को आवंटित कर रही है जो एक असामान्य मामला है। अधिकांश प्रक्रियाएं केवल वर्चुअल मेमोरी से निपट रही हैं जहां विखंडन लगभग अप्रासंगिक है। आप बेहतर तरीके से यह भी समझाना चाहेंगे कि आप किस तरह से संख्या और चार्ट से स्मृति विखंडन प्रदर्शित करते हैं क्योंकि यह पहली नजर में स्पष्ट नहीं है। ओह, और वास्तव में, आप वास्तव में सन्निहित स्मृति के बारे में बात कर रहे हैं , उम्मीद है कि संक्रामक स्मृति नहीं ;-)
jlliagre

@ जल्लीगर: इनपुट्स के लिए धन्यवाद। मैं "सन्निहित" त्रुटि का संपादन कर रहा हूं।
अनुग्रहा सिन्हा

5

अधिक उपलब्ध स्मृति होना

जैसे सभी ने कहा, हां स्वैप आपको अप्रयुक्त मेमोरी से छुटकारा पाने में मदद करेगा, इसलिए यह आपको अधिक मेमोरी उपलब्ध होने में मदद कर सकता है।

सुप्तावस्था

लेकिन स्वैप का उपयोग हाइबरनेटिंग के लिए भी किया जा सकता है जो लैपटॉप होने पर वास्तव में उपयोगी हो सकता है या ऊर्जा बचाने के लिए और काम छोड़ने से पहले अपने कंप्यूटर और हाइबरनेशन में काम करना चाहता है। तो आप सुबह के बाद एक तेज शुरुआत कर सकते हैं।

हाइबरनेटिंग फ़ंक्शन होने का एक मुख्य कारण है जो हम अभी भी देखते हैं कि स्वैप के लिए कम से कम रैम का आकार रखने की सलाह देते हैं। इस तरह से सिस्टम सभी प्रयुक्त रैम को स्वैप में डाल सकता है और हाइबरनेशन में चला जाता है।

लघु आने

ध्यान रखें कि एक बार स्वैप करने के बाद बंद होने के बाद भी स्वैप में एक प्रक्रिया डेटा पढ़ा जा सकता है, जब तक कि स्वैप को एन्क्रिप्ट नहीं किया गया था (निश्चित रूप से)।

हाइबरनेशन के साथ एन्क्रिप्टेड स्वैप का उपयोग करना सभी वितरणों के साथ काम नहीं करता है। आपको एक निरंतर एन्क्रिप्शन कुंजी का उपयोग करने की आवश्यकता है (कुछ सेटअप बेतरतीब ढंग से प्रत्येक बूट पर स्वैप स्पेस एन्क्रिप्शन कुंजी उत्पन्न करते हैं) और फिर से शुरू करने से पहले एन्क्रिप्टेड वॉल्यूम को सक्रिय करने के लिए एक initrd / initramfs।


3

बहुत सारे आधुनिक कार्यक्रम फूले हुए ढाँचों पर बनाए गए हैं जो कि बहुत सारे कबाड़ में खींचते हैं जो आपको कार्यक्रम चलाने के लिए वास्तव में चाहिए ही नहीं। उन अप्रयुक्त पृष्ठों को स्वैप करने से कैश और प्रोग्राम के लिए रैम को मुक्त किया जाता है जो वास्तव में रैम का उपयोग कर सकते हैं।

मैं यहां दर्दनाक व्यक्तिगत अनुभव से बात करता हूं।

पिछले साल, मैंने अपनी एक वेब साइट को एक नए वेब सर्वर फ्रेमवर्क में बदल दिया, जो फ़ायरफ़ॉक्स के ऊपर बनाया गया था। फ़ायरफ़ॉक्स जैसे क्लाइंट-केंद्रित कार्यक्रम के शीर्ष पर सर्वर-साइड सिस्टम बनाने के लिए अजीब लग सकता है, लेकिन इसके कुछ बड़े फायदे थे। फ़ायरफ़ॉक्स बहुत शक्तिशाली है, कुछ वास्तव में प्रभावशाली आंतरिक सेवाएं प्रदान करता है, और यह सर्वर और क्लाइंट के बीच प्रतिबाधा बेमेल को कम करता है ताकि दोनों समान प्लेटफॉर्म चला सकें।

लेकिन एक नकारात्मक पहलू है: फ़ायरफ़ॉक्स बड़ा है। बहुत बड़ा। यह परियोजना का एक संस्करण 1.x था, इसलिए उन्होंने GUI समर्थन को हटाने जैसी चीज़ों के बारे में नहीं सोचा था। [*] मेरी साइट को इसमें से किसी की आवश्यकता नहीं थी, लेकिन क्योंकि VPS तकनीक मेरे होस्टिंग प्रदाता ने didn का उपयोग नहीं किया था ' टी स्वैप की अनुमति दें, कि जीयूआई कोड और फ़ायरफ़ॉक्स के अन्य सभी हिस्सों में मैंने वास्तविक रैम का उपयोग नहीं किया। मैं केवल स्मृति थकावट के कारण दुर्घटनाग्रस्त बिना साइट को चलाने के लिए न्यूनतम 512 एमबी रैम की आवश्यकता को समाप्त कर दिया । अगर मेरे VPS में कुछ स्वैप स्पेस होता, तो मैं शायद 256 एमबी की योजना के साथ मिल सकता था।

[*] फ्रेमवर्क से जीयूआई कोड हटाना भी वांछनीय नहीं हो सकता है, क्योंकि इस प्लेटफ़ॉर्म का एक लाभ उच्च-निष्ठा वेब स्क्रैपिंग था, क्योंकि सर्वर साइड फ्रेमवर्क किसी अन्य साइट से वेब पेज डाउनलोड कर सकता है, और आप उन्हें हेरफेर कर सकते हैं। बस के रूप में आप ग्राहक की ओर होगा। मैशअप सोचें। यदि आप वेब पेज को कुछ चित्रमय संदर्भ में "प्रस्तुत" नहीं कर सकते हैं तो उस तरह की बहुत सी चीजें टूट जाएंगी।

वैसे, यह वेब ढांचा अनिवार्य रूप से अब मर चुका है, इसलिए इसका कोई मतलब नहीं है। बस दिल को व्यापक सबक लेने के लिए सबसे अच्छा है: हाँ, स्वैप अभी भी उपयोगी है, भले ही आपके पास मुफ्त रैम हो।


3

से उबंटू स्वैप पूछे जाने वाले प्रश्न मार्सेल से जुड़ा हुआ है कि

एक आधार न्यूनतम के रूप में, यह अत्यधिक अनुशंसित है कि स्वैप स्थान भौतिक मेमोरी (रैम) की मात्रा के बराबर होना चाहिए। साथ ही, यह अनुशंसा की जाती है कि स्वैप स्पेस हार्ड डिस्क की मात्रा के आधार पर भौतिक मेमोरी (RAM) की दोगुनी हो

मुझे लगता है कि आपको अपने सिस्टम में अपना स्वैप स्पेस बढ़ाना चाहिए। स्वैप पहले से ही पृष्ठांकित डेटा को छोड़ने की अनुमति देकर रैम मेमोरी आवंटन को गति देता है।


6
मुझे अब भी यह अविश्वसनीय लगता है। मुझे अपने 4 जीबी के लिए 8 जीबी स्वैप की आवश्यकता क्यों होनी चाहिए, कभी भी हाइबरनेटिंग सिस्टम नहीं? क्या मुझे अपने 64GB गणना नोड के लिए वास्तव में 128GB स्वैप की आवश्यकता है? मैं आमतौर पर स्वैप के लिए 1GB से अधिक नहीं आवंटित करता हूं जब तक कि कोई अत्यधिक विशिष्ट कारण न हो।
डेविड मैकिन्टोश

2
यह तेज रैम में धीमी-एस-ऑल-हेक एचडीडी को कैशिंग के लिए अधिक स्थान छोड़ता है। (इसके अलावा, कुछ हाइबरनेशन स्कीम रैम की एक कॉपी को स्वेपस्पेस में सहेजते हैं)
अरफांगियन

6
@ डेविड, @ जैदर: द स्वैप = 2 * रैम फिगर एक पुराना चेस्टनट है जो मूल औचित्य बनने के बाद अच्छी तरह से बच जाता है - अब लोग अपने सिस्टम के लिए एक उपयुक्त आकृति के साथ आने के बजाय इस आंकड़े को सही ठहराने का एक तरीका खोजने की कोशिश करते हैं। । देखें कि हमें अपनी भौतिक स्मृति से दोगुना बड़ा स्वैप स्थान निर्धारित करने की आवश्यकता क्यों है?
गिल्स

1
@ गिल्स मैं अपनी स्थिति से चिपकता हूं क्योंकि मैंने इस विषय पर एक बार एक आधिकारिक पेपर देखा था जो विशेषज्ञों के एक समूह का विरोध करता है कि मुझे नहीं पता कि उनका ज्ञान कितना गहरा है।
जादेर डायस

4
यदि आप संदर्भ को याद रख सकते हैं, तो कृपया साझा करें।
गिल्स

2

मुझे लगता है कि "गिल्स" ने पहले ही इस तथ्य का उल्लेख किया है, जबकि आपके पास पर्याप्त से अधिक रैम हो सकता है, स्वैप कुछ "कमियों" के दौरान उपयोगी हो सकता है और साथ ही शटडाउन के बाद भी कुछ डेटा को लगातार बचा सकता है - या क्या मैं यह मानने में गलत हूं? चूंकि रिबूट के बाद रैम बाहर हो जाती है) मेरे पास अपने सिस्टम पर 12GB रैम उपलब्ध है, और मैंने भी पहले इस प्रश्न के बारे में विचार किया है। एक बिंदु पर, जब मैंने सभी स्वैप को अक्षम कर दिया था और केवल अपनी रैम पर भरोसा कर रहा था, तो मुझे सिस्टम शटडाउन के बाद कुछ सिस्टम त्रुटि, या क्रैश, आदि को डिबग करने की कोशिश में मुश्किल से मुश्किल अनुभव थे। तब से, मैंने स्वैप विभाजन को फिर से सक्षम किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.