cpufreq-info 与 /proc/cpuinfo 不同?

Eva*_*van 6 linux performance cpu-usage

我有一台服务器,我想确保它始终以最大速度运行,从不处于节能模式。我尝试了一些策略(除了重新启动和更改 bios 中的设置,我必须为几百台服务器执行此操作)但是我从cpufreq-info. 例如:

root@host:~# cpufreq-info -c 0
cpufrequtils 007:cpufreq-info (C) Dominik Brodowski 2004-2009
请向 cpufreq@vger.kernel.org 报告错误和错误。
分析 CPU 0:
  驱动程序:acpi-cpufreq
  以相同硬件频率运行的 CPU:0
  需要通过软件协调其频率的 CPU:0
  最大转换延迟:10.0 us。
  硬件限制:1.20 GHz - 2.20 GHz
  可用频率步长:2.20 GHz、2.20 GHz、2.10 GHz、2.00 GHz、1.90 GHz、1.80 GHz、1.70 GHz、1.60 GHz、1.50 GHz、1.40 GHz、1.30 GHz、1.20 GHz
  可用的 cpufreq 调控器:conservative、ondemand、userspace、powersave、performance
  当前政策:频率应在 2.00 GHz 和 2.20 GHz 之间。
                  调控器“性能”可以决定使用哪种速度
                  在这个范围内。
  当前 CPU 频率为 1.20 GHz(通过调用硬件断言)。
  cpufreq 统计信息:2.20 GHz:6.50%、2.20 GHz:0.24%、2.10 GHz:0.34%、2.00 GHz:0.05%、1.90 GHz:0.04%、1.80 GHz:0.03%、1.06GHz%3.060GHz , 1.50 GHz:0.03%, 1.40 GHz:0.03%, 1.30 GHz:0.03%, 1.20 GHz:92.66% (8080636)

请注意,最低速度显示为“2.00 GHz”,并且调速器设置为“性能”,但当前 CPU 频率为1.20 GHz。但是,如果我只查看 /proc/cpuinfo,该值始终为 ~2.2 GHz:

root@host:~# egrep 'MHz|Xeon' /proc/cpuinfo ; cpufreq-info -c 0
型号名称 : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
CPU 兆赫:2200.000
型号名称 : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
CPU 兆赫:2201.000

其中哪个是正确的?我相信哪个?除了 BIOS 更改之外,还有什么方法可以保证最大性能模式?就其价值而言,这是带有此内核的 Ubuntu 12.04:

Linux host 3.2.0-76-generic #111-Ubuntu SMP Tue Jan 13 22:16:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

Mar*_*ner 6

我几乎确信您的 BIOS 将您的 CPU 限制为 1.20 GHz。在内核中有两个值:

  1. scale_cur_freq 是 cpufreq 驱动程序认为它已请求的频率。/proc/cpuinfo 包含此值。它调用 cpufreq_quick_get() 函数。

  2. cpuinfo_cur_freq 是实际编程到 CPU 中的频率。cpufreq-info 正在使用此值,如“通过调用硬件而断言”所示。(它最终调用 __cpufreq_get()。)如果 cpuinfo_cur_freq 不可用,它将回退到 scaling_cur_freq。

+1 关于 Matt 对大规模 BIOS 更新的评论。例如,HP Proliant DL 类服务器允许您在线更改功率调节。也许您的硬件具有类似的功能。


Mat*_*att 5

BIOS 更改是保证最佳性能的最佳方式,但某些硬件控制的频率缩放是不可避免的(热节流)。

这是英特尔关于设置 CPU 频率的帖子。在一定程度上可以在用户和操作系统级别控制 CPU 频率。以下是来自 Arch Linux 的一些关于频率缩放的附加信息,您可能会发现这些信息很有价值。

在 BIOS 方面,一组服务器的大量 BIOS 更新可能可以使用独立的管理接口执行,例如专用的智能平台管理接口 (IPMI) NIC 或可编写脚本的 KVM 系统。