Vm.overcommit_ratio की शेष मेमोरी कहाँ जाती है?


10

अगर मैं सेट करके अक्षम स्मृति ओवरकमिट vm.overcommit_memoryको 2डिफ़ॉल्ट रूप से प्रणाली स्वैप भौतिक स्मृति की + 50% के आयाम को स्मृति को आवंटित करने के लिए, की अनुमति देगा के रूप में समझाया यहाँ

मैं vm.overcommit_ratioपैरामीटर को संशोधित करके अनुपात को बदल सकता हूं । मान लीजिए कि मैंने इसे 80% पर सेट किया है, इसलिए 80% भौतिक मेमोरी का उपयोग किया जा सकता है।

मेरा प्रश्न हैं:

  • शेष 20% के साथ सिस्टम क्या करेगा?
  • यह पैरामीटर पहले स्थान पर क्यों आवश्यक है?
  • मुझे हमेशा इसे 100% पर सेट क्यों नहीं करना चाहिए?

जवाबों:


6

शेष 20% के साथ सिस्टम क्या करेगा?

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

यह पैरामीटर पहले स्थान पर क्यों आवश्यक है?

overcommit_ratioपैरामीटर जब वे वास्तव में स्मृति (या कम से कम करने के लिए कोशिश) का उपयोग क्या यथोचित भविष्य, यानी उनके लिए उपलब्ध हो जाएगा और अधिक से अधिक आभासी स्मृति आरक्षण अनुप्रयोगों को रोकने के लिए बनाया गया एक कार्यान्वयन विकल्प है।

overcommit_ratioलिनक्स कर्नेल डेवलपर्स द्वारा 50% पर सेट करना एक उचित डिफ़ॉल्ट मान माना गया है। यह मानता है कि कर्नेल को कभी भी 50% से अधिक भौतिक रैम का उपयोग करने की आवश्यकता नहीं होगी। आपका माइलेज भिन्न हो सकता है, यही कारण है कि यह एक ट्यून करने योग्य है।

मुझे हमेशा इसे 100% पर सेट क्यों नहीं करना चाहिए?

इसे 100% (या किसी भी "उच्च" मान) पर सेट करना मज़बूती से ओवरकॉमिटेशन को अक्षम नहीं करता है क्योंकि आप यह नहीं मान सकते हैं कि कर्नेल 0% (या बहुत कम) रैम का उपयोग करेगा।

यह एप्लिकेशन को क्रैश करने से नहीं रोकेगा क्योंकि कर्नेल वैसे भी सभी भौतिक मेमोरी की मांग कर सकता है जो इसकी मांग करता है।


यदि कर्नेल को सभी मेमोरी की आवश्यकता हो सकती है, तो वैसे भी, इस पैरामीटर को उजागर करने की क्या बात है (या इसे भी बना रहे हैं)?
डैन टुमकिन

क्या कोई आधिकारिक दस्तावेज है जहां उन मापदंडों को विवरण में समझाया गया है? Kernel.org/doc/Documentation/vm/overcommit-accounting के अलावा - कर्नेल मेमोरी का कोई भी संदर्भ वहां गायब है।
बजे डेन टुमेकिन

1
मुझे अभी तक पर्याप्त विवरण के साथ यह बताते हुए दस्तावेज़ नहीं मिला है कि "कुल पता स्थान प्रतिबद्ध" का संदर्भ देते समय क्या ध्यान रखा गया है। यह तथ्य कि आप दस्तावेज़ को राज्यों को एक लिंक प्रदान करते हैं "ज्यादातर स्थितियों में इसका मतलब है कि एक प्रक्रिया को मार नहीं दिया जाएगा ..." हालांकि यह पुष्टि करने के लिए पर्याप्त है कि कुछ स्मृति का उपयोग कहीं और किया जा सकता है, और इस स्मृति के लिए स्पष्ट उपभोक्ता कर्नेल है।
जुल्गेरे ११'१६

2

100% के अनुपात में सेट करना फ़ाइल-समर्थित पृष्ठों, या कर्नेल कोड, नेटवर्क बफ़र, आदि जैसे इन-कर्नेल आवंटन के लिए कोई स्थान आरक्षित नहीं करेगा।

इन-कर्नेल संरचनाएं बिना परवाह किए आवंटित की जाएंगी, जिससे ओवरकामिट हो जाएगा। वे आम तौर पर व्यक्तिगत रूप से सीमित होते हैं (जैसे कि नेटवर्क बफ़र्स के लिए एक सेटिंग है)। मुझे नहीं लगता कि 50% की कुल सीमा है, हालांकि एक समग्र सीमा कुछ है जो कंटेनरों की मेजबानी के उद्देश्य से काम की है।

फ़ाइल-समर्थित पृष्ठ वे हैं जहां आप आमतौर पर उपयोगकर्ता कोड चलाते हैं, इसलिए आपको इसके लिए स्थान भी चाहिए।

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