Execute o programa enquanto o computador está frio

1

Estou tentando compilar um programa em um computador com resfriamento inadequado.

O programa, especificamente, é o linux-ck kernel com -mtune=native march=native otimizações específicas do processador, portanto, simplesmente executá-lo em um computador diferente, anula a finalidade.

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

Eu, em vez disso, preciso de uma maneira de pausar o programa (controle de tarefa do shell ' ^Z -style') quando a CPU fica acima de uma determinada temperatura, medida por sensors , e retomá-la quando a temperatura é medida estar de volta a níveis seguros.

NOTA: Este computador atingiu 91 ° C antes.

O computador está executando o Arch Linux e está totalmente atualizado.

    
por JamesTheAwesomeDude 08.10.2014 / 00:41

1 resposta

4

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

  • verifica se a temperatura é de 10 segundos. Algo como

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

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

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

    (( $temp[1] > 80 || $temp[2] > 80 )) && kill -TSTP $JOBPID
    
  • se temp < $ TEMPRUN envia kill -CONT PID para 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, talvez você queira obter uma temperatura da fonte, em vez do comando sensors , para ganhar um pouco a velocidade. Em pode 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, você pode precisar ajustá-lo para suas necessidades.

    
por 08.10.2014 / 01:23