अगर सीपीयू, मेमोरी या डिस्क-बाउंड एक प्रक्रिया है तो मुझे कैसे पता चलेगा?


42

मैं यह कैसे पता लगा सकता हूं कि सीपीयू, मेमोरी या डिस्क में कोई प्रक्रिया है?


यदि आप एक सूक्ति GUI का उपयोग कर रहे हैं, तो आप अपने पैनल में सिस्टम मॉनिटर एप्लेट जोड़ सकते हैं। सेटिंग्स में आप सफेद के रूप में दिखाने के लिए खोए गए IO-Wait में साइकिल सेट कर सकते हैं, और दिखाने के लिए मेमोरी, सीपीयू और डिस्क रीड / राइट ग्राफ़्स सेट कर सकते हैं। मैं आमतौर पर उपयोगकर्ता / ओएस मेमोरी और डिस्क रीड / राइट को अलग करना आसान बनाने के लिए डिफ़ॉल्ट ग्राफ रंग बदलता हूं। यह एक वास्तविक समाधान नहीं है, लेकिन उत्तर में उल्लिखित सभी साधनों के साथ होना आसान है।
जेरेमी

1
@ luis-alvarado मैं असहमत हूँ कि यह प्रश्न उपयोगी नहीं है, हालांकि मैं तर्क देता हूँ कि यह StackOverflow या इस तरह से बेहतर हो सकता है। मैं यहां एक समाधान की तलाश में आया था।
कंकाल

पूछे गए प्रश्न के साथ समस्या यह है कि यह निष्पादन के वातावरण को ध्यान में नहीं रखता है। नौकरी / प्रक्रिया के मेजबान घटक की अड़चन की खोज करने के लिए कौन सी विधि सबसे प्रभावी है, नौकरी के रनटाइम, निष्पादन पर्यावरण, मेजबान ओएस, हार्डवेयर आदि से पूरी तरह से जुड़ा हुआ है और प्रत्येक घटक के लिए यह निरीक्षण करने के लिए क्या टूल उपलब्ध है। कुछ रनटाइम (एर्लांग रनटाइम या आईबीएम के जेवीएम, उदाहरण के लिए) में पूरे पर्यावरण की तुलना में इसके लिए गहराई से उपकरण हैं, दूसरों को पूरी तरह से टूलिंग की कमी है और जो कुछ भी htop / iotop / etc के आधार पर आपको शिक्षित अनुमान बनाने में छोड़ देता है। आपको दिखा सकता है।
zxq9

जवाबों:


19

इसके लिए कुछ वूडू की जरूरत होती है। निर्भर करता है। उदाहरण:

  • यदि पर्याप्त मेमोरी और डिस्क बहुत व्यस्त नहीं लगती हैं, तो यह सीपीयू-बाउंड हो सकता है । CPU उपयोग को देखें और यदि इसकी सीमा 100% है तो यह CPU बाध्य है। यदि यह कार्यान्वयन में एक कृत्रिम अड़चन नहीं है। उदाहरण के लिए एक दोहरे कोर सीपीयू पर एक थ्रेडेड प्रक्रिया 50% सीपीयू उपयोग से ऊपर नहीं जाएगी।

  • यदि CPU और मेमोरी उपलब्ध हैं, लेकिन डिस्क बहुत व्यस्त हैं, या IO विलंबता उच्च लगती है, तो इसकी संभावना है कि इसका IO बाध्य है। देखें कि क्या अधिक डिस्क (RAID?) जोड़ने से मदद मिलती है।

  • इनमे से कोई भी नहीं? उपलब्ध स्मृति की जाँच करें।

  • पर्याप्त स्मृति? इस प्रक्रिया में एक कृत्रिम अड़चन हो सकती है यानी शायद कोई नींद निकालना भूल गया हो (1)? नाह इसकी आसान नहीं है। ;)

एक कारण है कि हमारे पास प्रदर्शन संवेदनशील उत्पादों से निपटने वाली अधिकांश कंपनियों में प्रदर्शन इंजीनियरों के लिए एक पूरी लैब है!

संपूर्ण समस्याओं पर डीबग करने के लिए सर, vmstat, iostat, oprofile, lockstat, dtrace, उत्पाद विशिष्ट पूर्ण निगरानी उपकरण आदि जैसे उपकरणों का उपयोग करें।


2
क्या कोई ऐसा उपकरण है जो इन सभी को एक साथ जोड़ता है?
ssanj

आमतौर पर नहीं, लेकिन अगर dtrace आपके सिस्टम पर उपलब्ध है (Solaris / FreeBSD / Mac OS X?) तो आप इसका उपयोग करके अभी तक प्राप्त कर सकते हैं।
सुधांशु

मुझे बस याद है कि लिनक्स पर सिस्टमटैप (dtrace के समान) है, सिवाय इसके कि मुझे उपकरण की परिपक्वता पर यकीन नहीं है।
सुधांशु

vmstat उपयोगी है।
जेम्स

12

जाँच करें iotop, उपयोगी हो सकता है


iotop को redhat में डिफ़ॉल्ट रूप से स्थापित नहीं किया गया था
मोना जलाल

9

एक उपकरण जो वास्तविक समय के लिए उपयोगी हो सकता है, कई प्रक्रिया आँकड़े (मेमोरी, सीपीयू-उपयोग, I / O, आदि) की जाँच कर रहा है । यह सुधांशु द्वारा नामित अधिक विशिष्ट उपकरणों को प्रतिस्थापित नहीं करता है, लेकिन एक अच्छी शुरुआत हो सकती है।


4

के रूप में अच्छी तरह से उल्लेख किया अन्य उपकरण, चलाने के लिए ps l PID, प्रासंगिक प्रक्रिया आईडी डालने, या शीर्ष या htop में स्टेट और WCHAN कॉलम को देखो।

यदि यह डी (डिस्क के लिए) स्थिति में है, तो यह फाइल आईओ कर रहा है। यह हो सकता है क्योंकि यह या तो बहुत सारी फ़ाइलों को पढ़ रहा है, या क्योंकि यह बहुत अधिक मेमोरी और स्वैपिंग का उपयोग कर रहा है। WCHAN कॉलम आपको बताएगा कि यह किस कर्नेल फ़ंक्शन के अंदर है; उनके लिए गुगली करना या यहाँ पूछना आपको कुछ संकेत दे सकता है कि उनका क्या मतलब है।

यदि यह आर (रन) स्थिति में है, तो यह उपयोगकर्ता के स्थान पर सीपीयू का उपयोग कर रहा है, दूसरे शब्दों में यह उस समय सीपीयू है।

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

यह भी देखें कि एक प्रक्रिया का "प्रतीक्षा चैनल" क्या है?


2

भागो topऔर सीपीयू उपयोग लाइन को देखो। एक उच्च उपयोगकर्ता% इंगित करता है कि यह सीपीयू बाध्य है। एक उच्च प्रतीक्षा% इंगित करता है कि यह IO बाध्य है।

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