Çoğu CPU şimdi pil / güç kullanımından tasarruf etmek için hızlarını ayarlama yeteneğine sahiptir. Genellikle CPU frekans ölçeklemesi olarak adlandırılır . CPU'nun gerçek zamanlı hızı şu şekilde bildirilir:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
Mutlak (maks.) CPU hızı şu şekilde bildirilir:
$ cat /proc/cpuinfo
Özellikle bu satır:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
Gösterileri satır cpu MHz
gelmez CPU maksimum hızı gösterir. Bu değer mevcut hızınızdır. İ7 veya i5 gibi çok çekirdekli bir sistemde bunu şu komutla görebilirsiniz:
$ cat /proc/cpuinfo |grep MHz
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 2667.000
Ancak bu komutla mutlak (maks.) Hızı görebilirsiniz:
$ 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
NOT / BILGI: sahip olduğu çekirdek sayısı NUMAS node0 CPU(s)
4'tür, yani 0,1,2 ve 3.
CPU ölçeklendirme ve yönetme?
Sisteminizin bulunduğu moda ölçeklendirme düzenleyicisi denir. Arabadaki bir valiye benzer. Bu komutla hangilerinin kullanılabilir olduğunu görebilirsiniz:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
Şu anda hangisinin aktif olduğunu da görebilirsiniz:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
NOT: Gösterdiğim komutlar sadece 1. cpu'yu içeriyor cpu0
. *
Tüm çekirdekleri görmek için yoldaki a yerine geçebilir veya seçici olarak görebilirsiniz cpu1
.
Vali profiliniz için mevcut olan maksimum ve minimum CPU hızlarını görebilirsiniz:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
Bu makalede daha ayrıntılı bilgi bulabilirsiniz: Linux'ta CPU frekans ölçeklemesi cpufreq ile .
Peki ya cpuinfo_cur_freq?
Bu parametrenin, CPU'nun şu anda nasıl çalıştığına ilişkin yararlı herhangi bir şey yerine, CPU'nun spesifikasyonu ve o anda hangi profilde olduğu ile ilgilidir. Gerçek operasyonel telemetri için scaling_*
çekirdek ayarlayıcılarını kullanırdım.
Misal
CPU Çekirdeğini sütun olarak göstermek için aşağıdaki komut dosyasını bir araya getirdim, böylece çeşitli Çekirdek ayarlarının nasıl göründüğünü görmek daha kolay olurdu:
#!/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
Çalıştırdığınızda aşağıdaki çıktıyı alırsınız:
$ ./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
Ayarlanabilir bölümün # 1 ve 2 çekirdeğinde bir yavaşlama olduğunu görebilirsiniz .
/proc/cpuinfo
, aynı rapor vermezcpuinfo_cur_freq
mi? Açıkça değil! Sorumun kalbi hala çözülmedi. Bir şekilde "gerçek frekans" rapor gibi görünen bu aracı ortaya çıkardı , ancak doğru çalıştığından emin değilim. Algoritması için bazı kaynaklar sağlar, ancak tutarsızlık için gerçekten büyük bir açıklama sağlamaz .