
私がするとき
sudo watch -n1 cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
1.8~2.7GHzが出ます。絶対2.7を超えません。
私がするとき
watch -n1 "cat /proc/cpuinfo | grep MHz"
768MHz~1.8GHzを得る。絶対1.8を超えません。
何が起こっているのか知っている人はいますか?
答え1
ほとんどのCPUには、バッテリ/電力使用量を節約するために速度を調整する機能があります。それは一般的に呼ばれるCPU周波数スケーリング。 CPUのリアルタイム速度は次のように報告されます。
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
絶対(最大)CPU速度は次のように報告されます。
$ cat /proc/cpuinfo
具体的には、次の行は次のようになります。
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
表示された行cpu MHz
いいえCPUの最大速度を表示します。この値は現在の速度です。マルチコアシステム(例: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)です。
CPUの拡張と調整?
システムのモードをスケーリングレギュレータと呼びます。車のスピードレギュレータに似ています。このコマンドを使用して、使用可能なコマンドを確認できます。
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
現在アクティブなアイテムを表示することもできます。
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
メモ:私が表示するコマンドには最初のCPUのみが含まれていますcpu0
。*
パスでaを置き換えると、すべてのコアを選択的に表示できますcpu1
。
知事プロファイルに使用可能な最大および最小CPU速度を表示できます。
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
詳細については、次のタイトルのこの資料を参照してください。LinuxでCPU周波数を調整するには、cpufreqを使用してください。。
cpuinfo_cur_freqはどうですか?
このパラメータは、CPUが現在動作している方法に関連する有用なパラメータではなく、CPU仕様および現在存在するプロファイルに関連しています。実際の操作テレメトリにはカーネル調整可能項目を使用してください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
チューナブルでは、コア#1と2の速度が遅くなることがわかります。