File: readprofile.1

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (205 lines) | stat: -rw-r--r-- 7,471 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
.\"
.\" Japanese Version Copyright (c) 1997 Koso Fukuba
.\"         all rights reserved.
.\" Translated Mon Jan 27 12:00:00 JST 1997
.\"         by Koso Fukuba <koso@ga2.so-net.or.jp>
.\"         for util-linux-2.5
.\" Translated Tue Sep 02 12:00:00 JST 1997
.\"         by Koso Fukuba <koso@ga2.so-net.or.jp>
.\"         for util-linux-2.7
.\" Updated Mon Apr  9 20:17:43 JST 2001
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated & Modified Wed Aug 28 04:34:09 JST 2002 by Yuichi SATO
.\" Updated & Modified Sat May  1 17:16:36 JST 2004 by Yuichi SATO
.\"
.TH READPROFILE 1 "May 1996"
.UC 4
.SH 名前
readprofile - カーネルのプロファイリング情報を読みだすツール
.SH 書式
.B readprofile
[
.I options
]

.SH バージョン
このオンラインマニュアルは、バージョン 2.0 のものである。

.SH 説明

.LP
.B readprofile
コマンドは、
.B /proc/profile
の情報を標準出力に出力する。
出力される情報は、3 種類の情報から構成されている。
最初の項目は、クロックチック (clock tick) である。
2 番目は、たくさんの時間を消費しているカーネル内部の C の関数名である。
3 番目の項目は、手続きの「負荷」を正規化したもので、
関数の長さとクロック数の比率として計算される。
これらの項目は、読み取りやすいように空白を入れ、桁を揃えて出力される。

.LP
次のコマンドラインオプションを指定できる:

.TP
.RB -m " mapfile"
マップファイルを指定する。
デフォルトでは、
.B /usr/src/linux/System.map
が使用される。
現在のカーネルが最後にコンパイルしたものでない場合、
または System.map を他の場所に保存している場合は、
コマンドライン上でマップファイルを指定する必要がある。
マップファイル名の最後が `.gz' となっている場合は、
実行時に自動的に伸長される。

.TP
.RB -p " pro-file"
別のプロファイリングバッファを指定する。
デフォルトでは、
.B /proc/profile
が使用される。
別のプロファイリングバッファを使用すると、
カーネルプロファイリングを「凍結」した後で
プロファイリング情報を読む場合などに有用である。
.B /proc/profile
は、`cat' や、`cp' コマンドを使ってコピーすることができる。
プログラムがプロファイリングバッファのサイズを
前もって取得する必要があるため、
.B readprofile-1.1
で行なわれていた、
圧縮されたプロファイリングバッファはサポートされなくなった。

.TP
.B -i
カーネルプロファイリング情報の表示。
このオプションを指定すると、
.B readprofile
は、カーネルによって使用されている
プロファイリングステップのみを表示する。
プロファイリングステップはプロファイリングバッファの精度であり、
(make config を使った) カーネルの設定、
またはカーネルのコマンドラインで指定される。
.B -t
(terse: 簡潔モード) スイッチが
.B -i
と一緒に指定されると、単に 10 進数の数字のみが表示される。

.TP
.B -a
マップファイル中のすべてのシンボルを表示する。
デフォルトでは、使用クロック数が 0 の手続きは出力されない。

.TP
.B -b
各メモリ領域に対する出現数のカウントを表示する。

.TP
.B -r
プロファイリングバッファの内容を初期化する。
.B /proc/profile
は、スーパーユーザーだけが書き込み可能で、
一般ユーザーは読み込みしかできないため、
このオプションを使用するには、スーパーユーザーの権限が必要となる。
しかし、
.B readprofile
を setuid 0 とすることで、特権を持たないユーザーでも
プロファイリングバッファの内容を初期化することができる。

.TP
.RB -M " multiplier"
カーネルがプロファイリング割り込みを各 CPU に送る周期を変更できる
アーキテクチャもある。
このオプションにより、
周期をシステムクロック周波数 HZ の倍数で設定できる。
i386-SMP (2.2 と 2.4 カーネル) と
sparc64-SMP (2.4 カーネル) でサポートされている。
このオプションはプロファイリングバッファの初期化も行うので、
スーパーユーザー特権が必要である。

.TP
.B -v
詳細モード。
出力は 4 つの項目から構成され、それぞれ空白により桁が揃えられる。
最初の項目はカーネルの関数の RAM アドレス、
2 番目の項目は関数の名前、
3 番目の項目は使用したクロック数、
最後の項目には正規化された負荷が表示される。

.TP
.B -V
バージョン情報の表示。
.B readprofile
は、現在のバージョン番号を表示した後、終了する。

.SH 例
プロファイリングバッファの内容を使用したクロック数の順に表示するには:
.nf
   readprofile | sort -nr | less

.fi
最もたくさんクロックを使用した関数の上位 20 個を表示するには:
.nf
   readprofile | sort -nr +2 | head -20

.fi
ファイルシステムのプロファイリング情報だけを表示するには:
.nf
   readprofile | grep _ext2

.fi
すべてのカーネル情報を RAM アドレスと一緒に表示させるには:
.nf
   readprofile -av | less

.fi
現在のカーネルのものではない「凍結された」
プロファイリングバッファの内容を表示するには:
.nf
   readprofile -p ~/profile.freeze -m /zImage.map.gz

.fi
各 CPU に対して 2kHz の周期でプロファイリングを要求し、
プロファイリングバッファを初期化するには:
.nf
   sudo readprofile -M 20

.fi

.SH バグ

.LP
カーネルバージョン 1.2 から 1.3 で
.B /proc/profile
が変更されたため、
.B readprofile
は 1.3.x 以降のカーネルでのみ動作する。

.LP
このプログラムは、ELF カーネルでのみ動作する。
a.out カーネルへの変更は大きな作業ではない。
a.out カーネルユーザーへの練習問題として残してある。

.LP
プロファイリングを有効にするためには、
カーネルの (再構築と) リブートが必要である。
これはプロファイリング用のモジュールは存在せず、
かつ、簡単には作れないためである。
プロファイリングを有効にするには、カーネルのコマンドライン上で、
"profile=2" (または、別の数字) を指定する必要がある。
この数字を指数として 2 を累乗したものが、
プロファイリングステップとして使用される。

.LP
プロファイリングは、割り込みが禁止されていると使用できない。
これは、割り込みを再び有効にするときに、
多くのプロファイリングのカウントが行われることを意味する。
誤った情報に注意すること。

.SH ファイル
.nf
/proc/profile              プロファイリングバッファのバイナリスナップショット
/usr/src/linux/System.map  カーネルのシンボルテーブル
/usr/src/linux/*           プロファイルされるプログラム :-)
.fi