A maioria das CPUs agora inclui a capacidade de ajustar sua velocidade para ajudar a economizar no uso da bateria / energia. É normalmente chamado de escala de frequência da CPU . A velocidade em tempo real da CPU é relatada por isso:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
A velocidade absoluta (máx.) da CPU está sendo relatada por isso:
$ cat /proc/cpuinfo
Especificamente, esta linha:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
A linha que mostra cpu MHz
não mostra a velocidade máxima da sua CPU. Este valor é a sua velocidade atual. Em um sistema multi-core, como um i7 ou i5, você pode ver isso com este comando:
$ cat /proc/cpuinfo |grep MHz
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 2667.000
Você pode, no entanto, ver a velocidade absoluta (máx.) com este comando:
$ 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
NOTA: o número de núcleos que possui, NUMAS node0 CPU(s)
é 4, ou seja, 0,1,2 e 3.
Escalonamento da CPU & governando?
O modo em que seu sistema está é chamado de regulador de escala. Semelhante a um governador em um carro. Você pode ver quais estão disponíveis com este comando:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
Você também pode ver qual deles está ativo no momento:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
OBSERVAÇÃO: Os comandos que estou mostrando incluem apenas o primeiro cpu, cpu0
. Você pode substituir em *
no caminho para ver todos os núcleos ou você pode ver seletivamente cpu1
, etc.
Você pode ver o máximo & Velocidades mínimas de CPU disponíveis para o perfil do seu governador:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
Mais detalhes estão disponíveis neste artigo, intitulado: escala de frequência da CPU no Linux com cpufreq .
Então e cpuinfo_cur_freq?
Este parâmetro tem mais a ver com a especificação da CPU e em qual perfil ela está atualmente, em vez de qualquer coisa útil em relação a como a CPU está operando atualmente. Para telemetria operacional real, usaria os sintetizadores do kernel scaling_*
.
Exemplo
Eu coloquei o seguinte script em conjunto para mostrar os Núcleos da CPU em coluna para que fosse mais fácil ver como eram os vários ajustáveis do Kernel:
#!/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
Quando você o executa, obtém a seguinte saída:
$ ./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
Você pode ver que o scaling_cur_freq
ajustável está mostrando uma lentidão no núcleo # 1 & 2.