अधिकांश सीपीयू में अब बैटरी / बिजली के उपयोग को बचाने में मदद करने के लिए अपनी गति को समायोजित करने की क्षमता शामिल है। इसे आमतौर पर सीपीयू फ्रीक्वेंसी स्केलिंग कहा जाता है । सीपीयू की वास्तविक समय गति इसके द्वारा बताई गई है:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
इसके द्वारा निरपेक्ष (अधिकतम) सीपीयू की गति बताई जा रही है:
$ cat /proc/cpuinfo
विशेष रूप से यह पंक्ति:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
जो लाइन दिखाता cpu MHz
है वह आपके सीपीयू की अधिकतम गति नहीं दिखाता है। यह मान आपकी वर्तमान गति है। मल्टी-कोर सिस्टम जैसे कि i7 या i5 पर आप इसे इस कमांड के साथ देख सकते हैं:
$ cat /proc/cpuinfo |grep MHz
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 2667.000
हालाँकि आप इस कमांड के साथ निरपेक्ष (अधिकतम) गति देख सकते हैं:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2667.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
नोट: इसके पास कोर की संख्या NUMAS node0 CPU(s)
4 है, अर्थात 0,1,2, और 3।
सीपीयू स्केलिंग और गवर्निंग?
आपके सिस्टम में मोड को स्केलिंग गवर्नर कहा जाता है। एक कार पर एक गवर्नर के समान। आप देख सकते हैं कि इस कमांड के साथ कौन से उपलब्ध हैं:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
आप यह भी देख सकते हैं कि वर्तमान में कौन सक्रिय है:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
नोट: मैं जो आदेश दिखा रहा हूं उसमें केवल 1 सीपीयू शामिल है cpu0
,। आप या तो *
सभी कोर को देखने के लिए रास्ते में स्थानापन्न कर सकते हैं या आप चुनिंदा रूप से देख सकते हैं cpu1
, आदि।
आप अपने राज्यपाल की प्रोफ़ाइल के लिए उपलब्ध अधिकतम और न्यूनतम सीपीयू गति देख सकते हैं:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
इस लेख में और अधिक विवरण उपलब्ध हैं, जिसका शीर्षक है: सीपीयू फ्रीक्वेंसी स्केलिंग इन लिनक्स विथ सीपफ्रेक ।
तो cpuinfo_cur_freq के बारे में क्या?
सीपीयू के विनिर्देश के साथ इस पैरामीटर का अधिक लेना-देना है और वर्तमान में सीपीयू किस तरह से काम कर रहा है, इसके संदर्भ में उपयोगी होने के बजाय यह किस प्रोफाइल में है। वास्तविक परिचालन टेलीमेट्री के लिए मैं scaling_*
कर्नेल ट्यूनबल्स का उपयोग करता हूं ।
उदाहरण
मैंने CPU स्क्रिप्ट को कॉलम-वार दिखाने के लिए निम्न स्क्रिप्ट को एक साथ रखा, ताकि यह देखना आसान हो जाए कि विभिन्न कर्नेल ट्यूब्स क्या दिखते हैं:
#!/bin/bash
nthCore=$(lscpu|grep node0|cut -d"-" -f2)
for i in /sys/devices/system/cpu/cpu0/cpufreq/{cpuinfo,scaling}_*; do
pname=$(basename $i)
[[ "$pname" == *available* ]] || [[ "$pname" == *transition* ]] || \
[[ "$pname" == *driver* ]] || [[ "$pname" == *setspeed* ]] && continue
echo "$pname: "
for j in `seq 0 $nthCore`;do
kparam=$(echo $i | sed "s/cpu0/cpu$j/")
sudo cat $kparam
done
done | paste - - - - - | column -t
जब आप इसे चलाते हैं तो आपको निम्न आउटपुट मिलते हैं:
$ ./cpuinfo.bash
cpuinfo_cur_freq: 2667000 2667000 2667000 2667000
cpuinfo_max_freq: 2667000 2667000 2667000 2667000
cpuinfo_min_freq: 1199000 1199000 1199000 1199000
scaling_cur_freq: 2667000 2266000 1333000 2667000
scaling_governor: ondemand ondemand ondemand ondemand
scaling_max_freq: 2667000 2667000 2667000 2667000
scaling_min_freq: 1199000 1199000 1199000 1199000
आप देख सकते हैं कि scaling_cur_freq
tunable कोर # 1 & 2 में मंदी दिखा रहा है।
/proc/cpuinfo
रिपोर्ट जैसा नहीं होताcpuinfo_cur_freq
? यह स्पष्ट रूप से नहीं करता है! मेरे सवाल का दिल अभी भी अनसुलझा है। मैंने इस उपकरण को उजागर किया जो किसी भी तरह "सही आवृत्ति" की रिपोर्ट करता है, लेकिन मुझे यकीन नहीं है कि यह सही तरीके से काम करता है। यह अपने एल्गोरिथ्म के लिए कुछ स्रोत प्रदान करता है, लेकिन वास्तव में विसंगति के लिए एक महान विवरण प्रदान नहीं करता है ।