linux中的热感知调度程序

linux中的热感知调度程序,linux,linux-kernel,scheduling,scheduler,Linux,Linux Kernel,Scheduling,Scheduler,目前我正在为我的大学项目制作一个温度敏感的linux版本。现在我必须创建一个温度感知调度程序,它可以考虑处理器温度并执行一些调度。是否有任何通用的方法来获取处理器内核的温度,或者我是否可以以任何方式将coretemp驱动程序与linux内核集成(我在互联网上没有找到这样做的方法)。lm sensors仅使用内核导出的一些设备文件来计算CPU温度,您可以读取这些设备文件在内核中作为备份变量的任何内容,以获取温度信息。对于调度器,我不会从头开始编写,而是从内核CFS实现开始,在您的情况下,修改负载平

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

lm sensors仅使用内核导出的一些设备文件来计算CPU温度,您可以读取这些设备文件在内核中作为备份变量的任何内容,以获取温度信息。对于调度器,我不会从头开始编写,而是从内核CFS实现开始,在您的情况下,修改负载平衡器检查以包括温度(目前它使用一个指标,即根据缓存问题等将任务从一个核心移动到另一个核心的计算成本。我不确定您是否希望保留此指标).

温度控制非常困难。困难在于温度和电导。读取温度非常容易。如何控制温度取决于系统模型。a或更高阶的过滤器会很有帮助。你不知道

  • 热源
  • 与传感器的距离
  • 传感器的数量
  • 控制元素,如风扇
  • 如果您仅在
    CPU
    本身进行测量,硬盘驱动器可能在10分钟前过热,但热量现在才到达CPU。在这种情况下,对
    CPU
    进行节流是没有帮助的。只有获得系统的良好热模型才能控制热量。然而,您说您没有真正控制热量我知道这个系统吗?我不知道调度器本身是如何做到这一点的

    我曾开发过移动式冷冻柜应用程序,在该应用程序中,操作员将冰激凌等托盘从冷冻柜装载到卡车上。传感器和控制元件之间的距离非常小,可能会对控制系统造成严重破坏。此外,如果可能,您希望立即读取环境温度。存在大量
    滞后ode>在温度控制中。一小段距离可能会使读数延迟5-15分钟(即,热量传递1厘米需要5-15分钟)


    我看不出你的建议有什么用处。如果你想把它用于个人电脑,那么视频卡、硬盘驱动器、电源、声卡等可以产生与CPU一样多的热量。你不能一般地为个人电脑建模;也许你可以用苹果产品建模。我认为你不会取得很多成功,但你会从尝试中学到很多东西!

    Do你是说每个内核的温度?还取决于你是想在用户空间还是内核空间这样做。是的,要求是尝试在多核系统中使用它,如果这是你的意思,则在内核中使用调度程序(对不起,我对这一计算领域很陌生)我认为您的项目可以在不修改内核的情况下完成,前提是您愿意牺牲直接进程和IO调度来设置好的值和设置最大处理器频率。您可能有兴趣了解cpufreqd并将其修改以考虑温度。谢谢,我将研究
    负载平衡()
    方法更接近于此,我同意您使用一些实际存储温度值的变量,而不是需要单独安装的lm传感器。但是,到目前为止,我无法找到它,除了一些热文件位于
    /sys/class/thermal/
    check
    /sys/devices下/platform/coretemp.#/temp1_input
    我忘了sysfs在内核中的支持位置,我手头没有代码可供检查。是的,我可以从那里获得值,这比使用单独的应用程序要好得多,谢谢!如果您发现sysfs在内核中的支持位置,请告诉我。