在配备 Ryzen 处理器的 Xubuntu 上,以除“可用频率”以外的频率计时 CPU

在配备 Ryzen 处理器的 Xubuntu 上,以除“可用频率”以外的频率计时 CPU

中央处理器:

$ cat /proc/cpuinfo
processor   : 11
vendor_id   : AuthenticAMD
cpu family  : 23
model       : 96
model name  : AMD Ryzen 5 4600H with Radeon Graphics
stepping    : 1
microcode   : 0x8600104
cpu MHz     : 1397.266
cache size  : 512 KB
physical id : 0
siblings    : 12
core id     : 6
cpu cores   : 6
apicid      : 13
initial apicid  : 13
fpu     : yes
fpu_exception   : yes
cpuid level : 16
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
bugs        : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 5988.99
TLB size    : 3072 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]

操作系统:

Xubuntu 20.10,截至 01/06,所有内容均已更新至最新和最好的版本。

核心:

$ uname -r
5.8.0-34-generic

使用此 Linux 发行版和 CPU 组合,我可以获得以下可用频率:3.00 GHz、1.70 GHz、1.40 GHz。示例:

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  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: 1.40 GHz - 3.00 GHz
  available frequency steps:  3.00 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil
  current policy: frequency should be within 1.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency: 3.00 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: yes
    Boost States: 0
    Total States: 3
    Pstate-P0:  3000MHz
    Pstate-P1:  1700MHz
    Pstate-P2:  1400MHz

我无法运行...比如说 2.9GHz 或甚至 800MHz 的频率。 我想要详细了解我的 CPU 的运行频率。

我试过了禅宗国度

$ ./zenstates.py -p 2 -f 20 -d 8 -v 66 --enable
$ ./zenstates.py -l
P0 - Enabled - FID = 78 - DID = 8 - VID = 35 - Ratio = 30.00 - vCore = 1.21875
P1 - Enabled - FID = 66 - DID = C - VID = 60 - Ratio = 17.00 - vCore = 0.95000
P2 - Enabled - FID = 20 - DID = 8 - VID = 66 - Ratio = 8.00 - vCore = 0.91250
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Enabled
C6 State - Core - Enabled

根据 cpupower 工作(并非事实):

analyzing CPU 0:
  driver: acpi-cpufreq
  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: 1.40 GHz - 3.00 GHz
  available frequency steps:  3.00 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil
  current policy: frequency should be within 1.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency: 1.70 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: yes
    Boost States: 0
    Total States: 3
    Pstate-P0:  3000MHz
    Pstate-P1:  1700MHz
    Pstate-P2:  800MHz

但实际上你不能用 cpupower 改变到 800MHz。最低可以达到 1.4GHz。

我也尝试过cpufrequtils,但没什么效果。

我试过了ignore_ppc

我目前遇到一个与 CPU 频率有关的有趣错误:

我的 CPU 从长达一天的挂起状态唤醒后以 400MHz 运行。这是怎么回事?

現在 CPU 頻率说的是 3GHz,这是错误的。我知道这一点有两个原因:

1.

watch -n.1 'cat /proc/cpuinfo|grep MHz'

$ cat /proc/cpuinfo|grep MHz
cpu MHz     : 399.221
cpu MHz     : 399.183
cpu MHz     : 399.007
cpu MHz     : 399.201
cpu MHz     : 399.221
cpu MHz     : 399.216
cpu MHz     : 399.113
cpu MHz     : 399.198
cpu MHz     : 398.940
cpu MHz     : 399.163
cpu MHz     : 399.199
cpu MHz     : 399.072
  1. 我的计算机运行缓慢,我没有运行任何可能导致计算机运行速度比正常运行慢的程序。

尝试恢复正常:

1.

cpupower frequency-set --max 3GHz
cpupower frequency-set --governor ondemand

cpupower frequency-set --governor performance

根据 cpupower,命令有效。但我的电脑仍然以 400MHz 运行。

  1. 我重新启动进入 BIOS,没有做任何更改,退出 BIOS,启动进入 Xubuntu,CPU 频率仍然是 400MHz。

下面修复了这个问题:

我重新启动进入 Windows,重新启动回到 Xubuntu,CPU 频率恢复正常。

这可能是 tlp 的错误。这是我的 tlp 配置/etc/tlp.conf,我只列出了未注释的内容:

TLP_ENABLE=1
TLP_PERSISTENT_DEFAULT=1
SCHED_POWERSAVE_ON_AC=1
WIFI_PWR_ON_AC=on
WIFI_PWR_ON_BAT=on
USB_AUTOSUSPEND=1

这里有一个人也遇到了同样的 CPU 暂停错误。 这是另一个人,有同样的错误。

答案1

如果目标是让 CPU 核心以非常特定的速度运行,那么可能能够使用这个问题的解决方案在这里基本上,它的工作原理如下:

  1. cpufreq从安装Ubuntu 的存储库
  2. 看看cpufreq-info已经实施了哪些调控措施和限制
  3. 调用cpufreq-set --cpu 0 —min 800MHz --max 800MHz计算机上的每个 CPU 核心,将 MHz(或 GHz)值设置为所需的限制

我从未尝试过用硬性最小值来控制 CPU,因此不确定您是否可以按照您想要的粒度级别来限制系统。

相关内容