CPU は、電力を節約して冷却を維持するために、可能な限り低電力モードに移行するように設計されています。そうならないようにプログラムを作成したいと思います。
私はいくつかの異なる組み込みプラットフォーム (Freescale Coldfire 8052、TI Sitara AM3359、おそらく配管内の他のいくつか) に取り組んでいるので、ベンチマーク用に CPU を完全にロードしたままにするアプリケーションを作成したいと考えていました。クロスコンパイルしてからターゲットごとのソリューションを探す方が簡単なので、自分で書きたいと思います。
私の最初の考えはただ:
while(1);
質問 1:
しかし、私はこれを単純化しすぎていますか? top は、プログラムが約 99.4% の CPU 使用率を占めていることを示しているので、動作していると思いますが、それほど単純であるべきではないようです。:) それ以上のものがあるべきかどうか知っている人はいますか?
質問 2:
これを拡張してさまざまな負荷 (たとえば、50%、75% など) を実行したい場合、どうすればそれを実行できますか? 次の方法で18〜20%のCPU使用率を得ることができました:
while(1){usleep(1);}
睡眠値を推測して確認するだけでなく、より科学的な方法はありますか? とにかく、これらはターゲットごとに異なると思います。