Armadilloフォーラム

Armadillo-810 の CPU 周波数の確認方法

chihiro

2014年9月3日 9時37分

いつもお世話になっております。
外山と申します。

Armadillo-810 はコアクロック 792 MHz との事ですが
この周波数を確認するためのコマンドはありますでしょうか?

cat /proc/cpuinfo
すると
BogoMIPS : 1576.53
を得られたのですが、
http://ja.wikipedia.org/wiki/BogoMips
より x0.5 して 788 MHz と解釈して良いでしょうか?

また、現在開発中のプログラムにて再現性が無いのですが
ある時に、処理速度が遅くなってしまう状況が発生しています。
gettimeofday を使って処理速度を調べているのですが
100 ms ぐらいで終わるべき処理が、ある時に
130 ms ぐらい、と遅くなってしまいます。

長時間 CPU を動かしている事により温度などによって
CPU の周波数が変化する、と言う事はありえますでしょうか?

以上、よろしくお願いします。

コメント

at_yashi

2014年9月9日 16時16分

> Armadillo-810 はコアクロック 792 MHz との事ですが
> この周波数を確認するためのコマンドはありますでしょうか?

ないですね...

> cat /proc/cpuinfo
> すると
> BogoMIPS : 1576.53
> を得られたのですが、
> http://ja.wikipedia.org/wiki/BogoMips
> より x0.5 して 788 MHz と解釈して良いでしょうか?

bogomips は、bogus なのであまり意味をなさないかと。

> また、現在開発中のプログラムにて再現性が無いのですが
> ある時に、処理速度が遅くなってしまう状況が発生しています。
> gettimeofday を使って処理速度を調べているのですが
> 100 ms ぐらいで終わるべき処理が、ある時に
> 130 ms ぐらい、と遅くなってしまいます。
>
> 長時間 CPU を動かしている事により温度などによって
> CPU の周波数が変化する、と言う事はありえますでしょうか?

a810のCPU は、動的に動作周波数を変化しません。
アプリの処理時間は、カーネルや他のアプリがCPUを使っていると変化することがあります。

どのような処理で、30msの誤差が出ているか教えてもらえますか?

chihiro

2014年9月10日 8時30分

at_yashi 様

いつもお世話になっております。

返信して頂いてありがとうございました。

CPU クロックを確認するコマンドが無い事と
bogomips が参考にならない件、了解しました。

> どのような処理で、30msの誤差が出ているか教えてもらえますか?

OpenCV と Armadillo-810 のカメラを使った画像処理の一部です。

組んでいる最中のプログラムは
処理結果を標準出力に文字列を出力しているのですが、
「カーネルや他のアプリがCPUを使っている」事を確認するために
cat /proc/stat
top -n 1
などを system("cat /proc/stat"); などのようにして所々で
確認しようと思っています。

ついでにメモリの使用状況も把握したいので
cat /proc/meminfo
も実行し、プログラムが終了した後でログを見て CPU やメモリの
使用状況と、遅延が発生する原因がわかれば、と思っています。

他に適切な方法があるようでしたらお教え下さい。

以上、よろしくお願いします。

kensaku

2014年9月10日 9時12分

kensakuと申します。
カメラ関係という事で気になった点がありますので横から失礼します。

計測時間にカメラ画像の取得時間を含めている事が前提のお話になりますが、
30ms遅延という事であれば、カメラフレーム待機待ちの可能性が考えられます。

カメラの画像取得のAPIをOpenCVを使われているならば、
cvQueryFrame()
の前後にgettimeofday等で時間を計測されると良いかもしれません。
(V4L2で直接取得されているのであれば画像準備待ちするselect()メソッドになります)
このメソッド間で時間がばらつくようであればフレーム待機待ちによる遅延が濃厚です。

上記でばらつかなければ、他タスク処理による要因等が考えられます。
お試しにniceコマンドによるプロセス優先度を高くして遅延発生頻度を
確認される等も良いかもしれません。

> at_yashi 様
>
> いつもお世話になっております。
>
> 返信して頂いてありがとうございました。
>
> CPU クロックを確認するコマンドが無い事と
> bogomips が参考にならない件、了解しました。
>
> > どのような処理で、30msの誤差が出ているか教えてもらえますか?
>
> OpenCV と Armadillo-810 のカメラを使った画像処理の一部です。
>
>
> 組んでいる最中のプログラムは
> 処理結果を標準出力に文字列を出力しているのですが、
> 「カーネルや他のアプリがCPUを使っている」事を確認するために
> cat /proc/stat
> top -n 1
> などを system("cat /proc/stat"); などのようにして所々で
> 確認しようと思っています。
>
> ついでにメモリの使用状況も把握したいので
> cat /proc/meminfo
> も実行し、プログラムが終了した後でログを見て CPU やメモリの
> 使用状況と、遅延が発生する原因がわかれば、と思っています。
>
> 他に適切な方法があるようでしたらお教え下さい。
>
> 以上、よろしくお願いします。
>

chihiro

2014年9月10日 10時04分

kensaku 様

いつもお世話になっております。

返信して頂いてありがとうございました。

カメラフレーム取得の件で教えて頂いてありがとうございました。
cvQueryFrame を使って取得しています。
確認した所、遅延が発生する箇所はカメラフレーム取得の部分ではなさそうです。

nice コマンドと言う物を試して優先度を変更したいのですが、
その前にナイス値を確認したいと思います。
ナイス値の一覧はどのように取得するか分かりますでしょうか?
ウェブで調べると top か ps -l らしいのですが、ATDE5 と
Armadillo-810 とで表示される項目が異なるようです。

○ top コマンド

ATDE5
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
atmark-dist v1.33.0
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND

○ ps -l

ATDE5
atmark@atde5:/mnt/hgfs/vm$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
atmark-dist v1.33.0
[root@armadillo810-0 (ttySC2) /home/ftp/pub]# ps -l
PID   USER     TIME   COMMAND

初歩的な質問なのかも知れませんが、よろしくお願いします。

chihiro

2014年9月10日 13時47分

いつもお世話になっております。

すみません、自己解決しました。

http://serverfault.com/questions/104125/busybox-how-to-list-process-pri…
より
busybox ps -o pid,nice,user,args
とする事で nice 値が確認できました。

[root@armadillo810-0 (ttySC2) /home/ftp/pub]# busybox ps -o pid,nice,user,args
PID   NI    USER     COMMAND
    1     0 root     init
    2     0 root     [kthreadd]
    3     0 root     [ksoftirqd/0]
    4     0 root     [kworker/0:0]
    5     0 root     [kworker/u:0]
    6   -20 root     [cpuset]
    7   -20 root     [khelper]
    8   -20 root     [netns]
    9     0 root     [kworker/u:1]
(以下省略)

もう少し、いろいろと試してみたいと思います。

kensaku

2014年9月10日 17時16分

kensakuと申します。
回答が遅くなりすみません。

確認出来たようで何よりです。
※下記のようなコマンドは初めて知りました、展開有難う御座います。

もし、ATDEと同じコマンドが使用したいのであれば
・SDカードを使用したDebianブートでArmadilloを動かす
・atmark-distでmake menuconfigからglibcを使うようにする。
のどちらかになるかと思います。

後者は若干知識が必要ですが、時間のある時に試されてみてはどうでしょうか。
(確か過去の掲示板でArmadillo上でBusyboxを使わないようにするやり方が書いてあったと思いますが・・・)

以上、宜しくお願い致します。

> いつもお世話になっております。
>
> すみません、自己解決しました。
>
> http://serverfault.com/questions/104125/busybox-how-to-list-process-pri…
> より
> busybox ps -o pid,nice,user,args
> とする事で nice 値が確認できました。
>
>

> [root@armadillo810-0 (ttySC2) /home/ftp/pub]# busybox ps -o pid,nice,user,args
> PID   NI    USER     COMMAND
>     1     0 root     init
>     2     0 root     [kthreadd]
>     3     0 root     [ksoftirqd/0]
>     4     0 root     [kworker/0:0]
>     5     0 root     [kworker/u:0]
>     6   -20 root     [cpuset]
>     7   -20 root     [khelper]
>     8   -20 root     [netns]
>     9     0 root     [kworker/u:1]
> (以下省略)
> 

>
> もう少し、いろいろと試してみたいと思います。
>