Provided by: manpages-ja_0.5.0.0.20161015+dfsg-1_all ![bug](/img/bug.png)
![bug](/img/bug.png)
名前
readprofile - カーネルのプロファイリング情報を読みだすツール
書式
readprofile [ options ]
バージョン
このオンラインマニュアルは、バージョン 2.0 のものである。
説明
readprofile コマンドは、 /proc/profile の情報を標準出力に出力する。 出力される情報は、3 種類の情報から構 成されている。 最初の項目は、クロックチック (clock tick) である。 2 番目は、たくさんの時間を消費している カーネル内部の C の関数名である。 3 番目の項目は、手続きの「負荷」を正規化したもので、 関数の長さとクロッ ク数の比率として計算される。 これらの項目は、読み取りやすいように空白を入れ、桁を揃えて出力される。 次のコマンドラインオプションを指定できる: -m mapfile マップファイルを指定する。 デフォルトでは、 /usr/src/linux/System.map が使用される。 現在のカーネ ルが最後にコンパイルしたものでない場合、 または System.map を他の場所に保存している場合は、 コマン ドライン上でマップファイルを指定する必要がある。 マップファイル名の最後が `.gz' となっている場合 は、 実行時に自動的に伸長される。 -p pro-file 別のプロファイリングバッファを指定する。 デフォルトでは、 /proc/profile が使用される。 別のプロ ファイリングバッファを使用すると、 カーネルプロファイリングを「凍結」した後で プロファイリング情報 を読む場合などに有用である。 /proc/profile は、`cat' や、`cp' コマンドを使ってコピーすることができ る。 プログラムがプロファイリングバッファのサイズを 前もって取得する必要があるため、 readprofile-1.1 で行なわれていた、 圧縮されたプロファイリングバッファはサポートされなくなった。 -i カーネルプロファイリング情報の表示。 このオプションを指定すると、 readprofile は、カーネルによって 使用されている プロファイリングステップのみを表示する。 プロファイリングステップはプロファイリング バッファの精度であり、 (make config を使った) カーネルの設定、 またはカーネルのコマンドラインで指 定される。 -t (terse: 簡潔モード) スイッチが -i と一緒に指定されると、単に 10 進数の数字のみが表示 される。 -a マップファイル中のすべてのシンボルを表示する。 デフォルトでは、使用クロック数が 0 の手続きは出力さ れない。 -b 各メモリ領域に対する出現数のカウントを表示する。 -r プロファイリングバッファの内容を初期化する。 /proc/profile は、スーパーユーザーだけが書き込み可能 で、 一般ユーザーは読み込みしかできないため、 このオプションを使用するには、スーパーユーザーの権限 が必要となる。 しかし、 readprofile を setuid 0 とすることで、特権を持たないユーザーでも プロファ イリングバッファの内容を初期化することができる。 -M multiplier カーネルがプロファイリング割り込みを各 CPU に送る周期を変更できる アーキテクチャもある。 このオプ ションにより、 周期をシステムクロック周波数 HZ の倍数で設定できる。 i386-SMP (2.2 と 2.4 カーネル) と sparc64-SMP (2.4 カーネル) でサポートされている。 このオプションはプロファイリングバッファの初 期化も行うので、 スーパーユーザー特権が必要である。 -v 詳細モード。 出力は 4 つの項目から構成され、それぞれ空白により桁が揃えられる。 最初の項目はカーネ ルの関数の RAM アドレス、 2 番目の項目は関数の名前、 3 番目の項目は使用したクロック数、 最後の項目 には正規化された負荷が表示される。 -V バージョン情報の表示。 readprofile は、現在のバージョン番号を表示した後、終了する。
例
プロファイリングバッファの内容を使用したクロック数の順に表示するには: readprofile | sort -nr | less 最もたくさんクロックを使用した関数の上位 20 個を表示するには: readprofile | sort -nr +2 | head -20 ファイルシステムのプロファイリング情報だけを表示するには: readprofile | grep _ext2 すべてのカーネル情報を RAM アドレスと一緒に表示させるには: readprofile -av | less 現在のカーネルのものではない「凍結された」 プロファイリングバッファの内容を表示するには: readprofile -p ~/profile.freeze -m /zImage.map.gz 各 CPU に対して 2kHz の周期でプロファイリングを要求し、 プロファイリングバッファを初期化するには: sudo readprofile -M 20
バグ
カーネルバージョン 1.2 から 1.3 で /proc/profile が変更されたため、 readprofile は 1.3.x 以降のカーネルで のみ動作する。 このプログラムは、ELF カーネルでのみ動作する。 a.out カーネルへの変更は大きな作業ではない。 a.out カーネ ルユーザーへの練習問題として残してある。 プロファイリングを有効にするためには、 カーネルの (再構築と) リブートが必要である。 これはプロファイリン グ用のモジュールは存在せず、 かつ、簡単には作れないためである。 プロファイリングを有効にするには、カーネ ルのコマンドライン上で、 "profile=2" (または、別の数字) を指定する必要がある。 この数字を指数として 2 を 累乗したものが、 プロファイリングステップとして使用される。 プロファイリングは、割り込みが禁止されていると使用できない。 これは、割り込みを再び有効にするときに、 多 くのプロファイリングのカウントが行われることを意味する。 誤った情報に注意すること。
ファイル
/proc/profile プロファイリングバッファのバイナリスナップショット /usr/src/linux/System.map カーネルのシンボルテーブル /usr/src/linux/* プロファイルされるプログラム :-)