[[PageNavi(NavigationList)]]
==== サンプルデータの取得 ====
以上でサンプルデータを取得する準備は完了だ。続いて、実際にサンプルデータを取得してみよう。
サンプルデータの取得は、「sep」コマンドで行う。詳細については付属ドキュメント(/opt/intel/vtune/doc以下に格納されている)を参照してほしいが、たとえばシステム全体に対して20秒間のサンプリングを行い、結果を/tmp/以下に「my_data」として保存するには次のようにする。
{{{
$ cd /tmp
$ /opt/intel/vtune/bin/sep -start -d 20 -out my_data
}}}
サンプリングが完了すると、/tmp以下にサンプリングデータを格納したファイル(チューニングファイル)が保存される。たとえば上記のように実行した場合、「my_data.tb5」というファイルが作成される。サンプリング結果を参照・解析するにはこのファイルをホストに転送し、VTuneで開けば良い。
{{{
$ scp my_data.tb5 <ホストのIPアドレス>:
}}}
==== VTuneでサンプリング結果を解析する ====
取得したサンプリングデータは、ホスト側でVTuneのGUIを使用して解析できる。VTuneのGUIは次のようにして起動できる。なお、ドキュメントにも記載されているが、VTuneはroot権限で起動する必要がある。root権限のない一般ユーザーでも起動はできるものの、解析機能を利用しようとすると「モジュールが読み込めない」といった旨のメッセージが表示されて正しく動作しないので注意してほしい。
{{{
$ sudo /opt/intel/atom/vtune/bin/vltec
}}}
[[Thumb(7103e950d06faa11c360aa2a0246df81.png, caption=図8 起動直後のVTuneウィンドウ)]]
VTuneを起動したら、「File」メニューの「Import」を選択する。「Import」ウィザードが表示されるので、まず「Other」−「Tuning file」を選択して「Next」をクリックしよう('''図9''')。「Import a Tuning File」画面が表示されるので、読み込むチューニングファイルを選択して「Finish」をクリックしよう。
[[Thumb(2c8e78a5624f55645aa5d39ea6e20185.png, caption=図9 「Import」ウィザードでサンプリング結果を保存したファイルを開く。「Select an import source」で「Other」−「Tuning file」を選択し、続いてチューニングファイルを選択する)]]
すると、VTuneのメインウィンドウ左下にある「Tuning Browser」に読み込んだチューニングファイルが追加されるので、「Imported Sampling Results」をダブルクリックするとサンプリング結果が表示される('''図10''')
[[Thumb(781914a617f9cd8373b3fdf38fa66cf2.png, caption=図10 「Tuning Browser」で対象を選択し、ダブルクリックでサンプリング結果が表示される。)]]
サンプリング結果には、サンプリング中に実行されていたすべてのプロセスに関する情報が含まれている。「Process」タブを選択するとプロセス一覧が表示されるので、ここで詳細情報を確認したいプロセスをダブルクリックすると、今度は「Thread」タブに切り替わり、そのプロセスが使用していたスレッドが表示される('''図11''')。
[[Thumb(cb9a74a6898e4f5460acb958f9945a43.png, caption=図11 「Thread」タブでは、「Process」タブで選択したプロセスのスレッドが一覧表示される)]]
VTuneによるサンプリング結果解析ではこのように「プロセス→スレッド→モジュール→ホットスポット」という順で確認したい情報を絞り込んでいく。最後の「ホットスポット」では、関数レベルでのサンプリング情報を確認できる。
なお、ホットスポットの確認を行う際に対象となるモジュールのバイナリがローカルで見つからない場合、'''図12'''のようなメッセージボックスが表示される場合がある。この場合は、適宜対象となるバイナリを手動で指定すれば良い。
[[Thumb(1d3b4ecca5e106c3799b2fb814fe2fdc.png, caption=図12 対象となるモジュールのバイナリが見つからない場合は手動で選択する必要がある)]]
また、VTuneではサンプリング中に実行されていたすべてのプロセスについて情報を取得できるが、ホットスポット情報を表示するには対象とするプロセスの実行ファイルにデバッグ情報が含まれている(つまり「-g」オプション付きでコンパイルされている)必要があるので注意したい。
さて、'''図13'''はbzip2が使用する「libbz2.so.1.0.4」というモジュールのホットスポット情報を表示した例だ。ここから、「mainSort」という関数が最もCPU時間を消費していることが分かる。
[[Thumb(e7ecf5b03d6069e460097551636b0f14.png, caption=図13 「libbz2.so.1.0.4」のホットスポット。「mainSort」関数がもっともCPU時間を消費していることが分かる)]]
さらに、「mainSort」をダブルクリックすると該当するソースコードが表示され、ソースコード内の行レベルでどの処理がどれだけCPU時間を消費しているのかを確認できる('''図14''')。これで処理のボトルネックとなっている部分を見つけ出すことができるというわけだ。
[[Thumb(5b131312c5266f19db50cf265c2d137e.png, caption=図14 関数名をダブルクリックするとソースコードが表示され、ソースコードレベルで消費したCPU時間を確認できる)]]
==== クロス開発環境で非常に有用なインテル Atom プロセッサー向け インテル アプリケーション・ソフトウェア開発ツール・スイート ====
Moblinアプリケーション開発のようなクロス開発においては、開発を行うマシンと実際にアプリケーションを実行するマシンが異なるため、デバッグやパフォーマンス解析が難しかったり、手間がかかることが多い。しかし、インテル アプリケーション・デバッガーやVTuneでは、非常に簡単にデバッグやパフォーマンス解析が行える。ユーザーインターフェイスが貧弱なMIDや車載情報端末といったデバイスでは、これらを用いたリモートデバッグやリモートプロファイリングが特に有効である。これらの開発を行っているなら、インテル Atom プロセッサー向け インテル アプリケーション・ソフトウェア開発ツール・スイートはぜひ導入を検討すべき製品と言えるだろう。
[[PageNavi(NavigationList)]]