我cpupower
在 ArchLinux 上挣扎。我想将州长设置为ondemand
,甚至设置为conservative
。
首先,如果我这样做$ sudo cpupower frequency-info --governors
,我只会得到performance powersave
.
所以我寻找这样的可用模块
ls -1 /lib/modules/`uname -r`/kernel/drivers/cpufreq/
Run Code Online (Sandbox Code Playgroud)
......我明白了
acpi-cpufreq.ko.gz
amd_freq_sensitivity.ko.gz
cpufreq_conservative.ko.gz
cpufreq_powersave.ko.gz
cpufreq_stats.ko.gz
cpufreq_userspace.ko.gz
p4-clockmod.ko.gz
pcc-cpufreq.ko.gz
powernow-k8.ko.gz
speedstep-lib.ko.gz
Run Code Online (Sandbox Code Playgroud)
因此,首先似乎没有“按需”模块可用。我想念什么?
然后我尝试启用至少保守:
$ sudo modprobe cpufreq_conservative
Run Code Online (Sandbox Code Playgroud)
然后我检查模块是否实际加载
$ lsmod | grep cpufreq
Run Code Online (Sandbox Code Playgroud)
并检查它现在是否可用
$ sudo cpupower frequency-info --governors
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我仍然得到相同的结果:performance powersave
只有,并且如果我尝试启用保守的
$ sudo cpupower frequency-set -g conservative
Run Code Online (Sandbox Code Playgroud)
它说该模块不可用。
所以基本上我有两个问题:
我正在尝试更改笔记本电脑(运行 Linux)上的 CPU 频率,但没有任何成功。
以下是一些细节:
# uname -a
Linux yoga 3.12.21-gentoo-r1 #4 SMP Thu Jul 10 17:32:31 HKT 2014 x86_64 Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz GenuineIntel GNU/Linux
# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
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: 0.97 ms.
hardware limits: 800 MHz - 2.60 …
Run Code Online (Sandbox Code Playgroud) 新的pstate
英特尔驱动程序让我很恼火,因为他们移除了旧的powersave
调节器,让我可以设置最低可用的 CPU 频率,并在安静、寒冷的笔记本电脑中运行数小时或数天的数值模拟。更糟糕的是,他们现在所说powersave
的基本上是旧的调速器ondemand
,即 CPU 频率随着负载而上升的模式,并伴随着该死的风扇噪音:
由于这些策略在驱动程序中实现,因此它们与 cpufreq 缩放调控器实现不同,即使它们在 cpufreq sysfs (scaling_governors) 中具有相同的名称。例如,“性能”策略类似于 cpufreq(TM)“性能”调控器,但“powersave”与 cpufreq“powersave”调控器完全不同。这里的策略类似于 cpufreq "ondemand",其中请求的 P-State 与系统负载相关。
(摘自https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt)
现在,请问有没有其他方法可以将我的 CPU 频率保持在最低水平?这对我来说真的很重要。如果我最终无法设置恒定的最低 CPU 频率,我只是更喜欢将笔记本电脑通过窗户倾倒。这就是我使用笔记本电脑的方式,这就是我想要一台笔记本电脑的用途,而且我已经尝试实现这一目标好几天了!
我正在尝试这个,但它不起作用:
echo 42 | sudo dd of=/sys/devices/system/cpu/intel_pstate/max_pref_pct
Run Code Online (Sandbox Code Playgroud)
将最大速度设置为 42%,它没有任何影响,每当我做某事时,CPU 都会继续运行到 100%。我究竟做错了什么?(我应该重启一些服务还是什么?)
有没有办法得到这个?另外,非英特尔 CPU 允许我这样做吗?我不介意再买一台能解决问题的笔记本电脑。
当我做
sudo watch -n1 cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
我得到 1.8 - 2.7 GHz。它永远不会超过 2.7。
当我这样做时
watch -n1 "cat /proc/cpuinfo | grep MHz"
我得到 768 MHz - 1.8 GHz。它永远不会超过 1.8。
有谁知道发生了什么?
如何在 Ubuntu 上获取 ARM 处理器的当前 CPU 频率?既不帮助/proc/cpuinfo
也不/sys/devices/system/cpu/cpu*/cpufreq
帮助。
事实上,/sys/devices/system/cpu/cpu*/cpufreq
我的Ubuntu系统上没有目录。并且/proc/cpuinfo
两者中都没有 CPU MHz 信息。
平台规格为:NVIDIA® Jetson™ TX2、ubuntu16.04、linux 4.9.18。
有人可以就获取 ARM 处理器的当前 CPU 频率给出一些提示吗?
是否有任何内核配置可能会影响获取当前 CPU 频率?
使用带有 i7-7700HQ(基本时钟 2.8Ghz)和 GTX 1050 的 Lenovo Legion Y520。
我在 linux 中收到 CPU 过热警告,它影响了我在游戏中的表现(在 Payday 2 和 CS:GO 中找到)。我在 Windows 中从来没有遇到过问题。
这是我在尝试解决此问题时发现的:
在 Windows 10 中(使用 aida64)
Windows 在空闲时保持在 3.4 Ghz 左右(不知道为什么在 CPU 使用率不到 3% 的情况下如此之高),温度在 50C 左右。
当给 CPU 施加压力时,温度会缓慢地(在几秒钟内而不是瞬间)从大约 50C 上升到大约 75C 并舒适地保持在那里。压力时时钟速度约为2.9Ghz。利用率始终为 100%。Aida64 不报告节流。受压时,CPU 内核上的电压从大约 1.1 到 0.9 不等。
在 Arch Linux 中(使用 s-tui)
Linux 在空闲时保持在 2.0Ghz 左右,温度在 50C 左右。
这就是奇怪的地方:当给 CPU 施加压力时,温度会立即从 50C 升至 93C 左右。压力时时钟速度正好是 3.4Ghz。利用率始终为 100%。当关闭压力测试时,温度立即回到 50C 左右,就好像什么都没发生过一样。这样做时,笔记本电脑当然不会感觉它加热到 90C+,即使在长时间压力之后也是如此。
这是一张图片,显示了温度、功率和频率如何同时下降。注意在这么短的时间内 cpu 温度变化了多少。
我该如何解决这个限制问题?在 linux …
我的目标是在空闲模式下设置一个低功耗的迷你服务器(不是 HTPC),但在使用时提供良好的性能。重点是数据安全而不是可用性。换句话说:优质零件,但仅用于存储的冗余。
不认为自己有偏见,经过一些研究,我觉得某些 AMD 台式机 APU 会提供很好的价值。
剩下的问题是:
我最近读到我可以通过将调控器设置为“性能”而不是“节能”来提高 CPU 的性能。根据Arch wiki,这将“以最大频率运行 CPU”而不是“最小频率”。
我发现这个措辞令人困惑,所以我也阅读了内核文档。
2.1 性能
CPUfreq 调控器“性能”将 CPU 静态设置为 scaling_min_freq 和 scaling_max_freq 边界内的最高频率。
2.2 节电
CPUfreq 调控器“powersave”将 CPU 静态设置为 scaling_min_freq 和 scaling_max_freq 边界内的最低频率。
“静态”是什么意思?对我来说,它与“动态”形成对比,并暗示频率永远不会改变,即使用 powersave CPU 频率将始终是单个值,等于scaling_min_freq
。然而,情况显然并非如此。我目前默认运行“powersave”。我可以监视 CPU 频率
$ watch grep \"cpu MHz\" /proc/cpuinfo
Run Code Online (Sandbox Code Playgroud)
并看到它们动态变化。
内核文档中的“静态”是什么意思?哪些因素会影响 CPU 频率,这些因素如何随着“省电”和“性能”而变化?那么,从前者到后者有什么意义呢?会使用更高的频率吗?在什么情况下?具体来说,这会影响 CPU 的功耗、热量和使用寿命吗?
根据sensors
,我的 CPU 内核的临界温度是 100°C。使用我的笔记本电脑时,它永远不会超过 95°C(因此,要么我的传感器有缺陷,要么出于某种原因将热节流设置为较低的值,但这并不重要)。我有一个 Intel i7,并且 heatd.service 已启动并正在运行,我使用的是 Arch Linux。
但是 95°C 太热了,我想降低该值。我想在 75 或 80°C 下进行热节流。我认为这会很简单,但显然谷歌上的信息很少,并且 heatd 的配置缺乏文档。
我试过
dbus-send --system --dest=org.freedesktop.thermald /org/freedesktop/thermald org.freedesktop.thermald.SetUserPassiveTemperature string:cpu uint32:80000
Run Code Online (Sandbox Code Playgroud)
正如联机帮助页所暗示的那样,但运行stress
仍然使温度高达 95。
那么如何降低发生热节流的值呢?
观察:
我有一台配备 AMD 双核 CPU (Turion II Neo N40L) 的 HP 服务器,它可以将频率从 800 扩展到 1500 MHz。频率缩放适用于 FreeBSD 9 和带有 Linux 内核 3.5 的 Ubuntu 12.04。但是,当我将 FreeBSD 9 放在 Ubuntu 之上的 KVM 环境中时,频率缩放不起作用。来宾(因此是 FreeBSD)不会检测最小和最大频率,因此当 CPU 占用率更高时不会扩展任何内容。在主机(即 Ubuntu)上,KVM 进程使用了 80% 到 140% 的 CPU 资源,但没有发生频率缩放,频率保持在 800 MHz,尽管当我在同一个 Ubuntu 机器上运行任何其他进程时,按需调节器很快将频率缩放到 1500 MHz!
关注和问题:
我不明白 CPU 是如何虚拟化的,以及是否由来宾执行适当的缩放。是否需要向来宾公开某些 CPU 功能才能使其工作?
Apendix:
在下面的Red Hat发布说明倾向于认为,频率缩放出来工作,即使在虚拟化环境中(参见第6.2.2和6.2.3),认为注未能解决其虚拟化技术与(KVM,Xen的这项工作, 等等。?)
有关信息,cpufreq-info
Ubuntu 上的输出为:
$ cpufreq-info
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, …
Run Code Online (Sandbox Code Playgroud) cpu-frequency ×10
linux ×3
cpu ×2
kernel ×2
temperature ×2
amd ×1
arch-linux ×1
arm ×1
clock ×1
fglrx ×1
freebsd ×1
games ×1
intel ×1
kvm ×1
linux-kernel ×1
radeon ×1
turbo-core ×1
ubuntu ×1