Execute o programa enquanto o computador está frio

Execute o programa enquanto o computador está frio

Estou tentando compilar um programa em um computador com refrigeração inadequada.

O programa, especificamente, é o linux-ckkernel com -mtune=native march=nativeotimizações específicas do processador, portanto, simplesmente executá-lo em um computador diferente anula o propósito.

No momento, estamos tentando resolver os problemas de resfriamento.OBSERVAÇÃO:Não tenho acesso físico ao computador, portanto, não tente me ajudar a solucionar o problema.

Em vez disso, preciso de uma maneira de pausar o programa (shell job control ' ^Z-style') quando a CPU ficar acima de uma determinada temperatura, medida por sensors, e retomá-lo assim que a temperatura for medida para voltar a níveis seguros.

OBSERVAÇÃO:Este computador já atingiu 91°C antes.

O computador está rodando Arch Linux e está totalmente atualizado.

Responder1

A solução é atribuir um PID do trabalho principal à variável e escrever um script que:

  • as verificações indicam a temperatura a cada aproximadamente 10 segundos. Algo como

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

    cria uma tabela tempcom duas temperaturas (acpitz e coretemp) na minha caixa, pode ser necessário ajustá-la para a saída de sensors.

  • if temp > $TEMPMAX envia kill -TSTP PIDpara o trabalho (CTRL-Z, também conhecido como suspender)

    (( $temp[1] > 80 || $temp[2] > 80 )) && kill -TSTP $JOBPID
    
  • if temp < $TEMPRUN envia kill -CONT PIDpara o trabalho (o mesmo que o comando bg)

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

Como o script será executado com muita frequência, você pode querer obter uma temperatura da fonte em vez do sensorscomando para ganhar um pouco de velocidade. Em minha máquina isso funciona:

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

mas, novamente, pode ser necessário ajustá-lo às suas necessidades.

informação relacionada