富士通 PRIMERGY TX1320 M4 のファン回転数を調整する

はじめに

夏になるとこの当番、自宅のサーバーたちが本当にうるさすぎるので、
ファン回転数を調整する方法を少し調べた。  

FIFAを見るだけでも落ち着かない

具体的な調査過程は省略する。
要するに、IPMI にコマンドを投げるスクリプトを使うだけなので、Python、ipmitool、lm_sensors が必要。

本文

プロジェクトはこちら。

https://github.com/makeding/fujitsu-1320-m4-fancontrol

環境

こちらで動作確認できた環境は以下。

  • FUJITSU PRIMERGY TX1320 M4
  • iRMC S5 Firmware Revision 3.31P (1.00)
  • SDR 3.40

他の iRMC や他の機種で動く保証はない。

依存関係

Debian / Ubuntu:

apt install git python3 ipmitool lm-sensors
sensors-detect

NixOS ならだいたいこんな感じ。

environment.systemPackages = with pkgs; [
  python3
  ipmitool
  lm_sensors
];

温度が見えることを確認する。

sensors

自分の環境では主に Mellanox NIC の温度を見ている。出力はこんな感じ。

mlx5-pci-0200
Adapter: PCI adapter
sensor0:      +81.0°C  (crit = +105.0°C, highest = +81.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +41.0°C  (high = +86.0°C, crit = +100.0°C)

手動で調整する

インストールする。

git clone https://github.com/makeding/fujitsu-1320-m4-fancontrol.git
cd fujitsu-1320-m4-fancontrol
install -m 0755 irmc_fan.py /usr/local/sbin/irmc_fan.py
install -m 0755 irmc_fan_daemon.py /usr/local/sbin/irmc_fan_daemon.py

よく使うコマンド。

# 40% に設定
/usr/local/sbin/irmc_fan.py set 40

# 現在のファン回転数を見る
/usr/local/sbin/irmc_fan.py sdr

# iRMC の自動制御に戻す
/usr/local/sbin/irmc_fan.py clear

簡単なデーモン

もちろん小さなデーモンも書いた。sensors を定期的に実行し、主に mlx5-pci-0200:sensor0 を見て、できるだけ 85°C 以内に収める。ついでに CPU Package と PCH も見る。

手動で起動する。

/usr/local/sbin/irmc_fan_daemon.py --interval 10

出力例:

2026-06-30 02:04:25 pwm=45% want=45% mlx=81.0C mlx2=81.0C cpu=41.0C pch=59.0C

デフォルトの方針:

  • mlx5 が 75°C 未満ならできるだけ静かにする
  • 85°C に近づいたらはっきり回転数を上げる
  • sensors が読めない場合は 70% まで上げる。センサー取得に失敗したまま低速で回すのを避けるため
  • 回転数を上げるときは速く、下げるときはゆっくり。頻繁な上下動を避ける

NIC の sensor 名が違う場合はパラメータで変更できる。

/usr/local/sbin/irmc_fan_daemon.py \
  --mlx-chip mlx5-pci-0200 \
  --mlx-label sensor0

systemd

簡単な service を作る。

[Unit]
Description=Fujitsu iRMC smart fan control
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/sbin/irmc_fan_daemon.py --interval 10 --min-pwm 30 --max-pwm 100
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

保存先:

/etc/systemd/system/irmc-fan-daemon.service

有効化する。

systemctl daemon-reload
systemctl enable --now irmc-fan-daemon.service
journalctl -u irmc-fan-daemon.service -f

スクリプトを別の場所に置いた場合は、ExecStart のパスを変更すればよい。

終わり

標準的な EC 経由ではないファン調整は本当に面倒だった。

以上。






制作・著作
━━━━━
ⒽⓊⒼⒼⓎ