目前我正在为我的大学项目制作一个温度感知版本的 linux。现在我必须创建一个温度感知调度程序,它可以考虑处理器温度并执行一些调度。是否有任何通用方法来获取处理器内核的温度,或者我可以以任何方式将 coretemp 驱动程序与 linux 内核集成(我在互联网上没有找到这样做的方法)。
2 回答
lm-sensors 只是使用内核导出的一些设备文件来获取 CPU 温度,您可以读取这些设备文件作为内核中的支持变量来获取温度信息。就调度程序而言,我不会从头开始编写一个,而是从内核 CFS 实现开始,并在您的情况下修改负载均衡器检查以包括温度(目前它使用一个指标,即从一个核心移动任务的计算成本在缓存问题等方面与另一个方面......我不确定你是否想保留这个)。
温度控制非常困难。困难在于热容量和电导。读取温度非常容易。如何控制它取决于系统模型。卡尔曼滤波器或一些更高阶的滤波器会有所帮助。你不知道,
- 热源。
- 与传感器的距离。
- 传感器数量。
- 控制元素,如风扇。
如果只测量其CPU
本身,硬盘驱动器可能会在 10 分钟前过热,但热量现在才到达 CPU。在这种情况下节流CPU
不会有帮助。只有获得系统良好的热模型,才能控制热量。但是,您说您对系统一无所知?我看不到调度程序本身如何做到这一点。
我从事移动冷冻机应用程序的工作,操作员将冰淇淋托盘等从冷冻机装载到卡车上。传感器和控制元件之间非常小的距离会对控制系统造成严重破坏。此外,如果可能,您希望立即读取环境温度。温度控制有很多lag
。较小的距离可能会使读数延迟 5-15 分钟(即热量传递 1 厘米需要 5-15 分钟)。
我看不出你所提议的实用性。如果你想在 PC 上使用它,那么显卡、硬盘驱动器、电源、声卡等会产生与 CPU 一样多的热量。您不能对 PC 进行一般建模;也许您可以使用 Apple 产品。我不认为你会取得很大的成功,但你会从尝试中学到很多东西!