趁电脑凉爽时运行程序

趁电脑凉爽时运行程序

我正在尝试在冷却不足的计算机上编译程序。

具体来说,该程序是linux-ck具有特定于处理器的优化的内核-mtune=native march=native,因此简单地在不同的计算机上运行它就达不到目的。

我们目前正在努力解决冷却问题。笔记:我无法实际访问计算机,因此请不要尝试帮助我排除故障。

^Z相反,我需要一种方法,当 CPU 超过某个温度(由 测量)时暂停程序(shell 作业控制“ -style”) sensors,并在测量温度回到安全水平后恢复程序。

笔记:这台电脑之前曾达到过91°C。

该计算机运行 Arch Linux 并已完全更新。

答案1

解决方案是将主作业的 PID 分配给变量并编写一个脚本,其中:

  • 每约 10 秒检查一次温度。就像是

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

    在我的盒子上创建一个包含两个温度(acpitz 和 coretemp)的表temp,您可能需要根据 的输出调整它sensors

  • 如果 temp > $TEMPMAX 发送kill -TSTP PID到作业(CTRL-Z,又名挂起)

    (( $temp[1] > 80 || $temp[2] > 80 )) && kill -TSTP $JOBPID
    
  • if 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))

但同样,您可能需要根据您的需要进行调整。

相关内容