• 締切済み

CPU負荷率の安全な上限と計測方法

組み込み系の環境での質問です。 1.CPU負荷率は何%くらいまでを安全と考えればいいでしょうか。 ターゲットのCPUやその他にもよるとは思います。 漠然とした質問で恐縮ですが、 例えば誰かに説明する時、xx%くらいであれば安全とみなす。 とした場合、どのような根拠理由をもって説明すれば相手に納得していただけるのでしょうか。 xx%はいくらくらいを上限に考えればいいでしょうか。 「CPU負荷率が90%はありえない。」と言う発言をよく聞きます。 何が理由になっているのでしょうか。 「ありえない」「まずいのでは」「まあ、いいだろう」「大丈夫」と判断される負荷率はそれぞれどれくらいを考えておけばいいでしょうか。 2.負荷率の計測方法について わたしは、以下のような方法で計算していますが、大丈夫でしょうか。 また、他の方法があればご教示ください。 割り込み処理が別途用意されています(多重割り込みは禁止です)。 下記のようなプログラムを実行させます。 ここへIOポートからパルス信号を入力し、割り込み処理を行わせます。 パルス信号の周波数を上げていき(割り込みの頻度を高くする)、リセットがかかった周波数を記録します。 「CPU負荷率」 = 「プログラムBのリセット時の周波数」÷ 「プログラムAのリセット時の周波数」 としています。 ------------------------------ プログラムA (処理なし) main() {   while(1){     WDTクリア   } } ------------------------------ プログラムB (処理あり) main() {   while(1){     処理A     処理B     処理C     ・・・     WDTクリア   } } ------------------------------

みんなの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

1.タスク構成によるのではないですか。 タイマ駆動で周期的に一定負荷の処理をするなら限りなく100%に近づけられると思いますし、ランダム到着(ポワソン分布)の割り込み駆動で、割り込み応答性能が要求されると10%くらいが限界だと思います。(純ポワソン分布だと10%以下でも無理だったかも) 通常はこの中間で、周期処理と割り込み処理の負荷割合に応じて可能な負荷率が決まります。 あと割り込みの到着分布想定によっても変わります。 2.負荷率計測は質問のやり方で計れているのか良くわかりません。 アイドルタスク(最低優先度)に計量処理を入れて、その実行時間を除いた分が負荷という方法ではいけないでしょうか。

elec2
質問者

お礼

回答ありがとうございました。 お礼が遅くなりすみません。 まだ、模索中です。 参考にさせていただきます。