Como aumentar a agressividade do resfriamento no Debian em um Macbook?

Como aumentar a agressividade do resfriamento no Debian em um Macbook?

Eu tenho o Debian instalado no meu Macbook Air (por quê? Porque é divertido), e ele realmente funciona muito bem.

No entanto, depois de notar um processo chamado "kidle_inject" ocupando 100% da CPU em todos os núcleos, quis verificar a temperatura e os "sensores" me disseram que estava pairando em 96 graus C. O ventilador mal funcionava.

Percebo que no OSX ele estará rodando assim que eu ligar o sistema (talvez ainda estivesse quente de um momento atrás), enquanto mal ouço no Debian, e o laptop também parece estar mais quente ao toque quando no Debian.

Existe uma maneira de dizer ao Debian para usar o ventilador de forma mais agressiva?

Responder1

http://allanmcrae.com/2010/05/simple-macbook-pro-fan-daemon/acabou por ser um começo útil.

No /sys/devices/platform/applesmc.768/, existem algumas opções úteis que podem ser usadas para controlar a velocidade do ventilador.

Existem "fan1_min" e "fan1_max" que são as velocidades mínima e máxima do ventilador, "fan1_output" que é a configuração que controla diretamente o ventilador e "fan1_manual" que faz o sistema ignorar as configurações mínimas e máximas e responder diretamente às alterações para "fan1_output".

Como controlá-los automaticamente é o próximo ponto da agenda.

EDIT: Além disso, tome cuidado com essas configurações, pois é muito possível simplesmente desligar o ventilador, expondo seu sistema aos perigos de superaquecimento.

Segunda edição:

Parece também que as informações nessa página estão um pouco desatualizadas, pois descobri que as leituras do sensor de temperatura estão no mesmo diretório das configurações do ventilador, e não no outro diretório sugerido pela página.

Terceira edição: com base nos algoritmos daquela página, escrevi um script python rápido que, quando executado como root, parece funcionar muito bem:

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

informação relacionada