私は Macbook Air に Debian をインストールしています (なぜかって? 楽しいからです)。実際、かなりうまく動作します。
しかし、「kidle_inject」というプロセスがすべてのコアで CPU を 100% 占有していることに気付いたため、温度をチェックしたかったのですが、「センサー」によると 96 度前後で推移していました。ファンはほとんど動いていませんでした。
OSX では、システムの電源を入れるとすぐに実行されます (少し前にまだ温かかったのかもしれません)。一方、Debian ではほとんど聞こえません。また、ラップトップは Debian では触るとより熱くなっているようです。
Debian にファンをより積極的に使用するように指示する方法はありますか?
答え1
http://allanmcrae.com/2010/05/simple-macbook-pro-fan-daemon/有益なスタートとなった。
には/sys/devices/platform/applesmc.768/
、ファン速度を制御するために使用できる便利なオプションがいくつかあります。
ファンの最小速度と最大速度である「fan1_min」と「fan1_max」、ファンを直接制御する設定である「fan1_output」、システムが最小および最大設定を無視して「fan1_output」の変更に直接応答する「fan1_manual」があります。
これらを自動的に制御する方法が次の議題です。
編集: また、これらの設定には注意してください。ファンをオフにするだけでシステムが過熱する危険にさらされる可能性が非常に高くなります。
2回目の編集:
また、そのページの情報は少し古くなっているようで、温度センサーの読み取り値は、ページで提案されている別のディレクトリではなく、ファン設定と同じディレクトリにあることがわかりました。
3 回目の編集: そのページのアルゴリズムに基づいて、簡単な Python スクリプトを作成しました。これは、root として実行すると、非常にうまく動作するようです。
#!/usr/bin/python
import time
import glob
import math
last_temp = 0
while True:
time.sleep(1)
files = glob.glob("/sys/devices/platform/applesmc.768/temp*_input")
temp = 0
for file in files:
with open(file) as openfile:
sensor_temp = openfile.read()
temp = max(int(sensor_temp)/1000, temp)
with open("/sys/devices/platform/applesmc.768/fan1_input") as fan1_input:
current_speed = int(fan1_input.read())
increasing = temp > last_temp
last_temp = temp
if increasing:
if temp <= 65:
speed = max(current_speed, 2000)
elif 65 < temp < 80:
step = (6200 - 2000) / ((80 - 65) * (80 - 64) / 2)
speed = max(current_speed, math.ceil(2000 + (temp - 65) * (temp - 64) / 2 * step))
elif temp >= 80:
speed = 6200
else:
if temp >= 80:
speed = 6200
elif 55 < temp < 80:
step = (6200 - 2000) / ( (80 - 55) * (80 - 54) / 2 )
speed = min(current_speed, math.floor(6200 - (80 - temp) * (81 - temp) / 2 * step))
elif temp <= 55:
speed = 2000
print "Temperature: " + str(temp) + " Increasing?: " + str(increasing) + " Current speed: " + str(current_speed) + " Target: " + str(speed)
with open("/sys/devices/platform/applesmc.768/fan1_min", "w") as fan1_input:
#with open("/home/werner/testtemp", 'w+') as fan1_input:
fan1_input.write(str(int(speed)))