Monday, October 3, 2016 5:00AM to 11:00AM (UTC) Schedouled down time to change site domain

sysprofでシステム全体の動作をプロファイリングする

 アプリケーションのプロファイリングを行うと、どの関数が最もCPU時間を消費しているかがわかる。つまり、最適化の労力はそうした部分のコードの高速化に集中させればよいわけだ。 sysprof を使えば、マルチスレッド化またはマルチプロセス化されたアプリケーションや、複数の部分から成る込み入ったサーバアプリケーションなど、マシンで実行中のすべてのアプリケーションをプロファイリングできる。sysprofは、それらアプリケーションの実行時にどれほどの時間がそれぞれのライブラリや関数に使われているかという情報を収集してくれる。

 sysprofはカーネルモジュールと、プロファイリングを実行できるグラフィカルなGTK+インタフェースの双方から成り、UbuntuopenSUSE 10.3Fedora用のパッケージが揃っている。sysprofを最大限に活用するには、プロファイリングを行うすべてのアプリケーションについてデバッグ情報を用意する必要もある。デバッグ情報がないと、プロファイル情報には共有ライブラリの名前しか表示されず、そのライブラリ内のどの関数が最も時間を消費しているかはわからない。sysprofの柔軟性は非常に高く、配備済みシステムにこうしたデバッグ情報(debuginfo)パッケージを一時的にインストールしてプロファイリングを開始し、システム動作速度低下の原因を探ることができる。

 デバッグ用パッケージのインストール後は、次の2つのステップで起動と実行を行う。まず「modprobe sysprof-module」としてカーネルモジュールを挿入し、続いてsysprofコマンドの実行によってグラフィカルインタフェースを起動して、ツールバーの「Start」ボタンをクリックする。この時点から、マシンのあらゆる動作がsysprofによる監視とプロファイリングの対象となる。

sysprof_thumb.png
sysprof

 sysprofによるプロファイル情報の記録が始まったら、プロファイリング対象となるアプリケーションを起動して普段どおりに操作を行う。プロファイルを取りたい作業の実行が済んだら、ツールバーのプロファイルボタンをクリックする。すると、sysprofによるシステムの監視が中止され、記録されたプロファイルデータを参照できるようになる。また、記録されたプロファイルデータの保存や読み込みも可能だ。プロファイル情報はXML形式で保存される。読み込み時に解決が必要なシンボル参照は一切なかったので、このXMLファイルの分析は保存を行ったマシンとは別のマシンでも行えるはずだ。