LoginSignup
0
2

More than 1 year has passed since last update.

macfanctldでMacサーバのファン制御

Last updated at Posted at 2022-11-29

この記事は2020年に今は無き別サービスに投稿したものを、今更Qiitaに再投稿したものです。

SSD換装したり無理やりMojaveにしたりしていたMacサーバは、現在Mojaveでの運用を諦めDebianをインストールしMinecraftのマルチプレイサーバなどに活用している。
コロナ禍での休校期間中、後輩たちが筆者宅のMinecraftマルチプレイサーバーにログインして遊ぶ頻度が上がった。そのサーバーとは例のオンボロMac mini(late 2009)であって、11年前のCore 2 Duoがまだ現役なのである。
そんなことはお構い無しに、後輩たちはネザーを探索し、エンドシティを探し、ゾンビトラップ、ゴーレムトラップまで作って放置プレイをしているのである。トライデント量産トラップまで設置された。そうするとラグが酷い。topで覗いてもswapが発生しているわけでもない。しかし気になったのが、CPU使用率がさほど上がっていない点だ。熱を持っていてクロックを上げられないのではという仮説を立てた。サーバーの筐体を触ってみると、ホカホカであった。

温度を調べたい

CPU温度を調べるにはパッケージlm-sensorsを入れれば良いということだったので導入する。

$ sudo apt install lm-sensors
コマンド`sensors`で検出されたセンサーの温度が表示される。どれがどこを指しているのかは分からなかったが、`Core 0`と`Core 1`がCPU温度を示していることは容易に理解できた。Minecraftサーバーを起動して誰もログインしていないときに50℃弱、高負荷時には70℃を超えていた。

一つだけ単位が「RPM」になっている項目があった(他は℃)。Mac miniはファンを一つだけ搭載しているのでこれは間違いなくそのファンの回転数である。問題は、高負荷、高温時にもファンの回転数が上がっていないことである。常に毎分2000回転であった。ファンの回転数をどうにか上げたい。

fancontrolを試す

いろいろ調べていくとfancontrolを使えばいいという情報が目立った。

$ sudo apt install fancontrol

pwmconfigで温度センサーとファンの関連付けをするとのことだったが、どうもうまくいかない。
他の方法は無いかとMac向けのパッケージが無いか等を調べていたら、macfanctldを見つけた。

macfanctld

apt searchで出る概説だと、Macbook用のファンコントロールデーモンとのことだったがとりあえず入れてみる。

$ sudo apt install macfanctld

インストールするとデーモンが起動し、しばらくファンの回転数が上がってうるさくなる。
/etcmacfanctld.confという設定ファイルが作られている。最低回転数、回転数が最低・最高になる温度が設定できる。
常に2000回転だと気になるので最低は1500回転にした。Minecraftを起動した際の負荷等条件を変えて検証し、以下の設定に落ち着いた。ログを取るにはlog_levelを設定しておく必要がある。

# Config file for macfanctl daemon
#
# Note: 0 < temp_X_floor < temp_X_ceiling
#       0 < fan_min < 6200       

fan_min: 1500

temp_avg_floor: 50
temp_avg_ceiling: 60

temp_TC0P_floor: 55
temp_TC0P_ceiling: 70

temp_TG0P_floor: 55
temp_TG0P_ceiling: 70

# Add sensors to be excluded here, separated by space, i.e.
# exclude: 1 7
# will disable reading of sensors temp1_input and temp7_input.

exclude: 8

# log_level values:
#   0: Startup / Exit logging only
#   1: Basic temp / fan logging
#   2: Log all sensors  

log_level: 1
設定を変更したら、デーモンを再起動する。
$ sudo systemctl restart macfanctld

センサーの例外処理についてだが、sensorsを実効したときに常に-128℃を示すセンサーがあり、どうやらこのデーモンはセンサーの平均温度を見ているようで、除外したほうがいいと考えた。
headを使い/var/log/macfanctl.logの先頭付近をみていくと、sensorsを実行したときのセンサー名とmacfanctldでの通し番号の対応が分かる。

夏を乗り切れるか

最近のMinecraftはちゃんとマルチスレッドに対応しているようだ。同時にネザーやらエンドやらに行かれるとデュアルコアではしんどい。誰かがログインして負荷がかかる作業をするとファンの回転数が上がるのですぐに分かる。4500回転ほどになることもある。ノートPCに比べるとMac miniのファンは結構うるさい。
11年落ちCore 2 Duoなんかよりも最近のラズパイの方がよほど高性能だ。64bit対応し、8GBメモリモデルもある。これからの季節、暑い日に古いCPUを高負荷で使い続けると逝ってしまわないか心配である。新しいサーバーが欲しいが、身分が安定してからにしよう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2