लिनक्स: स्वैप विभाजन नहीं बनाते हैं?


9

मैं सोच रहा था कि मैंने सुना है कि स्वैप का उपयोग तब किया जाता है जब आप रैम या रैम करते हैं और बहुत अधिक स्वैप होता है, क्योंकि मेरे पास बहुत रैम (8 जीबी) है ...।

क्या होगा अगर मैं एक स्वैप विभाजन नहीं बनाऊं?

इसके अलावा, क्या मुझे हाइबरनेशन के लिए इसकी आवश्यकता है या यह जरूरी नहीं है?


आपको स्वैप बनाना होगा, मैंने एक बार स्वैप बनाने की कोशिश नहीं की, स्थापना को आगे नहीं
बढ़ा सका

जब आप विंडोज़ के अंदर स्थापित होते हैं तो क्या होता है? मैंने ऐसा किया और यह खिड़कियों की तुलना में मेरे रिग के लिए थोड़ा धीमा लग रहा था, लेकिन मैंने विभाजन नहीं बनाया
मिहाई ब्राटुल्स्क्यू

मैंने कभी विंडोज़ के अंदर लिनक्स स्थापित करने की कोशिश नहीं की, मैं हमेशा एक अलग विभाजन
बनाता हूं

जवाबों:


13

रैम के कुशल उपयोग के लिए आधुनिक ऑपरेटिंग सिस्टम को स्वैप स्पेस की आवश्यकता होती है। यहां तक ​​कि अगर आपके सिस्टम में भरपूर रैम है, तो रैम की बर्बादी का परिणाम छोटे बफर कैश में होता है, जिसका अर्थ है डिस्क I / O की वृद्धि हुई। चाहे आपके पास कितनी भी रैम क्यों न हो, फिर भी आप चाहते हैं कि सिस्टम इसे कुशलता से इस्तेमाल करे। इसका कुशलता से उपयोग करने का अर्थ है कि रैम से चीजें प्राप्त करना जो कभी भी एक्सेस किए जाने की संभावना नहीं है।

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

इसलिए आप स्वैप चाहते हैं कि आपको इसकी आवश्यकता है या नहीं।


8
"तो आप स्वैप चाहते हैं कि आपको इसकी आवश्यकता है या नहीं।" - लगता है जैसे आपने मामला बनाया है कि उसे स्वैप की ज़रूरत है या नहीं।
चूरा

2
मान लें कि मेरे पास बहुत रैम है और 2GB बर्बाद कर सकते हैं। मुझे स्वैप फ़ाइल की आवश्यकता क्यों होगी?
तारिक

1
उस स्थिति में, आपको स्वैप फ़ाइल की आवश्यकता नहीं है। लेकिन जैसा कि मैंने तर्क दिया, आप एक चाहते हैं। क्योंकि आप रैम को बर्बाद कर सकते हैं या नहीं, आप को अक्षम नहीं करना चाहिए जब आपको रैम न करना पड़े।
डेविड श्वार्ट्ज

मैं कोई स्वैप के साथ एक CLI सर्वर चला रहा हूँ और यह पूरी तरह से चलता है। एक टीमपेक 3 सर्वर, एपाचे 2, नोड.जेएस चलाने से मैं कभी भी 500M से अधिक RAM का उपयोग नहीं करता। इसलिए यह मुझे रैम का उपयोग करने के लिए परेशान नहीं करता है "अक्षम रूप से" अस्वीकरण: इस सर्वर का वेबसर्वर फ़ंक्शन विशेष रूप से विकास के लिए है, इसलिए लोड हमेशा वैसे भी कम होता है। और अगर मेरे पास विकास के दौरान एक स्मृति-रिसाव है, तो मैं OOM हत्यारे को मार डालूंगा, जैसे ही मैं राम से बाहर चला जाऊंगा, उस सारे बकवास को डिस्क पर धकेल दूंगा।
देशी कोडर

12

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

एक प्रमुख अंतर यह है कि जब मेमोरी चलती है तो सिस्टम कैसे व्यवहार करता है:

यदि कोई स्वैप विभाजन नहीं है, तो OOM हत्यारा तुरंत चलता है। यदि आपको मेमोरी लीक करने वाला कोई प्रोग्राम मिला है, तो वह वही है जो मारा जाता है। ऐसा होता है और आप सिस्टम को लगभग तुरंत ठीक कर लेते हैं।

अगर वहाँ है एक स्वैप विभाजन, कर्नेल स्वैप में स्मृति की सामग्री को धक्का। एरेंट प्रक्रिया मेमोरी को आवंटित करना जारी रख सकती है। यह तब तक होता रहता है जब तक कि स्वैप बाहर नहीं चला जाता है, जो एक बड़ा स्वैप विभाजन होने पर दस मिनट से एक घंटे तक हो सकता है। यह करते समय, आपका सिस्टम क्रॉल में धीमा हो जाता है। टर्मिनल खोलना और प्रक्रिया को मारना असंभव हो जाता है। ऐसा होने पर मैं आमतौर पर पावर कॉर्ड को अनप्लग कर देता हूं।

तो, के बाद से मैं अपने डेटा खोने के लिए जा रहा हूँ वैसे भी प्रणाली ooms, मैं करने के लिए कम से कम वसूली के एक (उच्च) मौका है पूर्व विकल्प पसंद करते हैं जब।


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

3
अंत में एक प्रतिक्रिया जो समझ में आती है और मेरे अपने अनुभव से मेल खाती है। मैं "आप एक स्वैप विभाजन होना चाहिए" के पीछे तर्क को समझ नहीं सकते। सिवाय अगर हम सिस्टम को हाइबरनेट करना चाहते हैं।
तारिक

5

हाइबरनेशन के लिए स्वैप आवश्यक है, अन्यथा आप इसके बिना बस ठीक से प्राप्त कर सकते हैं।


इस प्रकार स्वैप सिस्टम का आकार आपके सिस्टम में स्थापित मेमोरी के आकार से थोड़ा अधिक होना चाहिए।
एमडीपीसी

@ mdpc, जरूरी नहीं; यह सिर्फ इस्तेमाल किए गए रैम को पकड़ने के लिए काफी बड़ा होना चाहिए जिसे खारिज नहीं किया जा सकता है (यानी डिस्क पर फ़ाइल द्वारा समर्थित डेटा)।
Psusi

और आप कैसे अनुमान करेंगे कि निर्माण पर? क्या आप इतनी उचित योजना नहीं बना पाएंगे और बदतर स्थिति के लिए तैयार होंगे क्योंकि विभाजन के बाद आम तौर पर इसे सेट करने के बाद बदलने के लिए दर्द होता है?
22

3

यह सोचने के लिए एक आम गलत धारणा है कि स्वैप क्षेत्र होने से प्रदर्शन पर नकारात्मक प्रभाव पड़ता है। क्या गंभीर रूप से प्रभावित करता है प्रदर्शन पर्याप्त रैम नहीं है। जब तक आप विश्वसनीयता के बारे में परवाह नहीं करते हैं, तब तक प्रति से स्वैप क्षेत्र का प्रदर्शन पर कोई नकारात्मक प्रभाव नहीं पड़ता है। यह प्रदर्शन पर सकारात्मक प्रभाव डाल सकता है, जबकि आपको लगता है कि आपके पास पर्याप्त रैम है (और कोई रैम की कमी की सूचना नहीं है)।

विचार करने के लिए अनिवार्य रूप से तीन मामले हैं:

  • 1: आंतरिक कर्नेल की ज़रूरतों के लिए पर्याप्त रैम है, आपके सभी अनुप्रयोगों के लिए रैम पर पृष्ठों के उनके काम का सेट है और अभी भी अधिकांश फ़ाइल सिस्टम हॉट डेटा को संग्रहीत करने के लिए बफर कैश के लिए "मुफ्त" रैम है।

  • 2: ऊपर के रूप में ही के अलावा आप बफर कैश के लिए पूरी तरह से कुशल होने के लिए पर्याप्त मुक्त रैम नहीं है।

  • 3: आपके उपयोग किए गए पृष्ठों को भी स्टोर करने के लिए पर्याप्त रैम नहीं है।

मामले 1 में, जो एक उत्पादन मशीन के लिए आदर्श होना चाहिए, एक स्वैप क्षेत्र होने या कुछ भी नहीं बदलने पर (कम से कम लिनक्स पर आधारित ओएस और अन्य ओएस जो कि ओवर-कम मेमोरी)।

2 मामले में, एक स्वैप क्षेत्र होने से सिस्टम को बहुत ही उपयोग किए जाने वाले पृष्ठों को पृष्ठ से बाहर करने की अनुमति देकर समग्र प्रदर्शन में सुधार हो सकता है और फिर बफर कैश को बेहतर भूमिका निभाने की अनुमति देता है।

मामले में 3, एक स्वैप क्षेत्र होने से आवेदन पृष्ठांकन के कारण प्रदर्शन में गिरावट की कीमत पर चलता रहता है। दूसरी ओर, एक स्वैप क्षेत्र (या एक बड़ा एक पर्याप्त) लापता होने से अनुप्रयोगों को बेतरतीब ढंग से दुर्घटनाग्रस्त हो जाएगा। इसके अतिरिक्त, ओएस सेटिंग्स के आधार पर, ओओएम हत्यारा सबसे मेमोरी भूख अनुप्रयोगों को मारने का निर्णय भी ले सकता है यदि उनके (आपके) महत्वपूर्ण डेटा को बचाने का मौका दिए बिना भी एक मजबूत रैम की मांग हो।

यह बाद वाला मामला वह है जिसके साथ आपको चुनाव करना है। निश्चित रूप से कुछ उपयोग के मामले हैं, जहां प्रक्रियाओं को मार दिया जा रहा है, सिस्टम का पसंदीदा विकल्प है, जहां प्रतिक्रिया समय महत्वपूर्ण है और जहां लेनदेन / प्रक्रिया को खोना कोई बड़ी बात नहीं है।

हालांकि, मैं ज्यादातर स्थितियों में विश्वास करता हूं, बेहतर होगा कि उपयोगकर्ता / प्रशासक को रैम की कमी पर ध्यान देने और डेटा खोने के बिना कार्य करने के लिए मौका दें।


1

यदि आप एक स्वैप विभाजन का उपयोग नहीं करना चाहते हैं, तो आप एक स्वैप फ़ाइल का उपयोग कर सकते हैं: एक फ़ाइल सिस्टम छवि जो एक नियमित फ़ाइल पर संग्रहीत होती है और आपके स्वैप स्थान के रूप में उपयोग की जाती है।

निम्नलिखित लेख बताते हैं कि इसे कैसे करना है:


स्वैप फ़ाइल और स्वैप विभाजन में क्या अंतर है? और अगर मेरे पास कोई नहीं है तो क्या होगा?
मिहाई ब्राट्युलस्कु

पहुंच की गति ....
mdpc

2
यदि हां का इस्तेमाल किया जाए तो यह काफी महत्वपूर्ण है। यदि आप एक विभाजन का उपयोग करते हैं, तो यह सरल संबोधन है, यदि आप किसी फ़ाइल का उपयोग करते हैं, तो आपको स्वैप फ़ाइल का उपयोग करने के लिए सभी फाइल सिस्टम ओवरहेड को करना होगा और आप यह गारंटी नहीं दे सकते कि डिस्क पर सेगमेंट कहां स्थित होंगे।
mdpc

2
@mdpc फाइल सिस्टम ओवरहेड कर्नेल 2.6 से शुरू होने के लिए नगण्य है। मेटाडेटा, कैश और फ़ाइल सिस्टम कोड को बायपास किया गया है। कच्चे डिस्क ब्लॉक को सीधे एक्सेस किया जाता है।
jlliagre

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

0

यह थोड़ा खतरनाक है लेकिन आप बिना स्वैप स्पेस के दौड़ सकते हैं। लेकिन अगर आप अंत में मेमोरी की मात्रा को पार कर लेते हैं तो आपके पास आपका सिस्टम बिना सूचना के लगभग तुरंत दुर्घटनाग्रस्त हो जाएगा।

क्या स्वैप आपको मूल रूप से आपकी स्मृति के लिए एक विस्तारित लेकिन अभी तक धीमी गति देता है। यदि आप अधिक हो जाते हैं, तो आप स्वैप करना शुरू कर देंगे, यह वास्तव में आपके सिस्टम से बाहर ले जाएगा .... फिर भी जब तक आप अपने सिस्टम को नहीं बचा सकते हैं तब तक गलत प्रक्रियाओं को मारकर।

कुछ कार्यक्रम स्वैप स्थान को आवंटित करने (लेकिन उपयोग नहीं करने) पर जोर देते हैं, इनमें से कुछ डेटाबेस प्रोग्राम हैं यदि मुझे याद है। फिर से, स्वैप स्थान न होने से आप उन कार्यक्रमों को सीमित कर सकते हैं जो चलाए जा सकते हैं।

अंत में, SWAP इस तथ्य में सस्ता है कि आपको क्षेत्र का बैकअप लेने की आवश्यकता नहीं है। (मैं उम्मीद कर रहा हूं कि आप इन बेहतरीन बकाया sysadmins में से एक हैं जो अपने सिस्टम का बैकअप लेते हैं)।

इसलिए इसे बनाएं।

मेरे अंगूठे का नियम 2 * मेमोरी-आकार हुआ करता था ..... लेकिन अब मानता है कि मैं कई मामलों में 1 * मेमोरी-आकार के साथ ठीक हूं लेकिन आम तौर पर 1.5 * (मेमोरी-आकार) का उपयोग करता हूं। आपको इस राशि का एक बड़ा हिस्सा बनाने की ज़रूरत नहीं है, लेकिन मैं करूँगा ... खासकर अगर कोई उत्पादन प्रकार का काम आप कर रहे हैं।

अरे हाँ, और हाइबरनेशन के लिए, मेमोरी की कुल छवि को पकड़ने के लिए स्वैप आवश्यक है। और इस प्रकार यदि आप h8ibernation पर विचार कर रहे हैं, तो AT LEAST (1 * मेमोरी-साइज़) + 100MB होना चाहिए। 100 MB इस प्रक्रिया में आवश्यक ओवरहेड के लिए है।


इसलिए ... कुछ कार्यक्रमों के लिए आपको उन्हें चलाने के लिए एक स्वैप क्षेत्र की आवश्यकता है? मैं 8GB (हालांकि असंभव नहीं) के साथ RAM से बाहर निकलने के बारे में चिंतित नहीं हूं
Mihai Bratulescu

2x मेमोरी आकार नियम पुराना और पुराना है। लेकिन कुछ अदला-बदली करना कोई बुरा विचार नहीं है। यह बहुत अधिक डिस्क स्थान का उपयोग नहीं करता है, इसलिए आप उपयोग किए गए स्थान को याद नहीं करेंगे; यह आमतौर पर उपयोग नहीं किया जाता है यदि आपके पास पर्याप्त रैम है, और यह आपको अपने स्वैप के लिए कोर डंप करने की अनुमति देता है।
हेन्नेस

@ हेन्स - मेरा नोट पढ़ें ... "हुआ करता था"
mdpc

0

जैसे ही मेमोरी प्रेशर होता है, लिनक्स स्वैप की काफी सख्त आवश्यकता होती है। लक्षण यह है कि यदि लगभग सभी रैम का उपयोग सक्रिय प्रक्रियाओं द्वारा किया जाता है, तो सिस्टम सख्त हो जाता है और हार्डडिस्क जंगली चल रहा है।

क्यों?

बैकिंग फ़ाइल के बिना (आमतौर पर डायनामिक मेमोरी आवंटन से) पेजों को रैम से निकाला नहीं जा सकता है जब कोई स्वैप नहीं होता है। कर्नेल बैकिंग फ़ाइल वाले पृष्ठों का समर्थन करता है, भले ही वे वास्तव में जल्द ही फिर से आवश्यक हों, i। इ। स्वैप के बिना भी trashing!

इस सूक्ष्म समस्या के बारे में अधिक जानकारी के लिए इस ब्लॉग पोस्ट को देखें।

निष्कर्ष : हमेशा एक स्वैप है।

और आकार के लिए एक मोटे दिशानिर्देश के रूप में 4 और 8 जीबी के बीच कुछ का उपयोग करें, यहां तक ​​कि बहुत सी रैम वाले सिस्टम के लिए, यह मानते हुए कि आप हाइबरनेट नहीं करते हैं। अधिक जानकारी के लिए स्वैप स्पेस के बारे में Red Hat के दस्तावेज़ देखें ।

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