Ejecute el programa mientras la computadora está fría

Ejecute el programa mientras la computadora está fría

Estoy intentando compilar un programa en una computadora con refrigeración inadecuada.

El programa, específicamente, es el linux-cknúcleo con -mtune=native march=nativeoptimizaciones específicas del procesador, por lo que simplemente ejecutarlo en una computadora diferente anula el propósito.

Actualmente estamos intentando resolver los problemas de refrigeración.NOTA:No tengo acceso físico a la computadora, así que no intentes ayudarme a solucionar el problema.

Yo, en cambio, necesito una forma de pausar el programa (control de trabajo de shell ' ^Z-estilo') cuando la CPU supera una cierta temperatura, medida por sensors, y reanudarlo una vez que se mide la temperatura para volver a niveles seguros.

NOTA:Esta computadora ha alcanzado los 91°C antes.

La computadora ejecuta Arch Linux y está completamente actualizada.

Respuesta1

La solución es asignar un PID del trabajo principal a la variable y escribir un script que:

  • Los controles dicen cada ~10 segundos la temperatura. Algo como

    temp=($(sensors | awk -F'[+.]' '{print $2}'))
    

    crea una tabla tempcon dos temperaturas (acpitz y coretemp) en mi caja, es posible que deba ajustarla para su salida de sensors.

  • si temp > $TEMPMAX envía kill -TSTP PIDal trabajo (CTRL-Z, también conocido como suspender)

    (( $temp[1] > 80 || $temp[2] > 80 )) && kill -TSTP $JOBPID
    
  • si temp < $TEMPRUN envía kill -CONT PIDal trabajo (lo mismo que el comando bg)

    (( $temp[1] < 40 && $temp[2] < 40 )) && kill -CONT $JOBPID
    

Dado que el script se ejecutará con mucha frecuencia, es posible que desee obtener una temperatura de la fuente en lugar del sensorscomando para ganar un poco de velocidad. En mayo la máquina esto funciona:

temp=($(cut -c 1-2 /sys/class/hwmon/hwmon0/temp1_input) $(cut -c 1-2 /sys/class/hwmon/hwmon1/device/temp2_input))

pero nuevamente, es posible que necesites ajustarlo según tus necesidades.

información relacionada