Linux中的热感知调度程序

时间:2013-02-22 01:31:01

标签: linux linux-kernel scheduling scheduler

目前我正在为我的大学项目制作温度感知版本的linux。现在我必须创建一个温度感知调度程序,它可以考虑处理器温度并执行一些调度。是否有任何通用的方法来获得处理器内核的温度,或者我可以以任何方式将coretemp驱动程序与linux内核集成(我没有找到在互联网上这样做的方法)。

2 个答案:

答案 0 :(得分:5)

lm-sensors只是将内核导出的一些设备文件用于CPU温度,你可以只读取这些设备文件中的任何内容作为内核中的后备变量来获取温度信息。就调度程序而言,我不会从头开始编写,而是从内核CFS实现开始,在您的情况下修改负载均衡器检查以包含温度(目前它使用的度量标准是从一个核心移动任务的计算成本在缓存问题等方面另一个......我不确定你是否要保留这个。)

答案 1 :(得分:0)

温度控制非常困难。困难在于thermal capacity和传导。读取温度非常容易。您如何控制它将取决于系统模型。 Kalman filter或更高阶的过滤器会很有帮助。你不知道,

  1. 热源。
  2. 与传感器的距离。
  3. 传感器数量。
  4. 控制元素,如粉丝。
  5. 如果你只在CPU本身进行测量,那么硬盘驱动器可能会在10分钟前过热,但现在热量只会到达CPU。在此实例中限制CPU无济于事。只有获得系统良好的热模型才能控制热量。但是,你说你对系统一无所知?我没有看到调度程序本身如何做到这一点。

    我曾在移动冰柜应用程序中工作,操作员可以将冰箱中的冰淇淋等托盘装入卡车。传感器和控制元件之间的距离非常小,可能会对控制系统造成严重破坏。此外,如果可能,您希望立即读取环境温度。温度控制中有很多lag。一小段距离可能会使读数延迟5-15分钟(即,传热1厘米需要5-15分钟)。

    我没有看到你提出的实用性。如果您想将它用于PC,那么视频卡,硬盘驱动器,电源,声卡等可以产生与CPU相同的热量。你不能一般地建模PC;也许你可以使用Apple产品。我不认为你会取得很大的成功,但你会从尝试中学到很多东西!