गतिविधि मॉनीटर में मेमोरी प्रेशर ग्राफ के लिए Y मान की गणना कैसे की जाती है?


41

vm.memory_pressureOS X 10.10.2 - Yosemite पर किस प्रकार का मान बाउंड / कैलकुलेट किया गया है?

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

प्रकाश लोड के तहत प्रणाली के साथ:

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 2683717
vm.memory_pressure: 0
kern.memorystatus_vm_pressure_level: 1

Kern.memorystatus_vm_pressure_level सही दिखता है, और ऐसा प्रतीत होता है कि यह ग्राफ को रंगने के लिए उपयोग करता है (1-NORMAL के लिए हरा, 2-WARN के लिए पीला, 4-CRITICAL के लिए लाल)। हालाँकि, vm.memory_pressure 0 है और ग्राफ में कुछ मात्रा में हरा है, और यह दांतेदार है, जिसका अर्थ है कि समय के साथ स्पष्ट रूप से बदल रहा है, न कि केवल 0 पर बैठा है।

भारी भार के तहत यह इस तरह दिखता है:

❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 32572
vm.memory_pressure: 1693
kern.memorystatus_vm_pressure_level: 4

या यह...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 5431
vm.memory_pressure: 277
kern.memorystatus_vm_pressure_level: 4

या यह...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 3220
vm.page_free_count: 805
vm.memory_pressure: 1
kern.memorystatus_vm_pressure_level: 4

यहाँ मैं भ्रमित हूँ। इनमें से कोई भी मूल्य संभवतः कुछ कारणों से ग्राफ का वाई मान नहीं हो सकता है।

सबसे पहले, vm.memory_pressure सामान्य लोड के तहत लगभग हर समय 0 पर बैठता है, और ग्राफ 0 पर नहीं बैठता है।

दूसरा, वे एक दूसरे के अनुरूप नहीं हैं। जब यह वास्तव में पृष्ठों (3220 चाहता था और केवल 1 का दबाव था) की तुलना में जब यह ५४३१ मुक्त था और कोई नहीं चाहता था (दबाव २) it) था, तो यह मेमोरी_प्रेस की कीमत को देखते हुए कम है। और किसी तरह यह भी कम दबाव की तुलना में जब यह 32572 मुक्त था (और 1693 दबाव था)।

इसलिए, जब यह उस प्लॉट को प्लॉट करता है, तो वाई मान के लिए क्या गणना है, और मुझे कमांड लाइन से गणना करने के लिए मुझे किस डेटा की आवश्यकता है? मैं एक कमांड लाइन टूल बनाने की कोशिश कर रहा हूं, जो उस ग्राफ पर वर्तमान लाइन कितनी ऊंची हो, इसका एक प्रतिशत भाग लेगा, इसलिए मुझे यह जानने की जरूरत है कि किसी भी समय मूल्य की गणना कैसे की जाए, साथ ही साथ इसकी सीमा क्या है संभव मान हैं।


7
बड़ा सवाल है। गतिविधि मॉनिटर 0% से 100% के पैमाने पर दबाव दिखाता है, लेकिन मुझे इसके बारे में कमांड लाइन टिप्पणियों पर कोई संदर्भ नहीं मिला है। मैं देखूंगा कि क्या मैं इस सप्ताह एक उत्तर के लिए पर्याप्त खुदाई कर सकता हूं। क्या हम मान सकते हैं कि आप केवल 10.10.x में रुचि रखते हैं?
bmike

3
धन्यवाद। और हाँ, मैं १०.१०.२ पर हूं, इसलिए मैं इसके लिए चिंतित हूं।
रागतुरी

5
आकर्षक डेटा बिंदु। यह अभी भी मेरे लिए स्पष्ट नहीं है कि एल्गोरिथ्म को कैसे डिज़ाइन किया गया है या कोडित किया गया है - या भले ही यह संस्करण से संस्करण तक एक ही शेष हो। इस पर कुछ अच्छी टिप्पणी और अधिक डेटा के लिए Apple.stackexchange.com/questions/107126/… देखें ।
bmike

जवाबों:


2

यह वर्तमान में केवल एक आंशिक उत्तर है। यह उत्तर तब तक पूरा नहीं होता जब तक यह वाक्य हटा नहीं दिया जाता।

इस सवाल के बारे में बात यह है कि ओपी द्वारा उल्लिखित आदेश का उपयोग करते समय टर्मिनल में इसकी रिपोर्ट के साथ इसकी तुलना करने पर मेमोरी प्रेशर ग्राफ काफी हद तक समझ में नहीं आता है:

sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level

हालाँकि, यहाँ समस्या यह है कि यह कमांड उन vm मानों को सीमित करता है जो इसे वापस रिपोर्ट कर रहे हैं। वास्तव में, वास्तव में कुल 105 मान हैं लेकिन यह कमांड केवल निम्नलिखित पांच मूल्यों की रिपोर्ट करता है:

vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:

नोट: संख्यात्मक मान आम तौर पर बृहदान्त्र (:) के बाद दिखाई देते हैं, हालांकि मैंने इन्हें शामिल नहीं किया है।

जाहिर है, 105 वीएम मूल्यों का भारी बहुमत वास्तविक गणना का हिस्सा नहीं है जो स्मृति दबाव को निर्धारित करता है, लेकिन यहां समस्या यह है कि ऊपर दिए गए पांच मान केवल मेमोरी दबाव की गणना करने के लिए उपयोग नहीं किए जाते हैं

उदाहरण के लिए, जबकि उपरोक्त आउटपुट विभिन्न मुफ्त मूल्यों में से कुछ प्रदान करता है , यह कोई भी निष्क्रिय मान प्रदान नहीं कर रहा है , आदि।

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

मुझे लगता है कि मेरे पास कुछ तकनीकी जानकारी हो सकती है जो इस पर अधिक प्रकाश डाल सकती है। मैं इस जवाब को सप्ताह के भीतर किसी भी तरह से अपडेट करूंगा।

[स्थिति अपडेट]

मुझे वह तकनीकी जानकारी नहीं मिल रही है जिसकी मुझे तलाश थी। हालाँकि, मुझे पूरा यकीन है कि अभी भी मेरे पास है - शायद कुछ पुराने सीडीआर / डीवीडीआर बैकअप पर। एक बार मिल जाने के बाद मैं इस उत्तर को अपडेट कर दूंगा, या कुछ निश्चित होने के बाद मुझे नहीं मिलेगा।

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