¿Cómo aumentar la agresividad del enfriamiento en Debian en una Macbook?

¿Cómo aumentar la agresividad del enfriamiento en Debian en una Macbook?

Tengo Debian instalado en mi Macbook Air (¿por qué? Porque es divertido) y, de hecho, funciona bastante bien.

Sin embargo, después de notar que un proceso llamado "kidle_inject" consumía el 100% de la CPU en todos los núcleos, quise verificar la temperatura y los "sensores" me dijeron que estaba rondando los 96 grados C. El ventilador apenas estaba funcionando.

Noto que en OSX, se ejecutará tan pronto como encienda el sistema (tal vez todavía estaba caliente desde hace un momento), mientras que apenas lo escucho en Debian, y la computadora portátil también parece estar más caliente al tacto cuando en Debian.

¿Hay alguna manera de decirle a Debian que use el ventilador de manera más agresiva?

Respuesta1

http://allanmcrae.com/2010/05/simple-macbook-pro-fan-daemon/resultó ser un comienzo útil.

En /sys/devices/platform/applesmc.768/, hay algunas opciones útiles que se pueden utilizar para controlar la velocidad del ventilador.

Hay "fan1_min" y "fan1_max", que son las velocidades mínima y máxima del ventilador, "fan1_output", que es la configuración que controla directamente el ventilador y "fan1_manual", que hace que el sistema ignore las configuraciones mínima y máxima y responda directamente a los cambios. a "fan1_output".

Cómo controlarlos automáticamente es el siguiente punto de la agenda.

EDITAR: Además, tenga cuidado con estas configuraciones, ya que es muy posible simplemente apagar el ventilador, exponiendo su sistema a los peligros de sobrecalentamiento.

Segunda edición:

También parece que la información en esa página está un poco desactualizada, ya que encontré que las lecturas del sensor de temperatura están en el mismo directorio que la configuración del ventilador, en lugar de en ese otro directorio sugerido por la página.

Tercera edición: basándome en los algoritmos de esa página, escribí un script rápido en Python que, cuando se ejecuta como root, parece funcionar bastante bien:

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

información relacionada