thinkfan 控制在需要时没有充分发挥风扇的潜力

thinkfan 控制在需要时没有充分发挥风扇的潜力

我有一台 Thinkpad x201,由于环境温度的原因,它过热得非常快,最终在没有任何预兆的情况下死亡(这真的让我很恼火)。

室外温度为 34 摄氏度,而计算机在没有重要任务时温度会升至 80 摄氏度,而当任务较重时,温度会达到(每秒 1 度)100 摄氏度。

我遵循指南,提早启动风扇,以便它保持恒定的温度,或者在临界温度下使用最大速度,但它仍然保持自动值。

技术方面

我使用的资源位于这里:http://staff.science.uva.nl/~kholshei/thinkfan_guide/

我调整了这些值,以便风扇能够在较低的温度下启动,从 0 度开始,到 0 级的 20 度,依此类推。

我对 /etc/thinlfan.conf 的配置是:

$ tail -n 15 /etc/thinkfan.conf

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input

(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
(3, 24, 28)
(4, 26, 33)
(5, 30, 40)
(6, 36, 49)
(7, 44, 62)
(128, 60, 65)
(129, 63, 100000)

最后两个值是实验性的。

当我跑步时:

$ sudo thinkfan -n

WARNING: Using default fan control in /proc/acpi/ibm/fan.

当我跑步时:

$ echo level disengaged | sudo tee /proc/acpi/ibm/fan 

风扇以大约 6500 RPM 的速度旋转,这实际上是有效的(温度缓慢下降),但在切换回自动后,它会保持在这个水平上大约 5 秒钟。

我的问题是:在这些炎热的日子里,我怎样才能手动将风扇速度设置为最大速度/我怎样才能调整数值以使温度不会升高太多?

今天是我第一次尝试这个,所以不要指望我知道除了设置一个每秒设置级别的 cron 作业之外我还能尝试什么 - 这是一个糟糕的想法。

最后一件事:我不能停止工作,最重要的是我更喜欢偶尔更换风扇而不是处理器。

感谢您的帮助和理解,如果您需要任何其他详细信息,请告诉我。

哦...这是我的 lsb_release:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:        13.10
Codename:       saucy

...和 ​​uname:

$  uname -r      
3.11.0-23-generic

答案1

我在我的联想 Thinkpad x220 中使用过(这是一个更新的答案,与具有systemd

sudo -i
  • 安装thinkfan

    apt install thinkfan
    
  • 配置内核模块

    echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkfan.conf
    
  • 重新加载内核模块

    modprobe thinkpad_acpi
    
  • 配置默认的 thinkfan 配置

    sed -i 's|START=no|START=yes|' /etc/default/thinkfan
    sed -i 's|DAEMON_ARGS="-q"|DAEMON_ARGS="-q -b 1 -s 15"|' /etc/default/thinkfan
    
  • 检查你的传感器

    find /sys/devices -type f -name "temp*_input"
    

以下是我在 Lenovo Thinkpad x220 上的结果:

/sys/devices/virtual/hwmon/hwmon0/temp1_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
  • /etc/thinkpad.conf根据以上结果写入

    tp_fan /proc/acpi/ibm/fan
    hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input
    hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
    hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
    hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
    (0,     0,      40)
    (1,     32,     55)
    (2,     54,     66)
    (3,     65,     76)
    (4,     75,     80)
    (5,     78,     85)
    (6,     82,     88)
    (7,     85,     32767)
    
  • 启用该服务,以便它在每次启动时自动启动并放弃权限。

    systemctl enable thinkfan
    exit
    
  • 重启笔记本

    systemctl enable thinkfan
    
  • 重启后,检查服务

    systemctl status thinkfan.service
    

结果将会是这样的:

● thinkfan.service - simple and lightweight fan control program
   Loaded: loaded (/lib/systemd/system/thinkfan.service; enabled; vendor preset: enabled)
   Active: active (running) since Jum 2016-10-07 20:09:30 WIB; 28min ago
  Process: 2494 ExecStart=/usr/sbin/thinkfan (code=exited, status=0/SUCCESS)
 Main PID: 2496 (thinkfan)
   CGroup: /system.slice/thinkfan.service
           └─2496 /usr/sbin/thinkfan

Okt 07 20:09:30 thinkpad-x220 systemd[1]: Starting simple and lightweight fan control program...
Okt 07 20:09:30 thinkpad-x220 thinkfan[2494]: thinkfan 0.9.1 starting...
Okt 07 20:09:30 thinkpad-x220 thinkfan[2494]: Daemon PID: 2496
Okt 07 20:09:30 thinkpad-x220 systemd[1]: Started simple and lightweight fan control program.

答案2

尝试此配置,它在联想 ThinkPad L512 / L520 上运行良好:

安装 thinkfan

sudo apt-get install -y thinkfan

配置内核模块

echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkpad_acpi.conf

重新加载内核模块

modprobe -r thinkpad_acpi && modprobe thinkpad_acpi

配置 thinkfan

sudo sed -i 's|START=no|START=yes|' /etc/default/thinkfan
sudo sed -i 's|DAEMON_ARGS="-q"|DAEMON_ARGS="-q -b 1 -s 15"|' /etc/default/thinkfan

cat <<EOF> /etc/thinkfan.conf
hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input
(0, 0,  65)
(1, 65, 70)
(2, 70, 75)
(3, 75, 80)
(4, 80, 85)
(5, 85, 90)
(7, 90, 32767)
EOF

重新启动 thinkfan 守护进程

/etc/init.d/thinkfan restart

答案3

经过进一步的研究,我终于让它按我想要的方式工作了。

自定义温度阈值 - 风扇速度配置

我已经从 apt 安装thinkfan(说实话我不记得它是否已经安装:-S)

确保检查是否有一个名为thinkfan

命令行:

ps -ef | grep thinkfan

如果没有的话,安装

命令行:

sudo apt-get install thinkfan 

它的配置位于/etc/thinkfan.conf

温度-速度映射定义如下:

...
(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
...

每个组定义以下值(级别、最小温度、最大温度),另一个规则是组之间必须相互重叠。

级别定义为一个整数,而不是我最初认为的字符串,如下所示:

  • 0 - 7 - 八个等级点,从 0 到 ~4200RPM
  • 126——最大速度
  • 127-脱离~6900RPM

我的配置/etc/thinkfan.conf现在看起来如下:

(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
(3, 24, 28)
(4, 26, 33)
(5, 30, 40)
(6, 36, 49)
(7, 44, 52)
(126, 50, 59)
(127, 57, 100000)

温度值或多或少是根据以下图表计算出来的:传感器这很清楚地表明我的风扇效率不高,但考虑到笔记本电脑已经很旧了,我认为这是正常的。

答案4

为了调试风扇速度和温度,我使用了这个方便的单行代码。它可能会有帮助。

while true; do echo -e "\n\n\n####################\n$(sensors)\n\n###\n$(uptime)\n###\n$(cat /proc/cpuinfo | grep -i "mhz")\n####################"; sleep 1; done

需要流明传感器安装并配置。

让我解释一下这个循环。

这是一个 while 循环,只要状态为 true ,它就会运行 while true。由于状态在循环内不会改变,因此它基本上会永远运行。要退出循环,您需要使用ctrl+c键盘上的 取消 按钮将其取消。

因此,当状态为真时,会发生do一些事情。在本例中,echo对参数进行操作-e。检查man echo以了解它的作用。首先,我添加了一些换行符\n和一些井号,以便在视觉上更好地区分您正在查看的内容。

我想要回显的下一个结果是 的结果sensors。当您sensors在终端中运行时,它会返回某个结果。因此,bash您可以在 中echo回显某个结果,并将$()其环绕起来。

然后我再次想要进行一些分离以便区分信息。

然后我想看看计算机上当前的负载是多少。所以我回显了 的结果uptime

然后我又想要一些分离。

为了了解 CPU 当前的运行速度,我正在研究/proc/cpuinfogrep使用-i (请查看man grep详细信息)因为mhz这就是我想要看到的信息。

使用;A 结束循环的第一部分。由于 while 循环对处理事件的频率没有限制,因此它会运行得非常快。因此我添加了一个sleep -1让它暂停一秒钟。我还用一个来结束这个命令;,并告诉循环它可以立即结束,我在done最后用一个来结束循环。

我希望这个解释容易理解。

相关内容