linux 应用程序里while(1), top:cpu 98%,功耗会增加吗?
假如系统没有用户应用程序执行,那么内核应该会一直执行cpu_idle进程,该进程中会死循环调用schedule函数进行系统调度,查找就绪队列中的进程进行调度;
这么看来,不管用户应用程序占用CPU的比例为多少,CPU其实是一直在执行指令的,
一刻也没有停止,对CPU来说没什么区别吧?
CPU占用率不同,功率肯定不同!现在的CPU也会动态调整运行频率。你可以拿你笔记本接可调电源开机看就知道了。 有区别啊,啥都不干的时候就是运行idle函数,那个函数会调用电源管理让cpu休眠的 很大区别。以前同事写的程序有问题,cpu占有率90%多,能跑起来,但是电流100多ma,芯片也很热。后来找到bug,cpu占有率下降到10%内,电流降到80ma,芯片也不发热了。 我让树莓派3B+,4核全部100%很快就到80多度了。 功耗区别相当大 实测 arm9 ,cpu100%38度,cpu%10 34度,环境温度21度 redroof 发表于 2018-12-18 14:36
有区别啊,啥都不干的时候就是运行idle函数,那个函数会调用电源管理让cpu休眠的 ...
正解,楼主的思维还停留在单片机系统上。 Edesigner. 发表于 2019-1-3 16:29
正解,楼主的思维还停留在单片机系统上。
即便是单片机系统,也是讲究在IDLE里面进入休眠的。 空闲时间让出CPU,在任何系统或裸机程序里,都很重要,必须注意做 Cmos稳定时无功耗,状态切换时才产生功耗 肯定增加,而且全功率跑 肯定有增加,但是比实际的应用程序占用98%时少,因为while(1)全在cache中执行,不会有ram读取。
实际程序肯定会有ram操作,功耗还会增加。 Idle进程不是死循环调用schedule函数的,会让CPU休眠然后等待中断唤醒后再调用schedule。
页:
[1]