प्रति थ्रेड सीपीयू आँकड़े प्राप्त करना


17

मुझे सीपीयू के वर्तमान उपयोग में दिलचस्पी है - ठीक से सीपीयू% और प्रतीक्षा% - एक विशिष्ट अनुप्रयोग में प्रत्येक थ्रेड के लिए। क्या यह जानकारी कहीं से प्राप्त करना संभव है?

मुझे पता है कि topप्रति वास्तविक जानकारी (pid वाले वाले) विभाजित कर सकते हैं, लेकिन यह उनमें से प्रत्येक के लिए सिस्टम / उपयोगकर्ता / प्रतीक्षा सीपीयू उपयोग विभाजन नहीं दिखाता है। मैं उस जानकारी को लॉग करने के लिए कुछ तरीका भी चाहूंगा। क्या आपको कोई ऐप (या एपिस) पता है जो ऐसा कर सकता है?

जवाबों:


4

मैं SystemTap में देखूंगा । यह उपकरण निश्चित रूप से आपको वही देगा जो आप चाहते हैं। प्रोफाइलिंग थ्रेड्स का यह उदाहरण है; पता नहीं कि यह आपके पास है, लेकिन आप इसे संशोधित कर सकते हैं ताकि यह हो।



12

प्रति थापू उपयोग के प्रतिशत आप psकमांड के साथ प्राप्त कर सकते हैं :

 ps -emo %cpu,pid,user,args

जिस तरह से इसकी गणना की जाती है वह इस प्रकार है ps manpage:

वर्तमान में, यह सीपीयू का समय है जिसका उपयोग उस समय से विभाजित किया जाता है जब प्रक्रिया चल रही है (प्रतिशत / समय अनुपात), प्रतिशत के रूप में व्यक्त किया गया।


मैं वास्तव में cpu समय और io- प्रतीक्षा समय दोनों में रुचि रखता हूं। पीएस दुर्भाग्य से दूसरे को नहीं संभाल सकता।
विराटपुर

स्वयं पर ध्यान दें: -e by -C java और pid by spid for thread Ids in java app
kellogs

2
स्वयं के लिए अधिक ध्यान दें: ps -To pcpu,tid -C java | sort -r -k1 | moreएक जावा ऐप में हॉग थ्रेड्स के लिए। ps --sort=pcpuकुछ भी हासिल नहीं करता; बेहतर छँटाई भाग के लिए खोल पर भरोसा करते हैं।
kellogs

बहुत उपयोगी @kloglogs, धन्यवाद। मैं जोड़ना -nया -gछाँटना चाहूँगा , ताकि "10" ऊपर "2" से दिखे, उदाहरण के लिए।
EM0

0

शायद htop पर एक नज़र है, आप इसके साथ काफी कॉन्फ़िगर कर सकते हैं।


दुर्भाग्य से यह उपयोगकर्ता / प्रणाली / विशिष्ट थ्रेड के लिए प्रतीक्षा समय पर सीपीयू को विभाजित नहीं कर सकता है - केवल पूरी मशीन के लिए
विराटपुर

हां, लेकिन मैं ऐसा कैसे करूंगा?
rmobis

0

क्या आपने सर की कोशिश की? यह पीआईडी ​​स्तर पर भी बहुत सारी जानकारी प्राप्त कर सकता है।



0

मैं एक एम्बेडेड सिस्टम पर इस पर ठोकर खाई है, जहां हमारे पास इस सामान को देखने के लिए फैंसी उपकरण नहीं हैं।

इसके लिए, मैंने cpuacct cgroupप्रत्येक थ्रेड को अपने स्वयं के फ़ोल्डर में उपयोग और रखा है। इस तरह मैं उनके उपयोग को मापने में सक्षम था।

इस तरह दिख रहा था पदानुक्रम:

my-app.service
|-tid1
|-tid2
|-tid3

फिर मैंने उसे बदल दिया

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