Запустите программу, пока компьютер холодный

Запустите программу, пока компьютер холодный

Я пытаюсь скомпилировать программу на компьютере с недостаточным охлаждением.

Программа представляет собой linux-ckядро ​​с -mtune=native march=nativeоптимизацией под конкретный процессор, поэтому простой запуск ее на другом компьютере сводит на нет всю ее суть.

В настоящее время мы пытаемся решить проблемы с охлаждением.ПРИМЕЧАНИЕ:У меня нет физического доступа к компьютеру, поэтому, пожалуйста, не пытайтесь помочь мне устранить неполадки.

Вместо этого мне нужен способ приостановить программу (управление заданием оболочки « ^Z-style»), когда температура ЦП превышает определенную, измеренную sensors, и возобновить ее работу, как только температура будет измерена и вернется к безопасному уровню.

ПРИМЕЧАНИЕ:Этот компьютер уже нагревался до 91°C.

На компьютере установлена ​​операционная система Arch Linux, полностью обновленная.

решение1

Решение состоит в том, чтобы присвоить PID основной задачи переменной и написать скрипт, который:

  • проверки говорят каждые ~10 секунд температура. Что-то вроде

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

    создает таблицу tempс двумя температурами (acpitz и coretemp) на моем компьютере, вам может потребоваться настроить ее для вашего вывода sensors.

  • если temp > $TEMPMAX отправляет kill -TSTP PIDв задание (CTRL-Z, также известное как приостановка)

    (( $temp[1] > 80 || $temp[2] > 80 )) && kill -TSTP $JOBPID
    
  • если temp < $TEMPRUN отправляет kill -CONT PIDв задание (то же самое, что и команда bg)

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

Поскольку скрипт будет выполняться очень часто, вам может понадобиться получить временный файл из источника вместо sensorsкоманды, чтобы немного ускориться. На некоторых машинах это работает:

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

но опять же, вам, возможно, придется настроить его под свои нужды.

Связанный контент