2015-01-12 8 views
10

मैं वर्तमान में /proc/sys/vm में पाया गया कर्नेल पैरामीटर के साथ प्रयोग कर रहा हूं, खासकर dirty_ratio और dirty_background_ratiovm.dirty_ratio और vm.dirty_background_ratio के बीच अंतर?

गिरी डॉक दोनों के लिए निम्नलिखित स्पष्टीकरण है:

dirty_background_ratio

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

और

dirty_ratio

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

मेरी Linux सिस्टम dirty_background_ratio पर 10 और dirty_ratio 20. है मैं समझता हूँ कि अंतर जो गंदा डेटा लिखते हैं, है। तो अगर मेरी प्रयुक्त स्मृति 10% तक पहुंच जाती है तो कर्नेल वापस लिखना शुरू कर देता है और 20% कभी नहीं पहुंचा जाना चाहिए।

मेरा प्रश्न अब है: क्या dirty_background_ratio और dirty_ratio का उच्च मूल्य कोई अर्थ है या क्या यह "कम मूल्य क्या है और यह किसके पास है" का मामला है?

उत्तर

15

क्या dirty_background_ratio और dirty_ratio का उच्च मूल्य कोई अर्थ है या क्या यह "कम मूल्य क्या है और यह कौन है" का मामला है?

अधिक सरल शब्दों में:

vm.dirty_background_ratio सिस्टम स्मृति का प्रतिशत जिनके फलस्वरूप जब गंदा तो सिस्टम डिस्क के लिए डेटा लेखन शुरू कर सकते हैं।

vm.dirty_ratio सिस्टम मेमोरी का प्रतिशत है जो गंदे होने पर, प्रक्रिया लिखने वाली प्रक्रिया डिस्क पर गंदे पृष्ठों को ब्लॉक और लिखती है।

यह ट्यूनेबल आपके सिस्टम पर चलने पर निर्भर करता है, यदि आप बड़े डेटाबेस को चलाते हैं तो इन मानों को कम करने के लिए I/O बोतल-गर्दन से बचने के लिए अनुशंसा करते हैं और जब सिस्टम लोड बढ़ता है।

पूर्व:

vm.dirty_background_ratio=10 
vm.dirty_ratio=15 

इस उदाहरण में जब गंदा पृष्ठों vm.dirty_background_ratio=10 से अधिक आई/ओ शुरू होता है, यानी वे प्लावित हो रही शुरू/डिस्क पर लिखी। जब गंदे पृष्ठों की कुल संख्या vm.dirty_ratio=15 से अधिक हो जाती है तो सभी लिखते हैं जब तक कि कुछ गंदे पृष्ठ डिस्क पर लिखे जाते हैं। आप ऊपरी सीमा के रूप में vm.dirty_ratio=15 के बारे में सोच सकते हैं।

+1

तो मुझे यह दोबारा देखने दो, बस यह देखने के लिए कि क्या मैं सही ढंग से समझ गया हूं। यदि dirty_background_ratio तक पहुंचा है, तो कर्नेल पृष्ठभूमि में लिखने शुरू कर देता है लेकिन एप्लिकेशन अभी भी बिना किसी अवरोध के पेज कैश पर लिख सकते हैं। यदि dirty_ratio तक पहुंचा है, तो एप्लिकेशन तब तक लिखते हैं जब तक dirty_ratio तक नहीं पहुंच जाता है। क्या वो सही है? – happyMOOyear

+1

हां, अगर यह मदद करता है तो मैंने एक केस केस भी अपडेट किया है। – askb

+0

मैंने आपका जवाब स्वीकार कर लिया क्योंकि यह मेरे प्रश्न का उत्तर देता है और मुझे बहुत मदद करता है। धन्यवाद! सिर्फ एक अतिरिक्त सवाल: क्या कोई ऐसी जगह है जहां इस व्यवहार को दस्तावेज किया गया है? – happyMOOyear

1

मैं इस सवाल से चिंतित हूं और इसलिए मैंने डेबियन 7.10 सिस्टम पर लिनक्स 3.2 चलाने पर थोड़ा सा प्रयोग किया है।0-4-amd64 sysbench 0.4.12, संशोधित करने का उपयोग कर:

  • /proc/sys/VM/dirty_ratio
  • /proc/sys/VM/dirty_background_ratio

ये सेटिंग्स का एक तरीका हैं डिस्क पर लिखने में देरी। वे तब तक उपयोगी होते हैं जब आपके पास ऐसे अनुप्रयोग होते हैं जो अक्सर या छोटे हिस्सों (जैसे वेब ब्राउज़र) में लिखते हैं। यदि सिस्टम पर केवल एक ही एप्लीकेशन है जो डिस्क द्वारा समर्थित अधिकतम से अधिक दर पर डेटा उत्पन्न कर रहा है तो कोई सेटिंग महत्वपूर्ण नहीं है। लेखन में जितना समय लगेगा उतना समय लगेगा।

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

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

संबंधित मुद्दे