计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1050|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[硬件相关] 超微主板风扇调速指南:IPMI配置与自动化

[复制链接 Copy URL]

196

帖子

5

威望

1211

eV
积分
1507

Level 5 (御坂)

本帖最后由 wxyhgk 于 2024-10-7 19:12 编辑


说明:
本文由 ChatGPT 和 Notion AI 辅助完成

主板:  超微 h11dsi-nt
系统:Ubuntu22.04




1. IPMI 接口配置指南
1.1 IPMI 接口连接
将下面的 IPMI 接口 和 网口 都接入到路由器上

1.2 IPMI 功能概述
许多超微服务器都具备了两个网卡,其中一个便是 IPMI 使用的。

这个网口直接由服务器底层硬件进行管理,在操作系统层面不可见,可以实现截屏、服务器启停等控制功能,也包括设置风扇转速。

IPMI 网口可以设置为静态 IP 或者 DHCP;与这个网口处于同一个路由器的主机都可以通过 IPMI 对服务器进行管理。

1.3 IPMI 网络配置
IPMI 的 IP 和主机的 IP ,可以到路由器上去看 IP 地址



这里的 IPMI 的 IP 是 192.168.31.252,记住这个 IP,后面我们需要用这个来登录什么的


1.4 IPMI 登录认证
IPMI 一般需要用户名和密码进行认证,超微服务器一般默认的用户名和密码均为 ADMIN

可以通过网页登录,看到后台信息
IPMI 后台可以控制的东西很多,这里我们主要以控制风扇为主
2. IPMI 风扇设置
2.1 ipmitool 安装
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具。

在 Ubuntu 系统上使用下面的命令,安装 ipmitool ,方便后面管理风扇什么的
  1. sudo apt install ipmitool -y
复制代码

2.2 系统内置的风扇模式

超微主板提供了几种预设的风扇控制模式,可以通过IPMI网页后台进行配置。

每种模式都有其特定的用途和特点。

方式1:通过网页


风扇模式描述适用场景
标准模式(Standard)基础风扇速度为 50% 的 PWM 占空比,根据系统温度在 50-100% 之间调节。适合大多数常规使用场景
全速模式(Full Speed)风扇始终以全速运行。适合需要最大冷却效果的高负载场景
最优转速模式(Optimal)基础风扇速度为 30% 的 PWM 占空比,范围为30-100%,根据需要调节。适合低负载或需要节能的场景
高负载IO模式(Heavy IO)将 FANA 和 FANB 设置为 75%PWM 占空比,其他风扇使用标准模式。适合有大量 PCI 设备或高 IO 负载的场景



方式2:通过命令行
除了使用网页后台,您还可以通过IPMI命令行工具来设置这些模式。以下是设置命令的通用格式:
  1. ipmitool -H IPMI_IP -U USERNAME -P PASSWORD raw 0x30 0x45 0x01 MODE_HEX
复制代码

其中,MODE_HEX 为相应模式的十六进制代码:

模式十六进制代码
Standard(标准模式)0x00
Full(全速模式)0x01
Optimal(最优转速模式)0x02
Heavy IO(高负载IO模式)0x03

例如,要将风扇模式设置为全速模式,您可以使用以下命令:

  1. ipmitool -H 192.168.31.252 -U ADMIN -P ADMIN raw 0x30 0x45 0x01 0x01
复制代码

请注意,IP地址、用户名和密码应替换为你的IPMI设置。

2.3 风扇转速命令说明
这里以超微 h11-dsi-nt 主板为例子说明



上面的图中



- 红色部分是周边设备,对应FAN1,FAN2…FAN6

ipmitool -H 192.168.31.252 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x01 0x24

0x00 表示对周边设备的风扇调速







- 绿色部分是系统区域,对应FANA,FANB,区域一般为负责CPU、GPU的风扇


ipmitool -H 192.168.31.252 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x00 0x24

0x01 表示对系统区域的风扇调速






- 关于上面命令的说明
    - -U 和-P 分别指定 IPMI 的用户名和密码
    - 0x24 是 16 进制的,0x24 代表风扇转速设置成 36%



注意上面的FANA,FANB,FAN1~FAN6的功能,不同主板不一样,具体的需要看主板的说明书

2.4 风扇的阈值调整
在后台这里可以看到风扇的阈值,如果你的转速低于阈值,那么就会自动提高转速,

那么就会出现这种现象:风扇一会儿低速,一会儿满速运行,非常烦人



对于普通风扇其实没这种问题,但是对于猫头鹰风扇,这个风扇转速本来就地,

那么就会一会儿快,一会儿慢速,我们可以用通过下面的命令来调速

  1. ipmitool -I lanplus -H 192.168.31.252 -U ADMIN -P ADMIN sensor thresh FANA lower 100 200 300
复制代码


这里是调节 FANA 这个风扇的阈值是 100,200,300 的转速,其他的风扇可以调整成一样的

3. 自动化脚本

在不同的的季节 和不同的使用场景下,我们可能需要调整风扇的转速以达到最佳的散热效果和噪音控制。例如


夏季:由于环境温度较高,可能需要将风扇速度调高以保证足够的散热。
冬季:环境温度较低时,可以适当降低风扇速度以减少噪音。


如果服务器放置在噪音敏感的环境中,在保证足够散热的同时尽量降低风扇速度,实际上满速运行的时候就是会吵,只能说可以控制一点

我们可以写一个 shell 脚本,实现根据 CPU 的温度,控制风扇的转速。

下面的脚本主要是用于 夏天,其实冬天或者秋天的话,用服务器自带的优化模式就够了

  1. #!/bin/bash

  2. IPMI_HOST="192.168.31.252"
  3. IPMI_USER="ADMIN"
  4. IPMI_PASS="ADMIN"

  5. # 初始风扇速度级别:1 = 低, 2 = 中, 3 = 高, 4 = 全速
  6. CUR_FAN_SPEED_LEVEL=1

  7. # 将风扇控制模式设置为手动(Full Speed Mode)
  8. ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x45 0x01 0x01
  9. sleep 2

  10. # 设置初始风扇速度(低档,设置为20%)
  11. ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x01 0x14
  12. sleep 2

  13. # 获取温度函数
  14. get_temp() {
  15.     # 获取两个 CPU 的温度并取最大值
  16.     temps=$(sensors | grep "Tctl" | awk '{print $2}' | sed 's/+//g' | sed 's/°C//g' | awk -F. '{print $1}')
  17.     echo "$temps" | sort -nr | head -n 1
  18. }

  19. while true; do
  20.     TEMP=$(get_temp)
  21.     if [ -z "$TEMP" ] || [ "$TEMP" -eq 0 ]; then
  22.         echo "$(date +"%F %T") 获取温度失败,退出"
  23.         exit 100
  24.     fi
  25. # 超过 70 度的风扇设置
  26.     if [ "$TEMP" -ge 70 ]; then
  27.         if [ "$CUR_FAN_SPEED_LEVEL" -ne 4 ]; then
  28.             echo "$(date +"%F %T") 温度: $TEMP 风扇速度: 4(100%)"
  29.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x01 0x64  # 设置为100%
  30.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x00 0x64  # 设置为100%
  31.             CUR_FAN_SPEED_LEVEL=4
  32.         fi
  33. # 超过 65 度的风扇设置
  34.     elif [ "$TEMP" -ge 65 ]; then
  35.         if [ "$CUR_FAN_SPEED_LEVEL" -ne 3 ]; then
  36.             echo "$(date +"%F %T") 温度: $TEMP 风扇速度: 3(80%)"
  37.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x01 0x50  # 设置为80%
  38.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x00 0x50  # 设置为60%
  39.             CUR_FAN_SPEED_LEVEL=3
  40.         fi
  41.    # 超过 55 度的风扇设置
  42.     elif [ "$TEMP" -ge 55 ]; then
  43.         if [ "$CUR_FAN_SPEED_LEVEL" -ne 2 ]; then
  44.             echo "$(date +"%F %T") 温度: $TEMP 风扇速度: 2(60%)"
  45.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x01 0x3C  # 设置为60%
  46.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x00 0x3C  # 设置为60%
  47.             CUR_FAN_SPEED_LEVEL=2
  48.         fi
  49.     else
  50.    # 超过 低于 55 度的风扇设置
  51.         if [ "$CUR_FAN_SPEED_LEVEL" -ne 1 ]; then
  52.             echo "$(date +"%F %T") 温度: $TEMP 风扇速度: 1(20%)"
  53.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x01 0x14  # 设置为20%
  54.             ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x30 0x70 0x66 0x01 0x00 0x14  # 设置为20%
  55.             CUR_FAN_SPEED_LEVEL=1
  56.         fi
  57.     fi
  58.     sleep 60
  59. done
复制代码

在夏天可以将上面的代码保存为 fans.sh ,然后使用命令

  1. bash fans.sh > fan_control.log 2>&1 &
复制代码

来后台运行

与此同时如果想关闭这个脚本程序,可以使用以下命令:

  1. pkill -f fans.sh
复制代码

这个命令会直接查找并终止名为fans.sh的脚本进程。


4. 参考文章
1. https://www.licc.tech/article?id=33
2. https://forums.servethehome.com/ ... n-speed-control.20/






评分 Rate

参与人数
Participants 5
eV +24 收起 理由
Reason
biogon + 5 GJ!
lwang2016 + 3
Graphite + 5 好物!
guoguoping199 + 1 赞!
sobereva + 10

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 09:01 , Processed in 0.189486 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list