ACPI

ACPI

我一直在尝试获得一个 FreeBSD 盒子(运行 FreeNAS)来控制它的风扇。即使系统温度相当低,它也希望以高速运行它们。 lm-sensors 软件包可以在 Linux 上执行此操作,但在 FreeBSD 上不可用。

我找到了这个类似的问题这边,却一直没有任何反应。

我可以加载一个内核模块来在 FreeBSD 上执行此操作吗?

答案1

ACPI

是的。如果您的硬件支持高级配置和电源接口(ACPI)然后有可加载的模块ACPI支持。

不幸的是大多数(如果不是全部)模块目标是笔记本电脑。

您可以使用以下命令查看是否有与粉丝相关的任何设置sysctl

# sysctl hw.acpi

但与其手动调整风扇速度,不如根据温度和负载自动调整。在 FreeBSD 中,这是由动力默认情况下禁用。

因此,即使风扇没有直接暴露在外,您也可以调整它们,但要调整 CPU 频率。然后,一些 BIOS 会相应地调整风扇速度(如果也在合理的温度范围内)。

示例设置在/etc/rc.conf

powerd_enable="YES"
powerd_flags="-a adaptive"
performance_cx_lowest="C2"      # Online CPU idle state
performance_cpu_freq="1399"     # Online CPU frequency
economy_cx_lowest="C3"          # Offline CPU idle state
economy_cpu_freq="NONE"         # Offline CPU frequency

sysctl hw.acpi还将显示上述任何设置是否可以生效。

智能制造管理接口

如果你没有走 ACPI 路线那么也许智能平台管理界面(IPMI) 可以对您有所帮助。然而,这通常仅在具有 BMC 的服务器级主板上可用。

当服务器启动时,风扇以 BIOS 默认速度运行,直到操作系统接管。如果操作系统不接管(即使用 ACPI),则 CPU 和风扇通常会全速运行。尽管在某些情况下,BIOS 配置屏幕中无法直接提供阈值,但可以使用 IPMI 进行设置。

FreeBSD 确实有一个IPMI驱动程序你可以安装sysutils/ipmitool来玩设置。

以下片段来自服务之家网站应该适用于某些 SuperMicro 主板 (X9/X10/X11):

#set fan mode to "full"
ipmitool raw 0x30 0x45 0x01 0x01
#set fans in "system" zone to 37.5%
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x24
#set fans in "peripheral" zone to 25%
ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x16

笔记:风扇模式首先设置为全速,因为如果不设置,BMC 似乎不会更改风扇速度。

上面的链接指出:

但神奇的数字是相同的

请注意,无论使用哪种 IPMI 工具,SuperMicro 主板的幻数都是相同的。对于 Tyan 来说,他们可能会有所不同。困难的部分是弄清楚这一点。看起来 SuperMicro 使用 0x30 但是国际商业机器公司可能会使用 0x3a。

如果您设置了用户名/密码,那么也提供它们:

ipmitool -H HOST_IP -U USERNAME -P PASSWORD raw 0x3a 0x07 0x01 0x50 0x01

您可能没有做出错误的选择。有些确实喜欢泰安.但请注意,他们的实施可能有点古怪的。如果您尝试猜测神奇数字,这一点非常重要。如果更新 BIOS,2020 年的体验可能会更好:

当然,Tyan 主板在 IPMI 方面存在一些粗糙的地方,因为它不像 SM 实现那样得到很好的使用和完善。我发现即使超时为 1800 秒,KVM 连接也会断开。我必须重新加载 IPMI 网页,重新登录并再次启动 KVM。有一次,IPMI 完全拒绝了我的 root 登录,尽管我确信我的密码。我只是拔掉服务器的电源,重新插上电源并等待 IPMI,然后我就再次进入了。我的结论是IPMI迷失了自己。

也许你可以设置占空比在BIOS中。这似乎在某些 Tyan 主板上可用,但在设置中并不明显。

它可以设置为两个值之一 - 手动和全速。就是这样。现在,您在上面看到的所有温度都是在风扇占空比设置为默认值 30% 的情况下实现的。我将创建一个支持票并询问 Tyan 如何让风扇随 CPU 或系统温度变化

更新:感谢 @jpmomo 指出风扇控制可以工作 - 以某种方式 - 我将占空比设置为 15 并对主板进行负载测试。这里的获胜者显然是 Supermicro SNK-P0064AP4 散热器。在默认的 30% 占空比下,它的转速为 1600RPM,并且超级安静。散热器还确保CPU在负载下不会超过68C。这是一个惊人的结果。将占空比降低至 15% 会使 CPU 风扇以 1300RPM 的速度旋转,但一旦 CPU 超过 75C,风扇就会加速旋转。我不敢相信这个散热器有多好。当然,7302P“只是”180W 处理器,所以就是这样

硬件

如果其他一切都失败了,那么购买一个便宜的硬件风扇控制器:-)。

或者,如果您不介意自己稍微修改一下,那么可以尝试7VDC 风扇

您需要一个 4 针 Molex 连接器到 3 针风扇连接器,如果有多个风扇,则需要更多 Y 线束。拿起黑线并将其移至连接器的远端。这最终会将地线移至 +5VDC 线路,基本上会得到 7VDC(12VDC 减去 5VDC 等于 7VDC)。只要您操作正确,风扇就会以较慢的速度运行,这是安全的。如果它们对您来说仍然旋转得太快,您只能将黄色(适配器上可能是红色)移动到另一侧。这将使其成为+5VDC,但有些风扇将无法工作,因为电压可能不足以启动风扇转动。

答案2

听起来您所看到的是 X9 与 X10/X11 中使用不同 BMC 的结果。 X9 只能发出原始命令来更改风扇模式 - 一个 4 值字符串(总结如下);而 X10/11 板可以采用 6 个值字符串来额外控制风扇区域和占空比。

# Set fan mode: raw 0x30 0x45 0x01 [x]
# [x] Modes:      CPU Zone  Peripheral Zone
#                 Target    Target 
# -------------   --------  ---------------
# 00  Standard    50%      50%
# 01  Full        100%     100%
# 02  Optimal     30%      30%
# 04  Heavy I/O   50%      75%

答案3

任何 BSD 系统通常都不支持传统的风扇控制。 FreeBSD 12 (2019) 没有传感器框架,尽管 NetBSD 和 OpenBSD 都有,但它们也不支持风扇控制。正如您所指出的, Linux 确实支持风扇控制lm-sensors,但实际上,它在 BSD 上不可用。

正如其他答案中提到的,ipmitool如果您有带有 IPMI 的服务器级软件,您可以尝试。

否则,实际上,最好的做法可能是查看 BIOS 是否有风扇控制选项。另一个技巧是用另一个操作系统配置芯片,然后热重启回到 FreeBSD,希望同时设置不会被重置。最后,您也可以尝试自己破解解决方案;事实上,这就是我用我的风扇控制当我想让我的服务器安静下来时,OpenBSD/DragonFly 的补丁集。

相关内容