를 사용하면 cpupower
임의의 최소 및 최대 주파수를 설정할 수 있습니다. 그러나 CPU는 이 값을 수행할 수 있는 다음 주파수 범위로 반올림합니다(이것은 주파수 승수 때문이라고 생각합니다).
나는 cpupower나 다른 도구나 파일을 통해 사용 가능한 모든 주파수 목록을 얻는 방법을 찾지 못했습니다. 이런 정보가 있어서 좋네요.
내가 찾은 유일한 것은 cpupower frequency-info
(Google에 따르면) 그러한 정보를 포함하는 줄이 있어야 하는데 내 시스템에는 없다는 것입니다. 이것은 내 결과입니다.
~ cpupower frequency-info
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 2.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 2.80 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
이것은 내 CPU 정보입니다.
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x84
cpu MHz : 2791.480
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves ibpb ibrs stibp dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bugs : cpu_meltdown spectre_v1 spectre_v2
bogomips : 5618.00
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
답변1
여기저기 검색해 봤는데 댓글에서 알 수 있듯이 빈도표는 더 이상 유지되지 않는 것 같습니다.
주파수 규모가 선형이라고 가정하면 카탈로그를 보면 대략적으로 알 수 있습니다.
입력을 돕기 위해 다음 별칭을 만듭니다.
alias cpuinfo="paste <(ls *) <(cat *) | column -s $'\t' -t"
먼저 주파수 단계 수를 찾으십시오.
$ cd /sys/devices/system/cpu/intel_pstate
$ cpuinfo
max_perf_pct 100
min_perf_pct 22
no_turbo 0
num_pstates 28
status active
turbo_pct 33
에 의해 결정되는 28개의 주파수 단계가 있습니다 num_pstates
.
이제 Turbo Boost 활성화/비활성화 상태에 따라 변경될 수 있는 최소 및 최대 주파수 MHz를 살펴보십시오.
cd /sys/devices/system/cpu/cpu0/cpufreq
$ cpuinfo
affected_cpus 0
cpuinfo_max_freq 3500000
cpuinfo_min_freq 800000
cpuinfo_transition_latency 4294967295
energy_performance_available_preferences default performance balance_performance balance_power power
energy_performance_preference balance_performance
related_cpus 0
scaling_available_governors performance powersave
scaling_cur_freq 837225
scaling_driver intel_pstate
scaling_governor powersave
scaling_max_freq 3500000
scaling_min_freq 800000
scaling_setspeed <unsupported>
나중에 자동으로 빈도를 표시하는 스크립트를 작성할 수도 있지만 이 작업은 수동으로 수행하십시오.
- 속도=(
max
-min
)/steps
. 예: (3500-800)/28=96.428 - 28회 반복합니다: 속도 = 마지막 속도 + 단계 속도. 예를 들어
800.00
,,,,,,, ...896.42
992.856
1089.284
1185.712
1282.14
빈도를 나열하는 스크립트
이 함수를 복사하여 터미널에 붙여넣을 수 있습니다.
ApproximateFrequencies () {
NumSteps=$(cat /sys/devices/system/cpu/intel_pstate/num_pstates)
MinFreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq)
MaxFreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq)
LastFreq=$MinFreq
StepRate=$((( $MaxFreq - $MinFreq ) / $NumSteps))
for ((n=0;n<=$NumSteps;n++)); do
echo $LastFreq
LastFreq=$(( $LastFreq + $StepRate))
done
}
그런 다음 다음을 사용하여 함수를 실행합니다 ApproximateFrequencies
.
800000
896428
992856
. . .
3403556
3499984
column
설치한 경우 다음 명령을 통해 파이프하는 것이 좋습니다.
$ ApproximateFrequencies | column
800000 1089284 1378568 1667852 1957136 2246420 2535704 2824988 3114272 3403556
896428 1185712 1474996 1764280 2053564 2342848 2632132 2921416 3210700 3499984
992856 1282140 1571424 1860708 2149992 2439276 2728560 3017844 3307128
답변2
내가 /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
확인할 수 있어
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
이는 인텔에만 국한되지 않습니다. 둥근 것인지 모르겠습니다.
커널 버전: 5.4.0-74
관련된 문서https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt