2011-07-08 15 views
16

प्राप्त करना मैं प्रत्येक सेकेंड को किसी विशेष प्रक्रिया के संसाधन उपयोग को खोजने के लिए/proc का उपयोग करना चाहता हूं। संसाधनों में cputime, डिस्क उपयोग और नेटवर्क उपयोग शामिल हैं। मैंने/proc/pid/stat देखा, लेकिन मुझे यकीन नहीं है कि मुझे आवश्यक विवरण मिल रहा है या नहीं। मैं सभी 3 संसाधन उपयोग चाहता हूं और मैं उन्हें हर सेकेंड की निगरानी करना चाहता हूं।लिनक्स प्रक्रिया संसाधन उपयोग (सीपीयू, डिस्क, नेटवर्क)

+1

मुझे सभी 3 संसाधनों (सीपीयू, डिस्क और नेटवर्क) के लिए जानकारी चाहिए – sethu

+0

/proc/pid/stat मुझे CPUtime देता है लेकिन मैं पूरी मशीन के केवल कुल नेटवर्क और डिस्क आंकड़े एकत्र करने में सक्षम हूं और नहीं विशेष प्रक्रिया – sethu

+0

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

उत्तर

0

ऐसा नहीं लगता कि प्रति प्रक्रिया आधार पर डिस्क और नेटवर्क जानकारी प्राप्त करने का कोई तरीका है।

आपके पास सबसे अच्छा हो सकता है वैश्विक डिस्क और नेटवर्क, और प्रति प्रक्रिया CPU समय।

सभी man proc

+0

आप कुछ आईओ जानकारी ट्रैक कर सकते हैं (उदाहरण के लिए 'iotop' उपयोगिता देखें), लेकिन यह सभी कर्नेल पर उपलब्ध नहीं है। – duskwuff

+0

आईओपोट को कर्नेल के एक नए संस्करण की आवश्यकता है। मैंने नेटवर्क आंकड़ों के लिए आईओ और नेथोग के लिए आईपोटो देखा लेकिन मुझे इसके लिए कर्नेल के एक नए संस्करण को फिर से संकलित करने की आवश्यकता है। मैं इसे अंतिम उपाय के रूप में कर रहा था। – sethu

4

में दर्ज कुछ नए कर्नेल /proc/<pid_of_process>/io फ़ाइल है। यह वह जगह है जहां आईओ आंकड़े हैं। यह मैन प्रो में दस्तावेज नहीं है, लेकिन आप संख्याओं को स्वयं समझने का प्रयास कर सकते हैं।

उम्मीद है कि यह मदद करता है। एलेक्स।

+0

मैं केंद्र 5.6 का उपयोग कर रहा हूं और यह एक सुंदर पुराना कर्नेल है। मुझे आईओ आंकड़े नहीं मिल रहे हैं !! – sethu

1

getrusage() सीपीयू, मेमोरी और डिस्क आदि

man 2 getrusage

मैं नेटवर्क के बारे में पता नहीं है पूरा करता है।

0

समस्याओं के दृष्टिकोण को यह उपकरण है कि इसी तरह की निगरानी और रिपोर्टिंग प्रदर्शन के स्रोत कोड को देखने के लिए है की तरह सबसे अच्छा तरीका है। हालांकि इस बात की कोई गारंटी नहीं है कि वे सीधे/proc का उपयोग कर रहे हैं, वे आपको समस्या से निपटने के लिए एक प्रभावी तरीके से ले जाएंगे। अपने मामले के लिए, शीर्ष (1), iotop (8) और nethogs (8) दिमाग में आते हैं।

0

आप किसी दिए गए प्रक्रिया के लिए एसएआर

-x रिपोर्ट आंकड़े का उपयोग कर सकते हैं।

अधिक जानकारी के लिए देखें: http://www.linuxcommand.org/man_pages/sar1.html

उदाहरण: खोज एवं बचाव -u -r बी 1 -X पीआईडी ​​| grep -v औसत | grep -v Linux

+0

इस तकनीक को सिस्टम के रीबूट की आवश्यकता है और रूट को सिस्टम-व्यापी आंकड़ों के संग्रह को सक्षम करना होगा। –

+0

'-x' या' -X' विकल्प के साथ, मैं केवल 'minflt/s majflt/s% user% system nswap/s CPU' के लिए आंकड़े देख रहा हूं, डिस्क या नेटवर्क आंकड़े नहीं। उदाहरण के लिए, यदि मैं नेटवर्क आंकड़े देखने के लिए '-n DEV' भी निर्दिष्ट करता हूं, तो सर अलग-अलग शीर्षकों के साथ अलग-अलग पंक्तियां देता है। मैंने इसे आरएचईएल 5.7 पर परीक्षण किया। – haridsv

0

चेकआउट नज़र।

इसे एक स्क्रीन पर सीपीयू डिस्क और नेटवर्क मिला है। यह प्रति प्रक्रिया नहीं है लेकिन यह 3 अलग-अलग औजारों को देखने से बेहतर है।

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