लिनक्स पर, कैसे बताएं कि मशीन के कितने कोर सक्रिय हैं?


14

लिनक्स पर, कैसे बताएं कि मशीन के कितने कोर सक्रिय हैं? मुझे लगता है कि इसके लिए एक परीक्षण Android के लिए भी काम करेगा। मुझे यह जानना होगा कि क्या एक से अधिक कोर कभी सक्रिय हैं। कई थ्रेड्स बनाने की प्रक्रिया द्वारा यह परीक्षण करने के लिए सोच रहा था। क्या थ्रेड के लिए यह संभव है कि यह किस प्रोसेसर पर है? इस तरह से एक बता सकता है कि क्या कभी भारी भार के तहत एकाधिक कोर का उपयोग किया जाएगा। यकीन नहीं होता कि मैं सही रास्ते पर हूं।


1
"सक्रिय" से, मेरा मतलब है कि वर्तमान में कितने कोर उपयोग में हैं? या क्या आपका मतलब है कि सिस्टम में कितने कोर हैं?
मिकेल

हां, मैं बताना चाहूंगा कि वर्तमान में कितने उपयोग में हैं

जवाबों:


19

आप topप्रत्येक कोर के उपयोग को सूचीबद्ध करने के लिए उपयोग कर सकते हैं । प्रत्येक कोर के लिए सीपीयू पंक्ति को एक अलग पंक्ति में विभाजित करने के लिए आवश्यक होने पर 1 दबाएं।

आप एक कॉलम भी जोड़ सकते हैं जो प्रत्येक प्रक्रिया के लिए अंतिम उपयोग किए गए कोर को दिखाता है। फ़ील्ड सूची लाने के लिए f दबाएं, फिर "P" कॉलम को सक्रिय करने के लिए j करें। फिर लाइव दृश्य पर लौटने के लिए स्पेस दबाएं।


तो शायद मुझे एक प्रोग्राम लिखना और चलाना चाहिए जो कई थ्रेड्स को जन्म देता है और फिर कंसोल में 'टॉप' कमांड चलाता है?
likejudo

मुझे लगता है कि काम करना चाहिए। जब आप topथ्रेड को अलग से सूचीबद्ध करने के लिए बस एच दबाएं । या आप एक अनंत लूप के साथ एक कार्यक्रम लिख सकते हैं और इसे कई बार चला सकते हैं।
ब्रायन

कहते हैं, मैं 100 धागे स्पॉन करने के लिए कार्यक्रम लिखता हूं, प्रत्येक एक लंबे, गहन संगणना का प्रदर्शन करता है। यदि मैं इसे जावा (एंड्रॉइड) में लिखता हूं, तो क्या गारंटी है कि जेवीएम / केवीएम विभिन्न कोर पर थ्रेड्स चलाएगा, और सभी कोर पर उन्हें चलाएगा?
२५:१५

1
मुझे नहीं पता - क्या यह नहीं है कि आपके प्रयोग का क्या मतलब है?
ब्रायन

मुझे एक कार्यक्रम का परीक्षण करने की आवश्यकता है जो कहता है कि यह उपयोग किए जा रहे प्रोसेसर कोर की संख्या को प्रतिबंधित करेगा। मैं कुछ और खोजूंगा धन्यवाद!
२०:३

6

psआपके पास psrयह बताने के लिए एक फ़ील्ड है कि कौन सा प्रोसेसर काम कर रहा है।

तो आप कुछ इस तरह का उपयोग कर सकते हैं:

ps -e -o psr= | sort | uniq | wc -l

ध्यान दें कि केवल psइस तरह से चलने से कम से कम एक कोर सक्रिय हो जाएगा।

संभवतः इसे चलाने के लिए बेहतर है:

tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"

इस तरह से sortऔर wcगिनती में वृद्धि नहीं करते हैं।


क्या होगा अगर सिस्टम में 16 कोर हैं और कोई भी उनमें से कुछ का उपयोग नहीं कर रहा है?

फिर यह 0 प्रिंट करता है क्योंकि उनमें से कोई भी उपयोग में नहीं है। मुझे लगता है कि सवाल वही है जो पूछ रहा है।
मिकेल

प्रश्न के लिए नई टिप्पणियाँ नहीं देखीं।

1
बेशक, दौड़कर psहम कम से कम 1 कोर सक्रिय कर रहे हैं। ;-)
मिकेल

आपके उत्तर के लिए धन्यवाद। नुकसान मुझे यह जानने की जरूरत है कि क्या एक से अधिक कोर कभी सक्रिय हैं। कई थ्रेड्स बनाने की प्रक्रिया द्वारा यह परीक्षण करने के लिए सोच रहा था। क्या थ्रेड के लिए यह संभव है कि यह किस प्रोसेसर पर है? इस तरह से एक बता सकता है कि क्या कभी भारी भार के तहत एकाधिक कोर का उपयोग किया जाएगा। यकीन नहीं होता कि मैं सही रास्ते पर हूं।

3
htop

यह कमांड ubuntu और centos दोनों में अच्छा काम करता है और रेखांकन दिखाता है कि कितने CPU और उनका उपयोग कैसे किया जा रहा है।

सेंटो के लिए:

yum install htop

ubuntu के लिए:

apt-get install htop

2

निम्नलिखित का प्रयास करें:

cat /proc/cpuinfo

यहाँ एक Android जावा उदाहरण के लिए एक कड़ी है।


1
"सक्रिय" द्वारा, मुझे लगता है कि अनिल का अर्थ है कि वर्तमान में कितने कोर उपयोग में हैं, और कितने निष्क्रिय हैं, यानी कि सिस्टम कितना व्यस्त है। /proc/cpuinfoबस आपको बताता है कि सिस्टम में कितने कोर हैं, और यहां तक ​​कि आपको cat /proc/cpuinfoहाइपरथ्रेडिंग के लिए खाते से अधिक करना होगा ।
मिकेल

ठीक है - यह स्पष्ट नहीं था लेकिन आप सही हैं।
अमीर अफगानी

0

आप cat / sys / devices / system / cpu / possible या cat / sys / devices / system / cpu / ऑनलाइन का उपयोग कर सकते हैं। संभव है मुख्य रूप से आप कुछ विशेष कार्यक्रम चलाने के लिए एक सीपीयू को अलग कर दिया है।

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