मैं लिनक्स सर्वर पर कितने कोर का उपयोग कर रहा हूं?


30

मैं बस सोच रहा हूं कि मैं कैसे bash में पता लगा सकता हूं कि लिनक्स सर्वर पर अब एक उपयोगकर्ता कितने CPU कोर का उपयोग कर रहा है?

मैं बैकग्राउंड जॉब्स की उचित मात्रा सर्वर को सबमिट कर रहा हूं, इसलिए मैं जॉब जमा करने से पहले यह जांचने के लिए बैश स्क्रिप्ट लिखना चाहूंगा कि क्या मेरे द्वारा सबमिट की गई जॉब्स (प्रक्रियाएं) बहुत अधिक हैं, क्योंकि मुझे दूसरे को जाने देना है उपयोगकर्ताओं के पास अपनी नौकरियों के लिए उपयोग करने के लिए पर्याप्त कोर है। मैं यह जानना चाहता हूं कि bash कमांड मुझे यह बता सकती है कि अब मेरी नौकरियां कितने कोर का उपयोग कर रही हैं।

धन्यवाद एवं शुभकामनाएँ!

जवाबों:


39

प्रति सीपीयू कोर की संख्या पाने के लिए :

grep "^core id" /proc/cpuinfo | sort -u | wc -l

या भौतिक सीपीयू की संख्या प्राप्त करने के लिए :

grep "^physical id" /proc/cpuinfo | sort -u | wc -l

किसी दिए गए उपयोगकर्ता के लिए यह कैसे जांचें?
makis

26

मुझे नहीं पता कि यह मदद करता है, लेकिन आप mpstatयूटिलिटी प्रोसेसर (या कोर) द्वारा सीपीयू के उपयोग को तोड़ने के लिए उपयोगिता का उपयोग कर सकते हैं । उदाहरण के लिए:

$ mpstat -P ALL 1

12:49:59 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
12:50:00 PM  all    7.89    0.00    1.25    0.88    0.00    0.00    0.00   89.97   1359.00
12:50:00 PM    0   14.00    0.00    0.00    0.00    0.00    0.00    0.00   86.00   1043.00
12:50:00 PM    1   15.84    0.00    7.92    3.96    0.00    0.99    0.00   71.29    297.00
12:50:00 PM    2    3.96    0.00    0.00    1.98    0.00    0.99    0.00   93.07      0.00
12:50:00 PM    3    3.96    0.00    0.99    2.97    0.00    0.00    0.00   92.08      0.00
12:50:00 PM    4    4.00    0.00    0.00    0.00    0.00    0.00    0.00   96.00      0.00
12:50:00 PM    5    4.95    0.00    0.99    0.00    0.00    0.00    0.00   94.06     18.00
12:50:00 PM    6   10.89    0.00    0.99    0.00    0.00    0.00    0.00   88.12      0.00
12:50:00 PM    7    5.05    0.00    0.00    0.00    0.00    0.00    0.00   94.95      0.00

इस उदाहरण में, आपको लगता है कि CPU के देख सकते हैं 0, 1और 6उनमें से बाकी की तुलना में अधिक काम कर रहे हैं। कभी-कभी आप देखेंगे कि एक सीपीयू 100% के पास (या पर) है जबकि अन्य शून्य पर हैं। यह प्रोग्राम का संकेतक (या किसी प्रोग्राम का हिस्सा) हो सकता है जो सिंगल-थ्रेडेड है और केवल एक बार में एक ही सीपीयू का उपयोग करने में सक्षम है।

mpstatफेडोरा, आरएचईएल या सेंटोस सिस्टम पर स्थापित करने के लिए उपयोग करें yum install sysstat


इस उत्तर को प्रदान करने के लिए एक लाख धन्यवाद! मेरे सहयोगी "शीर्ष" कमांड का उपयोग कर रहे थे और प्रोसेसर उपयोग के बारे में सभी गलत निष्कर्ष बना रहे थे जब तक कि मैंने उन्हें एमपीस्टैट कमांड नहीं दिखाया।
नव

उबंटू पर उपलब्ध नहीं # aptitude search mpstat #:।
एलिक्स एक्सल

2
@AlixAxel aptitude search systatइसके बजाय प्रयास करें ।
मैट सोलनिट

@MattSolnit: फिर भी कोई किस्मत नहीं।
एलिक्स एक्सल डे

एमपीस्टैट को sysstat डेबियन और उबंटू पर पैकेज द्वारा प्रदान किया गया है । मुझे उम्मीद है कि अधिकांश डेबियन-व्युत्पन्न वितरण समान पैकेज नाम का उपयोग करेंगे। डेबियन-व्युत्पन्न वितरण पर, द्वारा शुरू करें apt-cache search --full mpstat
बजे एक CVn

2

जब तक स्पष्ट रूप से कॉन्फ़िगर नहीं किया जाता है (यानी एक विशिष्ट सीपीयू के लिए एक प्रक्रिया को पिन करना), सभी कोर को हर समय उपयोग में माना जा सकता है। अनुसूचक अगले उपलब्ध कोर प्रक्रियाओं को आवंटित करेगा। बिंदु में मामला, "सिस्टम मॉनीटर" (गनोम का हिस्सा) मेरी मशीन के सभी 4 कोरों पर लगभग अपना लोड दिखा रहा है।


मैं सर्वर पर पृष्ठभूमि की नौकरियों की एक उचित राशि जमा कर रहा हूं, इसलिए मुझे नौकरी से सबमिट करने से पहले यह जांचने के लिए एक बैश स्क्रिप्ट लिखना पसंद है कि क्या मेरे द्वारा चल रही नौकरियां (प्रक्रियाएं) सबमिट की गई हैं, क्योंकि मैं अन्य उपयोगकर्ताओं को देना चाहता हूं उनकी नौकरियों के लिए उपयोग करने के लिए पर्याप्त कोर। इसलिए मुझे यह जानना पसंद है कि कौन सी बैश कमांड मुझे बता सकती है कि मेरी नौकरियां कितने कोर का उपयोग कर रही हैं।
टिम

3
मुझे नहीं लगता कि आप मेरे जवाब को समझ पाए हैं। उपयोग में आने वाले कोर की संख्या कुल उपलब्ध कोर की संख्या है। यह निर्धारित करने के लिए कि क्या आपकी नौकरी प्रस्तुत की जानी चाहिए या नहीं, एक कारक के रूप में समग्र सिस्टम लोड का उपयोग करें।
इम्माइफ

धन्यवाद! मैं समग्र सिस्टम लोड की जांच करता हूं। मुझे मेरे एक सहयोगी ने कहा है कि मैं सभी कोर का उपयोग नहीं कर सकता क्योंकि जो जानता है कि अन्य लोग जल्द ही अपनी नौकरी चलाएंगे और मेरी नौकरियां काफी समय तक चलेंगी। क्या आपको भी लगता है कि मुझे अपने द्वारा उपयोग किए जा रहे कोर को सीमित करना है?
टिम

2

तो आप देखेंगे कि यहां प्रतिक्रियाएं हैं जो आपको बताएंगी कि आपके कोर का उपयोग कैसे किया जा रहा है।

कैसे - यह वास्तव में आप एक सेवा नहीं कर रहा है। आपने एक बुनियादी धारणा बना ली है कि बस पकड़ नहीं है - कि आपकी नौकरियां कोर के कुछ सबसेट पर खुद को समूहित करेंगी।

इसके बजाय, आपकी नौकरियों को सभी कोर में फैला दिया जाएगा, जब तक कि आप किसी ऐसी चीज को लागू नहीं करते हैं जो उन्हें किसी भी तरह "पेन" में रखती है। (नोट: मैं यह सिफारिश नहीं कर रहा हूँ; बस कह रहा हूँ, "जब तक")

यहां एक वैकल्पिक रणनीति है: अपने विशेष सिस्टम के लिए पहचानें कि LOAD स्तर क्या है जब आपको लगता है कि यह अन्य उपयोगकर्ताओं के लिए "स्वीकार्य" है और अधिक नौकरियां जोड़ रहा है। फिर, कुछ ऐसा बनाएँ जो लोड की सीमा से नीचे की सीमा के नीचे होने पर केवल एक नई पृष्ठभूमि की नौकरी प्रस्तुत करे।

इस तरह, समाधान कोर-काउंट-इंडिपेंडेंट, अधिक पोर्टेबल, अधिक लचीला और साथ ही "ट्विक" करने में आसान होगा।


मैंने अभी-अभी एक टिप्पणी को दूसरे पोस्टर के उत्तर में जोड़ा है, यह दर्शाता है कि यह किसी सहकर्मी ने आपको बताया है। तो, वास्तव में, यह प्रतीत होता है कि गलतफहमी उसकी है, आपकी नहीं। उसके लिए माफ़ करना!
21

धन्यवाद! जैसा कि "अपने विशेष सिस्टम के लिए पहचानें कि LOAD स्तर क्या है जब आपको लगता है कि यह" स्वीकार्य है "अन्य उपयोगकर्ताओं के लिए अधिक नौकरियां जोड़ने के लिए", यदि वर्तमान लोड मुख्य रूप से मेरे चलने वाले नौकरियों के कारण नहीं है, तो मैं उपयोग करने के लिए अधिक स्वतंत्र महसूस करूंगा। बाकी सीपीयू, लेकिन अगर वर्तमान लोड में मेरी चलने वाली नौकरियां उचित मात्रा में लेती हैं तो मुझे शायद बाकी सीपीयू का उपयोग करना छोड़ना होगा। तो क्या आपको अभी भी लगता है कि मुझे अपनी कुल चल रही नौकरियों के CPU उपयोग का अनुमान नहीं है?
टिम

नहीं, मुझे नहीं लगता है कि यह इस बात से कोई फर्क नहीं पड़ता है कि वर्तमान नौकरियों में आपकी नौकरी बनाम अन्य नौकरियों में से कितना अंतर है। सादगी पर विचार करें: आपकी नौकरी एक अच्छा नागरिक बनने की कोशिश करती है, और केवल खुद को प्रस्तुत करता है यदि लोड एक स्तर से नीचे है जिसे आप स्वीकार्य मानते हैं। शेष सभी क्षमता का उपयोग करने के लिए विचार कभी नहीं है; जो भविष्य के अन्य उपयोगकर्ताओं को बाँध में छोड़ देता है। आदर्श रूप से, सभी उपयोगकर्ता इसके लिए एक ही तर्क का उपयोग कर रहे होंगे।
16

2

यदि आप ऐसा करना चाहते हैं तो यह linux और OS X पर काम करता है, आप कर सकते हैं:

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)

1

आप अपने उपयोगकर्ता नाम को चलाने top, हिट Uकरने और निर्दिष्ट करने और फिर अपने शीर्ष कुछ प्रक्रियाओं के CPU उपयोग को जोड़कर एक मोटा अनुमान प्राप्त कर सकते हैं ।


मुझे एक bash कमांड जानना पसंद है जो मुझे नंबर बता सके, क्योंकि मैं इसे bash स्क्रिप्ट में उपयोग करना चाहता हूं।
टिम 10

@ टी top-बी स्विच के साथ बैच मोड में चल सकता है। इसे आप की जरूरत की संख्या प्राप्त करने के लिए एक एन स्विच के साथ मिलाएं।
नगुल

1
क्या आप एक उपयोगकर्ता द्वारा प्रस्तुत सभी नौकरियों (प्रक्रियाओं) द्वारा उपयोग किए गए कोर की संख्या प्राप्त करने के लिए कोड का एक उदाहरण दे सकते हैं?
टिम

@ बल्ले से नहीं निकले। मुझे या तो इस तरह की स्क्रिप्ट को topआउटपुट या google को पार्स करके लिखना होगा, यह देखने के लिए कि क्या किसी ने पहले ही कर दिया है। हालाँकि, मैं इसके प्रयास के लायक नहीं हूँ क्योंकि मुझे लगता है कि मुझे हर रन के लिए अलग-अलग आउटपुट मिलेंगे, जिस गति से संदर्भ स्विचिंग होता है। क्या सिस्टम लोड पर्याप्त अच्छा संकेतक नहीं है? यह प्रभावी रूप से आपको बताता है कि प्रक्रिया कतार (सीपीयू पर प्रतीक्षा की जाने वाली प्रक्रिया) को संभालने के लिए कितने आभासी कोर की आवश्यकता होती है।
नगुल

@ नगुल: हां सिस्टम लोड अच्छा है और मैं इसकी भी जांच करता हूं। हालाँकि कुछ लोग मुझे बताते हैं कि मैं सभी कोर का उपयोग नहीं कर सकता क्योंकि कौन जानता है कि अन्य लोग जल्द ही अपना काम चला लेंगे। इसलिए मुझे लगता है कि मुझे उन कोर को सीमित करना होगा जो मैं उपयोग कर रहा हूं। वैसे, क्या आपने कहीं ऑनलाइन स्क्रिप्ट देखी हैं जो सीपीयू और मेमोरी लोड की जांच करती हैं और उपयोग के आधार पर गतिशील रूप से नौकरी प्रस्तुत करती हैं? मैं उन्हें इतने लंबे समय से देख रहा हूं। धन्यवाद!
टिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.