cpuinfo_cur_freq와 /proc/cpuinfo가 다른 숫자를 보고하는 이유는 무엇입니까?

cpuinfo_cur_freq와 /proc/cpuinfo가 다른 숫자를 보고하는 이유는 무엇입니까?

내가 할 때

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의 속도가 느려지는 것을 볼 수 있습니다 .

관련 정보