मैं लिनक्स के तहत डिबगिंग करने वाले एप्लिकेशन में प्रदर्शन बाधाओं के कारण को ट्रैक करने का प्रयास कर रहा हूं। शामिल विभिन्न प्रक्रियाओं में आई/ओ अनुरोधों पर अपना अधिकांश समय अवरुद्ध करने लगता है, और मैं सोच रहा था कि क्या कोई भी लिनक्स चाल जानता है जो आपको क्यों क्यों एक विशेष प्रक्रिया अवरुद्ध/किस संसाधन का इंतजार कर रहा है? उदाहरण के लिए /proc
में कुछ भी उपयोगी है?मैं कैसे बता सकता हूं कि लिनक्स प्रक्रिया किसके लिए प्रतीक्षा कर रही है?
17
A
उत्तर
13
जो भी प्रक्रिया है, आप राज्य की जांच के लिए top
का उपयोग करें। फिर आप इसे truss or strace के माध्यम से चला सकते हैं। यह विस्तार से होना चाहिए कि क्या हो रहा है। यदि यह संभव नहीं है, तो gdb पर हुक करें। iostat जैसे टूल सामान्य रूप से आपको दिखाए जा रहे हैं कि क्या हो रहा है (उदा। यदि डिस्क बाधा है)।
7
आप यह देखने के लिए strace
कमांड का उपयोग कर सकते हैं कि आपकी प्रक्रिया क्या है। आपको अपनी प्रक्रिया पर lsof
चलाने के लिए भी उपयोगी लग सकता है यह देखने के लिए कि कौन सी फाइलें और सॉकेट इसका उपयोग कर रहे हैं।
6
स्ट्रेस आपका मित्र है, क्योंकि आप प्रत्येक सिस्टम कॉल में समय बिता सकते हैं, साथ ही आप फ़ाइल डिस्क्रिप्टर और सिस्टम कॉल का चयन कर सकते हैं जिसमें आप रुचि रखते हैं। लेकिन आप कर्नेल से भी समर्थन प्राप्त कर सकते हैं: एक नज़र डालें latencytop