Performance 什么是好的风扇速度算法?

Performance 什么是好的风扇速度算法?,performance,Performance,我的扇子有24个速度步。它认为热关机温度为105℃。怠速温度约为75°C。采用温度下限和温度上限并将其除以n步是一个好算法吗 编辑:ATM我使用2个环路,上限为85°C,但在我知道24个速度步之前: error |= ec_read(EC_RTMP, &ec_rtmp); if ( ( ec_rtmp < FAN_UPTHRESHOLD_TEMP && sloop < 0 ) || ( ec_rtmp < FAN_UPTHRESHOLD_TEMP

我的扇子有24个速度步。它认为热关机温度为105℃。怠速温度约为75°C。采用温度下限和温度上限并将其除以n步是一个好算法吗

编辑:ATM我使用2个环路,上限为85°C,但在我知道24个速度步之前:

error |= ec_read(EC_RTMP, &ec_rtmp);
if ( ( ec_rtmp < FAN_UPTHRESHOLD_TEMP && sloop < 0 ) ||
    ( ec_rtmp < FAN_UPTHRESHOLD_TEMP && sloop == FAN_LOOP ) ||
         ( ec_rtmp < FAN_UPTHRESHOLD_TEMP && speed_switch == 1 )    
    )
{
    speed_switch = 1;
    sloop = FAN_LOOP;                           // 20 * 10 sec
    printk("Temp %dC: disabling fan\n", ec_rtmp);
    set_fan_disabled();
    queue_delayed_work( my_workqueue, &work_object, FAN_JIFFIES_MS*HZ );
} else 
{
    speed_switch = 0;
    printk("Temp %dC: enable fan\n", ec_rtmp);
    set_fan_enable();
    queue_delayed_work( my_workqueue, &work_object, 2*FAN_JIFFIES_MS*HZ );
}
error |=ec_read(ec_RTMP,&ec_RTMP);
如果((ec_rtmp<风扇上升阈值<温度和sloop<0)||
(ec_rtmp

<>编辑:我找到了一个很好的源代码:

你需要考虑很多因素,首先你不希望风扇在两个不同的步骤之间不断地弹跳,所以一个常见的技巧是只改变一个基于时间间隔的风扇速度,或者如果它比风扇速度最后改变时越过两个边界。 如果你的目标是阻止笔记本电脑变得更热,那么使用一个速度步长表将是最合适的,但这并不理想,可能会让笔记本电脑变得比其他智能设备更热。想象一下,如果风扇的当前热量输出总是比需要的慢一到两个设置。我得到的是,风扇速度应该与温度变化相关,而不是与温度直接相关,但同时不要完全拒绝温度,还需要有一个阈值表,表明当温度超过Y时,风扇的速度必须至少为X

因此,根据时间间隔内的温度增益/损耗(delta)而不是给定时间点的温度来设计系统

还有一点要考虑的是,风扇通常不会在RPM的冷却中线性增加,它们通常遵循一个钟形曲线来提高效率,当它们向峰值冷却效率(VRPM)倾斜时,然后当你走高RPM时,它们就不会像冷却一样有效。您可能会发现,最后10%的风扇转速增加了几分贝,但在散热方面可能没有多大作用

我建议使用最小风扇转速,该转速略低于您通常希望风扇在正常安静条件下运行的转速。而不仅仅是10%,20%,30%。。90%,100%风扇转速,我会说以40%(或您感觉最好的转速)开始,然后在此转速下查看新的怠速温度,然后将其用作增加其余风扇转速的基点


对于这个问题,没有完美的通用解决方案。与您目前对噪音成本的解释相比,您可以根据热量输出得到一些改进。因此,您应该为
quiet
office
gaming
配置文件实施不同的设置(大致取决于您在给定情况下的重要性和系统负载)。很像汽车有<代码>运动模式,或者<代码>越野>代码>设置。

你需要考虑很多因素,首先你不希望风扇在两个不同的步骤之间不断弹跳,因此,一个常见的技巧是仅在基于时间的间隔内改变风扇速度,或者如果它跨越了高于风扇速度上次改变时的两个边界

如果你的目标是阻止笔记本电脑变得更热,那么使用一个速度步长表将是最合适的,但这并不理想,可能会让笔记本电脑变得比其他智能设备更热。想象一下,如果风扇的当前热量输出总是比需要的慢一到两个设置。我得到的是,风扇速度应该与温度变化相关,而不是与温度直接相关,但同时不要完全拒绝温度,还需要有一个阈值表,表明当温度超过Y时,风扇的速度必须至少为X

因此,根据时间间隔内的温度增益/损耗(delta)而不是给定时间点的温度来设计系统

还有一点要考虑的是,风扇通常不会在RPM的冷却中线性增加,它们通常遵循一个钟形曲线来提高效率,当它们向峰值冷却效率(VRPM)倾斜时,然后当你走高RPM时,它们就不会像冷却一样有效。您可能会发现,最后10%的风扇转速增加了几分贝,但在散热方面可能没有多大作用

我建议使用最小风扇转速,该转速略低于您通常希望风扇在正常安静条件下运行的转速。而不仅仅是10%,20%,30%。。90%,100%风扇转速,我会说以40%(或您感觉最好的转速)开始,然后在此转速下查看新的怠速温度,然后将其用作增加其余风扇转速的基点


对于这个问题,没有完美的通用解决方案。与您目前对噪音成本的解释相比,您可以根据热量输出得到一些改进。因此,您应该为
quiet
office
gaming
配置文件实施不同的设置(大致取决于您在给定情况下的重要性和系统负载)。很像有
运动模式
越野设置的汽车。

听起来不像是编程问题。我在谷歌上搜索了两种策略。1是一种基于表格的方法。@Nick,我不同意。操作系统也是专业的