Wie kann man die Kühlungsaggressivität unter Debian auf einem MacBook erhöhen?

Wie kann man die Kühlungsaggressivität unter Debian auf einem MacBook erhöhen?

Ich habe Debian auf meinem MacBook Air installiert (warum? aus Spaß.) und es läuft tatsächlich ziemlich gut.

Als ich jedoch einen Prozess namens „kidle_inject“ bemerkte, der 100 % der CPU-Leistung auf allen Kernen beanspruchte, wollte ich die Temperatur prüfen und die „Sensoren“ zeigten mir an, dass sie bei etwa 96 Grad Celsius lag. Der Lüfter lief kaum.

Mir fällt auf, dass es unter OSX läuft, sobald ich das System einschalte (es war vielleicht noch warm vom Vormittag), während ich es unter Debian kaum höre und der Laptop sich unter Debian auch heißer anzufühlen scheint.

Gibt es eine Möglichkeit, Debian anzuweisen, den Lüfter aggressiver zu nutzen?

Antwort1

http://allanmcrae.com/2010/05/simple-macbook-pro-fan-daemon/erwies sich als nützlicher Anfang.

In /sys/devices/platform/applesmc.768/gibt es einige nützliche Optionen, mit denen Sie die Lüftergeschwindigkeit steuern können.

Es gibt „fan1_min“ und „fan1_max“, die die minimale und maximale Lüftergeschwindigkeit darstellen, „fan1_output“, die Einstellung zur direkten Steuerung des Lüfters, und „fan1_manual“, wodurch das System die minimalen und maximalen Einstellungen ignoriert und direkt auf Änderungen an „fan1_output“ reagiert.

Wie diese automatisch gesteuert werden können, ist der nächste Punkt auf der Tagesordnung.

EDIT: Seien Sie mit diesen Einstellungen auch vorsichtig, da es durchaus möglich ist, den Lüfter einfach auszuschalten und Ihr System dadurch der Gefahr einer Überhitzung auszusetzen.

Zweite Bearbeitung:

Außerdem scheinen die Informationen auf dieser Seite etwas veraltet zu sein, da ich festgestellt habe, dass sich die Messwerte des Temperatursensors im selben Verzeichnis wie die Lüftereinstellungen befinden und nicht in dem anderen von der Seite vorgeschlagenen Verzeichnis.

Dritte Bearbeitung: Basierend auf den Algorithmen auf dieser Seite habe ich ein kurzes Python-Skript geschrieben, das, wenn es als Root ausgeführt wird, recht gut zu funktionieren scheint:

#!/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)))

verwandte Informationen