लिनक्स पर अपने सीपीयू की गति को देखने का सही तरीका क्या है?


20

मुझे अपने CPU के बारे में जानकारी प्राप्त करने के लिए दो कमांड मिले: cat /proc/cpuinfoऔर lscpu/proc/cpuinfoदिखाता है कि मेरी सीपीयू की गति 2.1 Ghz है, जबकि lspcuकहते हैं कि यह 3167 मेगाहर्ट्ज है। कौनसा सही है?

यह cat /proc/cpuinfoमेरे प्रोसेसर की गति से मेरा सटीक आउटपुट है :

model name  : Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz

और यह है lscpu:

CPU MHz:               3225.234

(किसी कारण से, lscpuहर बार अलग-अलग आउटपुट, 3100 और 3300 मेगाहर्ट्ज के बीच भिन्न)


3
आपकी /proc/cpuinfoएक पंक्ति भी होनी चाहिए cpu MHZ: ...जो कहती है कि वर्तमान गति है। 2.1 के बाद @बेस स्पीड (टर्बो बूस्ट के बिना) है।
don_crissti

टर्बो बूस्ट क्या है? और इसलिए इसका मतलब है कि मेरी गति वास्तव में 3.2 गीगाहर्ट्ज़ के आसपास है?
रोहन

2
जरूरत पड़ने पर यह "गैस से टकराने" का इंटेल का तरीका है। मुझे लगता है कि उस समय आपकी वास्तविक गति 3.2 GHz के आसपास थी, आप cpu0 के लिए उदाहरण के लिए cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(रूट के रूप में) भी प्रयास कर सकते हैं ।
दान_क्रांति

2
टर्बो बूस्ट एक ऐसी तकनीक है जो आपके द्वारा उपयोग किए जा रहे कोर की संख्या के आधार पर प्रोसेसर की आवृत्ति को बदल देती है। यदि आप कुछ कोर का उपयोग करते हैं, तो प्रदर्शन को बढ़ावा देने और कम तापमान बनाए रखने के लिए आवृत्ति बढ़ जाती है। आप टर्बो बूस्ट आवृत्ति तालिकाओं की जांच कर सकते हैं कि यह कैसे बढ़ता है।
Jaime

जवाबों:


35

प्रत्येक कोर की वर्तमान गति को देखने के लिए मैं यह करता हूं:

watch -n.1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

ध्यान दें:

यदि आपका watchकमांड एक सेकंड से कम अंतराल के साथ काम नहीं करता है, तो अंतराल को संशोधित करें जैसे:

watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

यह cpu speedवास्तविक समय में प्रत्येक कोर को प्रदर्शित करता है ।

निम्नलिखित कमांड को चलाकर, एक या अधिक बार, दूसरे टर्मिनल से एक उपरोक्त watchकमांड के साथ गति परिवर्तन देख सकता है , मान लिया गया है SpeedStepकि सक्षम है (के Cool'n'Quietलिए AMD)।

echo "scale=10000; 4*a(1)" | bc -l &

(यह कमांड 10000 स्थानों की bcगणना के piलिए उपयोग करता है ।)


मुझे .इसे बनाने के लिए आपके पहले कमांड को हटाना था :watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4

1
यह करने के लिए एक निफ्टी तरीका है, लेकिन मैं हर 1 .1 सेकंड में किसी भी कमांड को चलाने के खिलाफ चेतावनी दूंगा, जो कि स्वयं ही CPU स्पीड रिपोर्ट को प्रभावित करने वाला है। 1 सेकंड काफी है।
छिपकली

@ छिपकली आमतौर पर मैं सहमत हूं लेकिन इस मामले में सीपीयू की गति 1 सेकंड के अंतराल से तेजी से बढ़ और घट सकती है, जिसके परिणामस्वरूप दृश्यमान गति में बदलाव होता है। चूंकि आधुनिक प्रोसेसर बहुत तेज़ हैं, इसलिए मैंने शुरू में सोचा SpeedStepथा कि अंतराल के रूप में 1 सेकंड का उपयोग करते समय मेरा काम नहीं कर रहा था। कम से कम, .5का उपयोग किया जाना चाहिए यदि कोई उतना तेज गति से नहीं जाना चाहता है .1 second(हालांकि मैं अभी भी उस गति से कई गति को देखने से चूक गया हूं।
टिमोथी मार्टिन

1
1 सेकंड से कम समय के लिए सेट की गई टाइमर के साथ शीर्ष चलाने की कोशिश करें, आप सीपीयू उपयोग को स्पष्ट रूप से देख सकते हैं। मेरा अनुमान है कि आप वास्तव में जो देख रहे हैं वह सिस्टम आपके सीपीयू स्पीड की जानकारी उत्पन्न कर रहा है, अर्थात, सीपीयू स्पीड आउटपुट की पीढ़ी सीपीयू आंदोलन का कारण बन रही है। मुझे लगता है कि एक सेकंड से कम कुछ भी सीधे उस सीपीयू गति का कारण बनता है जो आप देख रहे हैं। उदाहरण के लिए, टॉप -d5 cpu का 1% है। -D2 में यह लगभग 5% है। आपको लग सकता है कि आप वास्तव में खुद को बेवकूफ बना रहे हैं कि सीपीयू कुछ ऐसा कर रहा है जो आप कर रहे हैं, हे। शेल का आउटपुट महंगा भी है।
छिपकली

कोशिश कर watch -n0.1सकता है, काम कर सकता है। उसमें असफल होने पर while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; done, यह घड़ी हालांकि अधिक से अधिक flickers।
स्टीवन लू

7

इंटेल i3, i5 और i7 आधारित cpus के लिए एक समर्पित उपकरण है जिसे i7zसभी सीपीयू कोर के लिए वर्तमान गति दिखाता है।

मैन पेज से (विवरण):

i7z बिना किसी विकल्प के i7z, ncurses आधारित, प्रोग्राम चलाता है। i7z इंटेल से आई 3, i5 और i7 आधारित कोर प्रोसेसर के लिए सी-स्टेट्स और तापमान प्रिंट करेगा (जिसमें नेहेल्म्स, सैंडी ब्रिज और आइवी ब्रिज शामिल हैं)।

Ubuntu- आधारित वितरण के लिए आप इस आदेश को जारी करके इसे स्थापित कर सकते हैं:

sudo apt-get install i7z

तो बस इसे चलाने के लिए (उपकरण sudo के साथ चलाने की जरूरत है):

sudo i7z

4
यदि आपके पास Intel CPU है तो यह सबसे अच्छा समाधान है। Cpuinfo को कैट करना आपको गलत घड़ी की गति देता है। बस एक नोट, आप "apt-get" में डैश लगाना भूल गए।
fgblomqvist

ठीक है ... यह मेरे Xeon प्रोसेसर के साथ काम करता है केवल आउटपुट को गारबेज किया जाता है, हो सकता है क्योंकि मेरे पास दो CPU हैं (मेरे पास एक डुअल Xeon मदरबोर्ड है)।
एलेक्सिस विल्के

4

इंटेल कोर i7-4600U प्रोसेसर का समर्थन करता है टर्बो बूस्ट प्रौद्योगिकी । इसमें 2.10GHz का बेस फ्रीक्वेंसी और 3.30GHz का मैक्स टर्बो फ्रीक्वेंसी है। इसका मतलब है कि,

  • यदि आप टर्बो बूस्ट (BIOS सेटअप मेनू में) को अक्षम करते हैं, तो सीपीयू हर समय 2.10GHz पर काम करेगा।
  • जब टर्बो बूस्ट सक्षम है और केवल एक कोर काम कर रहा है, तो सीपीयू अधिकतम 3.30GHz पर काम करेगा।
  • यदि टर्बो बूस्ट सक्षम है और सभी कोर काम कर रहे हैं, तो सीपीयू 2.10GHz पर काम करेगा।

वर्तमान आवृत्ति प्राप्त करना

यह निर्धारित करने के लिए कि टर्बो बूस्ट सक्रिय है और जो वर्तमान आवृत्ति है, आप उपयोग कर सकते हैं cpupower frequency-info। उदाहरण के लिए, टर्बो बूस्ट सक्षम के साथ एक पुराने इंटेल कोर i5-660 के लिए, आपको निम्नलिखित मिलेगा।

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
              The governor "ondemand" may decide which speed to use
              within this range.
  current CPU frequency is 1.87 GHz.
  cpufreq stats: 3.47 GHz:82,67%, 3.33 GHz:0,00%, 2.53 GHz:0,00%, 1.87 GHz:0,06%, 1.20 GHz:17,28%  (3)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

ध्यान दें कि जानकारी हार्डवेयर सीमाओं ( 1.20 GHz - 3.47 GHz), संभावित आवृत्तियों ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) और वर्तमान आवृत्ति ( 1.87 GHz) को बताती है । आप इन आवृत्तियों की तकनीकी जानकारी इंटेल वेबसाइट पर पा सकते हैं ।

TurboBoost अक्षम होने पर आवृत्ति

जब आप टर्बो बूस्ट के साथ एक ही कमांड चलाते हैं, तो अंतर पर ध्यान दें: इस boost state supportअनुभाग में, के लिए मान Supportedऔर Activeहैं no। यहां, सीपीयू हर समय नाममात्र / न्यूनतम मूल्य (1.20Ghz) पर होगा।

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
  cpufreq stats: 3.47 GHz:40,86%, 3.33 GHz:0,01%, 2.53 GHz:0,06%, 1.87 GHz:0,22%, 1.20 GHz:58,85%  (493)
  boost state support:
    Supported: no
    Active: no
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

आप BIOS या कुछ लिनक्स विकल्प / कमांड का उपयोग करके टर्बो बूस्ट को अक्षम कर सकते हैं । कर्नेल समर्थन सक्रिय किया जा सकता / का उपयोग कर अक्षम /sys/devices/system/cpu/cpufreq/boostफ़ाइल।


हेपो में इंटेल पी-स्टेट ड्राइवर, सी-स्टेट्स, टर्बो बूस्ट और आवृत्ति जानकारी प्राप्त करने के लिए कमांड के बारे में अधिक जानकारी के साथ एक ब्लॉग प्रविष्टि है
Jaime

यह लिंक अब टूट गया है ...
मिखाइल टी।

1
हाइपो ब्लॉग प्रविष्टि के लिए लिंक टूट गया है। आपको विक्टर स्टिनर के नोट्स में एक प्रति मिल सकती है: भाग 1 और भाग 2
Jaime

4

CPU आवृत्तियों को कर्नेल में रखा जाता है लेकिन वे थोड़े "बंद" हो सकते हैं। आप उन्हें उपयोग करके देख सकते हैं:

$ cd /sys/devices/system/cpu
$ paste <(cat cpu*/cpufreq/affected_cpus) <(cat cpu*/cpufreq/scaling_cur_freq) | column -s $'\t' -t
0  833914
1  800021
2  800086
3  800029
4  800036
5  800460
6  800118
7  800141

अगर आपको सीपीयू की जरूरत नहीं है, तो इसका छोटा तरीका बस उपयोग कर रहा है:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006

यह विधि रास्पबेरी पी पर काम करने लगती है जो रास्पियन
जॉन

3

अपने CPU के बारे में जानकारी प्राप्त करने के लिए निम्नलिखित कमांड टाइप करें:

dmidecode -t 4

2
Cuspy। अब मुझे यहाँ 4 अलग-अलग संख्याएँ दिखाई देती हैं ;-)
वॉनब्रांड

इसके अलावा, "वर्तमान गति" भ्रामक प्रतीत होती है, क्योंकि वर्तमान गति को हमेशा बड़ी संख्या (3.7GHz) के रूप में रिपोर्ट किया जाता है, जब मशीन निष्क्रिय होती है।
ragerdl

@vonbrand एक घड़ी वाला व्यक्ति जानता है कि यह किस समय है। दो घड़ियों वाला व्यक्ति कभी निश्चित नहीं हो सकता है।
Kusalananda

0

इस बात पर निर्भर करता है कि आप किस जानकारी के लिए उपयोग कर रहे हैं; बिल्ली / proc / cpuinfo` से आउटपुट लाइन "विज्ञापित" गति, ब्रोशर में गति आदि है। यदि आप सर्वर A की तुलना सर्वर B से कर रहे हैं, तो यह पर्याप्त हो सकता है। यदि आप सिस्टम पर वर्कलोड की निगरानी कर रहे हैं, तो आपके सवाल के जवाब और @ gad3r के जवाब क्या होंगे।

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