SystemProfiler使ってみた

JetsonにはSystemProfilerってのが入っていて時系列にどのスレッドがCPU使用率高めだったのか確認できるらしい、ってことで試しに使ってみた。

前提

  1. Jetson側にはデータ採取用のドライバか何かが入っているっぽい
  2. 開発PC側から遠隔でJetson側に接続して測定対象のプロセスにアタッチするか、新しく起動するかして測定する
  3. 対象プロセスが終了するとデータをダウンロードして開発PC側のGUIにグラフを表示する

という流れ。


接続にはSSHが使えるのでSSHにした。

SystemProfilerの起動

ubuntuユーザのホームディレクトリでJetPackをインストールした環境だと以下に入っている。

/home/ubuntu/host-x64-linux-public-3.7.224-e982b7b/Host-x86_64

起動用のスクリプトが入っているので叩くとGUIが起動する。

ubuntu@ubuntu-desktop:~/host-x64-linux-public-3.7.224-e982b7b/Host-x86_64$ ./TegraSystemProfiler

sh: 1: adb: not found

とか言われるけど、Androidではないので気にしなくてよさそう?

ターゲットの設定

画面真ん中の「Project 1」タブ内部の右上が「Android」になっている。これを「Linux」に変更する。

接続先の設定

画面左上の方に「Manage network connections」のアイコンがある。*1

クリックしてウィンドウを出す。

左下1の「Create a new connection」を押すとSSHの新規接続先を登録できる。


2回目以降はこの画面の2「Connect」を選んでも良いし、最初の画面左上から登録済みのSSH接続先をクリックしても良い。

測定対象アプリの指定

画面真ん中あたりの「Target application」欄を設定する。

  • Modeを「Attach or launch」にする(アプリを新規起動する場合)
  • Command line with argumentsにコマンドライン引数付きのアプリ名を入れる
  • Working directoryにアプリのディレクトリを指定する(指定しないとアプリを起動できない)

環境変数を使う場合

ぱっと見た感じ、環境変数を設定する項目は見当たらない。とりあえずJetson側の/home/ubuntu下の「.bashrc」にexport文を追加することで対処した。

GUIアプリの場合

DISPLAY環境変数に「:0.0」とかを入れておく以外に、Jetson側がnvidiaユーザでログインしている場合、ログアウトしてubuntuユーザでログインしておく必要があるっぽい。JetPack3.0から?デフォルトでnvidiaユーザでのログインになったっぽいので注意が必要。

アプリの標準出力、標準エラー

Jetson側の「/tmp/nvidia/tegra_system_profiler/streams/」にファイルとして保存される。
こんな感じ。

ubuntu@tegra-ubuntu:/tmp/nvidia/tegra_system_profiler/streams$ ls -lh
total 0

  • rw-r--r-- 1 root root 0 Jul 24 09:42 pid_6310_stderr.log
  • rw-r--r-- 1 root root 0 Jul 24 09:42 pid_6310_stdout.log


ただ、測定を実施するたびに古いファイルが削除されるように見えた。

測定データの場所

デフォルトだと「/home/ubuntu/.tegraprofiler/Projects/Project 1」に入っている。

ubuntu@ubuntu-desktop:~/.tegraprofiler/Projects/Project 1$ ls -lh
合計 95M

  • rw-rw-r-- 1 ubuntu ubuntu 6.2K 7月 24 18:56 Project 1.qdproj
  • rw-rw-r-- 1 ubuntu ubuntu 69K 7月 18 22:01 Report 1.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 114K 7月 24 18:23 Report 2.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 111K 7月 24 18:29 Report 3.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 112K 7月 24 18:29 Report 4.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 8.3M 7月 24 18:34 Report 5.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 2.2M 7月 24 18:42 Report 6.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 22M 7月 24 18:46 Report 7.qdrep
  • rw-rw-r-- 1 ubuntu ubuntu 120M 7月 24 18:34 quadd-e427-6028-235b-4d70-mmap.tmp


こんな感じで各測定データが「Report X.qdrep」という名前のファイルで入っている。

SystemProfiler終了時

GUIを終了させるとターミナルにしばらく

QThread: Destroyed while thread is still running

と表示された後、終了するみたい。すぐ終了しないけど気にしなくてよさそう。

*1:画像は接続済みの状態。未接続状態とはアイコンなどが異なるので注意