该CPU被设计为只要能节省功率并保持凉爽就可以进入低功耗模式,我想编写一个程序来防止这种情况的发生.
我正在使用一些不同的嵌入式平台(飞思卡尔Coldfire 8052,TI Sitara AM3359,可能还在管道工程中使用其他平台),因此我想开发一个仅能为基准测试保持CPU满载的应用程序.我想写自己的书,因为交叉编译然后为每个目标寻找解决方案会更容易.
我最初的想法只是:
while(1);
问题1:
但是在我简化这个问题上呢?顶部显示该程序占用约99.4%的CPU使用率,因此我认为它可以正常工作,但似乎并不应该那么简单. :)有人知道是否应该有更多呢?
问题2:如果我想扩展它以执行不同的负载(例如50%,75%或其他),我该怎么做?我通过以下方法设法获得18〜20%的CPU使用率:
while(1){usleep(1);}
有没有更多的科学方法,而不仅仅是猜测和检查睡眠值?我认为每个目标这些都会有所不同.
解决方法:
while(1);会消耗掉所有CPU周期,但不会占用CPU的大部分时间(更不用说GPU了).大多数现代CPU都有能力在不使用时选择性关闭各个执行单元:防止这种情况发生的唯一方法是:
>告诉CPU / SoC驱动程序禁用节能
>练习CPU / GPU /芯片组的所有单元,然后执行其他操作(这将是一项艰巨的任务,因此使用(1)可能会更好)