Sebagian besar CPU sekarang termasuk kemampuan untuk menyesuaikan kecepatan mereka untuk membantu menghemat penggunaan baterai / daya. Biasanya disebut skala frekuensi CPU . Kecepatan realtime CPU dilaporkan oleh ini:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
Kecepatan absolut (maks) CPU dilaporkan oleh ini:
$ cat /proc/cpuinfo
Secara khusus baris ini:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
Garis yang ditampilkan cpu MHz
tidak menunjukkan kecepatan maksimum CPU Anda. Nilai ini adalah kecepatan Anda saat ini. Pada sistem multi-core seperti i7 atau i5 Anda dapat melihat ini dengan perintah ini:
$ cat /proc/cpuinfo |grep MHz
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 2667.000
Namun Anda dapat melihat kecepatan absolut (maks) dengan perintah ini:
$ 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
CATATAN: jumlah inti yang dimilikinya, NUMAS node0 CPU(s)
adalah 4, yaitu 0,1,2, dan 3.
Penskalaan & pengaturan CPU?
Mode sistem Anda berada disebut gubernur penskalaan. Mirip dengan gubernur di mobil. Anda dapat melihat mana yang tersedia dengan perintah ini:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
Anda juga dapat melihat mana yang sedang aktif:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
CATATAN: Perintah yang saya tampilkan hanya mencakup cpu 1 cpu0
,. Anda dapat mengganti dalam *
di jalur untuk melihat semua inti atau Anda dapat melihat secara selektif cpu1
, dll.
Anda dapat melihat kecepatan CPU maksimum & minimum yang tersedia untuk profil gubernur Anda:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
Rincian lebih lanjut tersedia dalam artikel ini, berjudul: penskalaan frekuensi CPU di Linux dengan cpufreq .
Jadi bagaimana dengan cpuinfo_cur_freq?
Parameter ini lebih berkaitan dengan spesifikasi CPU dan profil mana yang saat ini digunakan, daripada apa pun yang bermanfaat sehubungan dengan bagaimana CPU saat ini beroperasi. Untuk telemetri operasional yang sebenarnya saya akan menggunakan scaling_*
tunables kernel.
Contoh
Saya menyatukan skrip berikut untuk menampilkan kolom CPU Cores sehingga akan lebih mudah untuk melihat seperti apa berbagai tunable Kernel terlihat:
#!/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
Ketika Anda menjalankannya, Anda mendapatkan output berikut:
$ ./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
Anda dapat melihat bahwa scaling_cur_freq
merdu menunjukkan perlambatan pada core # 1 & 2.
/proc/cpuinfo
melaporkan hal yang samacpuinfo_cur_freq
? Jelas tidak! Inti dari pertanyaan saya masih belum terpecahkan. Saya menemukan alat ini yang entah bagaimana melaporkan "frekuensi sebenarnya", tetapi saya tidak yakin itu berfungsi dengan benar. Ini menyediakan beberapa sumber untuk algoritmanya, tetapi tidak benar-benar memberikan penjelasan yang bagus untuk perbedaan tersebut.