प्राप्त करना मैं प्रत्येक सेकेंड को किसी विशेष प्रक्रिया के संसाधन उपयोग को खोजने के लिए/proc का उपयोग करना चाहता हूं। संसाधनों में cputime, डिस्क उपयोग और नेटवर्क उपयोग शामिल हैं। मैंने/proc/pid/stat देखा, लेकिन मुझे यकीन नहीं है कि मुझे आवश्यक विवरण मिल रहा है या नहीं। मैं सभी 3 संसाधन उपयोग चाहता हूं और मैं उन्हें हर सेकेंड की निगरानी करना चाहता हूं।लिनक्स प्रक्रिया संसाधन उपयोग (सीपीयू, डिस्क, नेटवर्क)
उत्तर
ऐसा नहीं लगता कि प्रति प्रक्रिया आधार पर डिस्क और नेटवर्क जानकारी प्राप्त करने का कोई तरीका है।
आपके पास सबसे अच्छा हो सकता है वैश्विक डिस्क और नेटवर्क, और प्रति प्रक्रिया CPU समय।
सभी man proc
आप कुछ आईओ जानकारी ट्रैक कर सकते हैं (उदाहरण के लिए 'iotop' उपयोगिता देखें), लेकिन यह सभी कर्नेल पर उपलब्ध नहीं है। – duskwuff
आईओपोट को कर्नेल के एक नए संस्करण की आवश्यकता है। मैंने नेटवर्क आंकड़ों के लिए आईओ और नेथोग के लिए आईपोटो देखा लेकिन मुझे इसके लिए कर्नेल के एक नए संस्करण को फिर से संकलित करने की आवश्यकता है। मैं इसे अंतिम उपाय के रूप में कर रहा था। – sethu
में दर्ज कुछ नए कर्नेल /proc/<pid_of_process>/io
फ़ाइल है। यह वह जगह है जहां आईओ आंकड़े हैं। यह मैन प्रो में दस्तावेज नहीं है, लेकिन आप संख्याओं को स्वयं समझने का प्रयास कर सकते हैं।
उम्मीद है कि यह मदद करता है। एलेक्स।
मैं केंद्र 5.6 का उपयोग कर रहा हूं और यह एक सुंदर पुराना कर्नेल है। मुझे आईओ आंकड़े नहीं मिल रहे हैं !! – sethu
getrusage()
सीपीयू, मेमोरी और डिस्क आदि
man 2 getrusage
मैं नेटवर्क के बारे में पता नहीं है पूरा करता है।
समस्याओं के दृष्टिकोण को यह उपकरण है कि इसी तरह की निगरानी और रिपोर्टिंग प्रदर्शन के स्रोत कोड को देखने के लिए है की तरह सबसे अच्छा तरीका है। हालांकि इस बात की कोई गारंटी नहीं है कि वे सीधे/proc का उपयोग कर रहे हैं, वे आपको समस्या से निपटने के लिए एक प्रभावी तरीके से ले जाएंगे। अपने मामले के लिए, शीर्ष (1), iotop (8) और nethogs (8) दिमाग में आते हैं।
आप किसी दिए गए प्रक्रिया के लिए एसएआर
-x रिपोर्ट आंकड़े का उपयोग कर सकते हैं।
अधिक जानकारी के लिए देखें: http://www.linuxcommand.org/man_pages/sar1.html
उदाहरण: खोज एवं बचाव -u -r बी 1 -X पीआईडी | grep -v औसत | grep -v Linux
इस तकनीक को सिस्टम के रीबूट की आवश्यकता है और रूट को सिस्टम-व्यापी आंकड़ों के संग्रह को सक्षम करना होगा। –
'-x' या' -X' विकल्प के साथ, मैं केवल 'minflt/s majflt/s% user% system nswap/s CPU' के लिए आंकड़े देख रहा हूं, डिस्क या नेटवर्क आंकड़े नहीं। उदाहरण के लिए, यदि मैं नेटवर्क आंकड़े देखने के लिए '-n DEV' भी निर्दिष्ट करता हूं, तो सर अलग-अलग शीर्षकों के साथ अलग-अलग पंक्तियां देता है। मैंने इसे आरएचईएल 5.7 पर परीक्षण किया। – haridsv
चेकआउट नज़र।
इसे एक स्क्रीन पर सीपीयू डिस्क और नेटवर्क मिला है। यह प्रति प्रक्रिया नहीं है लेकिन यह 3 अलग-अलग औजारों को देखने से बेहतर है।
मुझे सभी 3 संसाधनों (सीपीयू, डिस्क और नेटवर्क) के लिए जानकारी चाहिए – sethu
/proc/pid/stat मुझे CPUtime देता है लेकिन मैं पूरी मशीन के केवल कुल नेटवर्क और डिस्क आंकड़े एकत्र करने में सक्षम हूं और नहीं विशेष प्रक्रिया – sethu
ऐसा नहीं लगता कि प्रति प्रक्रिया आधार पर डिस्क और नेटवर्क आंकड़े एकत्र करने का कोई तरीका है - ज्यादातर कर्नेल के काम के रूप में डिस्क और नेटवर्क यातायात कैसे किया जाता है। उदाहरण के लिए, डिस्क पर पढ़ने का उत्तर लिखना कर्नेल बफर के माध्यम से होता है, और इसलिए डिस्क पर वास्तव में फ़्लश होने से पहले कई प्रक्रियाएं उसी बफर तक पहुंच सकती हैं। पढ़ने के लिए, एकाधिक प्रक्रियाएं एक ही फ़ाइल को पढ़ सकती हैं, केवल पहला व्यक्ति कर्नेल बफर में पॉइंटर प्राप्त करने वाले दूसरे के साथ वास्तविक डिस्क एक्सेस का कारण बनता है। – Soren