即使明显需要,冷却风扇也从未达到高速

即使明显需要,冷却风扇也从未达到高速

在 Chrome 上观看视频时,CPU 消耗会非常高(这显然不应该)。这是由于最近出现了一些退化(以前不会发生),但这不是重点。我们假设有一些东西消耗了大量 CPU。

我禁用了 intel_powerclamp 和 intel_rapl,因此当 CPU 消耗变高时,我希望冷却风扇能够尽可能快地加速以冷却 CPU。

相反,风扇永远无法达到最高速度,甚至无法接近最高速度。整个系统速度变慢,变得无响应,与启用 intel_powerclamp 时的情况非常相似。但 top 中没有显示任何“kidle_inject”进程。

冷却风扇转速不够快的证据是,如果我在系统启动前(在启动菜单中)重新启动计算机,风扇就会疯狂旋转。这证明 (1) 风扇能够比操作系统运行时旋转得更快,以及 (2) 硬件“认为”温度确实需要它,直到操作系统启动并认为它知道得更多。

对此我只能想到两种解释:

A) 某些软件配置限制了风扇速度(可能是因为配置时假设 intel_powerclamp 也在那里,并且会完成一半的工作)。因此,由于风扇当前的速度不足以冷却 CPU,并且由于 intel_powerclamp 不在限制 CPU 使用,因此 CPU 的一些内部硬件保护启动并对其进行节流,以防止其烧坏(或达到导致其突然关闭的硬限制) OF

B) 除了我已禁用的 intel_powerclamp 和 intel_rapl(我了解 intel_powerclamp 如何工作,但我不知道 intel_rapl 如何工作)之外,还有一些其他驱动程序以类似的方式工作,降低 CPU 速度以减少电量消耗。

在情况 (A) 中,我需要修复配置,以便风扇能够以最大容量运行,看看这是否足以降低温度并防止硬件保护启动。

如果情况 (B),我可能想尝试

[B1] 禁用其他软件或半软件的 CPU 节流机制,看看风扇是否足够,或者

[B2] 以某种方式调整一些权重因子或阈值或优先级配置,以便在 CPU 节流启动之前允许风扇运行得更快(并且甚至希望防止这种情况发生)。

有人知道如何确定它是(A)还是(B)以及如何解决这个问题?

我阅读了有关配置 Thermald 的信息https://wiki.ubuntu.com/Kernel/PowerManagement/ThermalIssues但它非常不清楚,并且没有实际的例子。

答案1

我刚刚用 thermald 完成了这个练习。首先,我应该指出,即使在最新版本的 16.04 中,thermald 也存在问题,因为它无法读取其配置文件。这个问题现在已经修复,因此请确保您已安装所有更新。

此外,您引用的页面非常好,还包含一个示例 thermal-conf.xml 配置文件。

接下来,假设您已经安装了 thermald,请停止该进程,并在 --no-daemon 模式下重新启动它,并仔细观察输出。它将为您提供配置您自己的 thermal-conf.xml 文件所需的大部分答案。注意 cdev(冷却设备)等。

sudo 服务 thermald 停止

sudo thermald --no-daemon --loglevel=debug

这是我的自定义 thermal-conf.xml 文件的副本,供您查看:

<?xml version="1.0"?>
<ThermalConfiguration>
<Platform>
    <Name>Toshiba Laptop</Name>
    <ProductName>*</ProductName>
    <Preference>QUIET</Preference>
    <ThermalSensors>
            <ThermalSensor>
                    <Type>x86_pkg_temp</Type>
                    <Path>/sys/class/thermal/thermal_zone0/</Path>
                    <AsyncCapable>1</AsyncCapable>
            </ThermalSensor>
    </ThermalSensors>
    <ThermalZones>
            <ThermalZone>
                    <Type>cpu package</Type>
                    <TripPoints>
                            <TripPoint>
                                    <SensorType>x86_pkg_temp</SensorType>
                                    <Temperature>59000</Temperature>
                                    <type>passive</type>
                                    <ControlType>PARALLEL</ControlType>
                                    <CoolingDevice>
                                            <index>0</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>1</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>2</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>3</index>
                                            <type>Processor</type>
                                            <influence> 10 </influence>
                                            <SamplingPeriod> 5 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>4</index>
                                            <type>intel_powerclamp</type>
                                            <influence> 30 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>5</index>
                                            <type>rapl_controller</type>
                                            <influence> 50 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>6</index>
                                            <type>intel_pstate</type>
                                            <influence> 40 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                                    <CoolingDevice>
                                            <index>7</index>
                                            <type>rapl_controller_dram</type>
                                            <influence> 50 </influence>
                                            <SamplingPeriod> 10 </SamplingPeriod>
                                    </CoolingDevice>
                            </TripPoint>
                    </TripPoints>
            </ThermalZone>
    </ThermalZones>
</Platform>
</ThermalConfiguration>

相关内容