लगभग पूरा होने पर लिनक्स मेमोरी कैश को शुद्ध क्यों करता है?


14

यहाँ स्मृति ग्राफ एक VPS पर दिख रहा है जो 512MB RAM और nginx / php-fpm / mysqld सेवारत (ज्यादातर स्थिर) सामग्री के साथ CentOS पर चल रहा है, जो प्रतिदिन एक हज़ार आगंतुकों को सेवा प्रदान करता है।

साप्ताहिक मेमोरी ग्राफ

(वे दिन एक्स-एक्सिस पर हैं)

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

मैं इन पर्स के पीछे के तर्क को समझने की कोशिश कर रहा हूं। मैं अपेक्षा करूंगा कि फ़ाइल डेटा को अधिक समय तक कैश किया जाएगा और मेमोरी कैश के क्लियर होने पर सामान्य से अधिक मेमोरी का उपयोग करने वाले अन्य प्रोग्राम नहीं देखें।

क्या यह सामान्य व्यवहार है, या मैं कुछ याद कर रहा हूं?

अद्यतन: एक स्मृति उन्नयन ग्राफ को स्थिर करने के लिए लगता है। अभी भी छोटी बूंदों को देखते हुए, लेकिन उन्नयन के लिए पहले जितना महत्वपूर्ण नहीं था।

मेमोरी अपग्रेड के बाद


क्या यह OpenVZ / Virtuozzo कंटेनर या एक असली VM जैसे XEN या KVM है?
जोर्डनम

1
समझा नहीं सकता कि वे क्या हैं, लेकिन मेरे पास एक VPS है जो समान व्यवहार प्रदर्शित करता है। dl.dropbox.com/u/1578899/memory-week.png
EightBitTony

@jordanm यह एक Xen- आधारित आभासी मशीन है।
17

@EightBitTony साझा करने के लिए धन्यवाद। तुम्हारा थोड़ा अधिक 'प्राकृतिक' दिखता है, लेकिन मैं स्पष्ट रूप से मेमोरी कैश में बूंदों के समान (लेकिन शायद अधिक पूर्वानुमान योग्य) पैटर्न देखता हूं।
रेडबर्न

मुझे आश्चर्य हुआ कि अगर मुनिन 2 कुछ भिन्नताओं (आप पर चिकना ग्राफ) में परिणाम के लिए डेटा को अलग-अलग रूप से रेखांकन / संग्रहित कर रहा है, लेकिन यहां तक ​​कि मेरा दैनिक के बजाय एक चक्र के बीच में एक गिरावट दिखाता है। यह निश्चित रूप से अजीब है।
EightBitTony

जवाबों:


3

बहुत सारी चीजें हो सकती हैं। हो सकता है कि आपके द्वारा चलाए जा रहे कार्यक्रमों में से एक कभी-कभार और कुछ समय के लिए रैम का उपयोग करके हो। यदि वह वास्तव में एक्स-एक्सिस पर है, तो आपको बहुत अधिक रिज़ॉल्यूशन (उदाहरण के लिए प्रति मिनट या यहां तक ​​कि एक बार) पर नमूना लेना चाहिए कि क्या चल रहा है के बारे में अधिक जानकारी पाने के लिए कैश को गिरा दिया जाता है। psऔर topउस दौरान आउटपुट (लोड एवरेज सहित) भी उपयोगी होगा।


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

हेडर थोड़ा भ्रामक है, इसमें वह वास्तव में एक सप्ताह का डेटा दिखा रहा है, इसलिए वे एक्स-एस पर दिन हैं, सप्ताह नहीं। मतदान की आवृत्ति के लिए: मुनिन हर 5 मिनट में डेटा प्राप्त करता है, और मुझे नहीं लगता कि आवृत्ति को बदला जा सकता है। मैं केवल nginx, mysql, php-fpm और munin-node चला रहा हूं। क्या यह mysql कैश के साथ कुछ भी कर सकता है, शायद?
रेडबर्न

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

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

आपको इसमें भी रुचि हो सकती है: cognitivedissonance.ca/cogware/plog
Goldilocks

2

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

या तो मामले में, इसका कैश्ड आकार, संभवत: यदि आपके OS में कोई मेमोरी प्रेशर नहीं है, तो मूल फ़ाइल को हटाते ही कैश से मुक्त कर दिया जाएगा।


एक दिलचस्प विचार है, लेकिन सबसे सक्रिय लॉग फाइलें शायद ही कभी फ़ाइल आकार 25MB से अधिक होती हैं, इससे पहले कि वे घुमाए जाते हैं, और कैश / बफर उपयोग लगभग 200 एमबी से गिर जाता है।
20
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.