英語フランス語スペイン語

OnWorksファビコン

perf-report - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して OnWorks 無料ホスティング プロバイダーで perf-report を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perf-report です。

プログラム:

NAME


perf-report - perf.data (perf レコードによって作成) を読み取り、プロファイルを表示します

SYNOPSIS


perf レポート [-私| --input=ファイル]

DESCRIPTION


このコマンドは、perf 経由で記録されたパフォーマンス カウンター プロファイル情報を表示します。
記録。

OPTIONS


-i、--input=
ファイル名を入力します。 (標準入力が FIFO でない場合、デフォルト: perf.data)

-v、-verbose
より冗長になります。 (シンボルアドレスなどを表示)

-n、--show-nr-samples
各シンボルのサンプル数を表示します

--show-cpu-utilization
さまざまな CPU モードのサンプルの割合を表示します。

-T、--スレッド
スレッドごとのイベント カウンターを表示します。 入力データファイルは、-s オプションを使用して記録する必要があります。

-c、--comms=
これらの通信ではシンボルのみを考慮してください。 わかるCSV ファイル://ファイル名 エントリー。
このオプションは、オーバーヘッド列の割合に影響します。 --percent を参照してください。
より詳しい情報。

--pid=
指定されたプロセス ID (カンマ区切りリスト) のイベントのみを表示します。

--tid=
指定されたスレッド ID (カンマ区切りリスト) のイベントのみを表示します。

-d、--dsos=
これらの DSO 内のシンボルのみを考慮してください。 わかるCSV ファイル://ファイル名 エントリー。
このオプションは、オーバーヘッド列の割合に影響します。 --percent を参照してください。
より詳しい情報。

-S、--シンボル=
これらの記号のみを考慮してください。 わかるCSV ファイル://ファイル名 エントリ。 このオプション
オーバーヘッド列のパーセンテージに影響します。 詳細については、「--percentage」を参照してください。

--シンボルフィルター=
このフィルターに(部分的に)一致するシンボルのみを表示します。

-U、--未解決の非表示
シンボルに解決されたエントリのみを表示します。

-s、--sort=
ヒストグラム エントリを指定されたキーで並べ替えます。CSV 形式で複数のキーを指定できます。
次のソートキーが利用可能です: pid、comm、dso、symbol、parent、cpu、socket、
srcline、重み、local_weight。

各キーには次の意味があります。

· comm: 経由で読み込むことができるタスクのコマンド (名前) / proc //comm

· pid: コマンドとタスクの tid

· dso: サンプル時に実行されたライブラリまたはモジュールの名前

・記号:サンプル時に実行した関数名

·parent: 親正規表現フィルターに一致する関数の名前。 一致しないエントリは、
「【その他】」と表示されます。

· cpu: サンプル時にタスクが実行された CPU 番号

· ソケット: サンプル時にタスクが実行されたプロセッサのソケット番号

· srcline: サンプル時に実行されたファイル名と行番号。 ドワーフ
デバッグ情報を提供する必要があります。

・srcfile:同ソースファイルのファイル名。 ドワーフの情報が必要です。

· 重み: イベント固有の重み (メモリ遅延やトランザクション中止コストなど)。 これ
は地球の重みです。

· local_weight: 上記の重みのローカル重みバージョン。

· トランザクション: トランザクション中止フラグ。

· オーバーヘッド: サンプルのオーバーヘッドの割合

· overhead_sys: システム モードで実行されているサンプルのオーバーヘッドの割合

· overhead_us: ユーザー モードで実行されているサンプルのオーバーヘッドの割合

· overhead_guest_sys: ゲスト上でシステム モードで実行されているサンプルのオーバーヘッドの割合
機械

· overhead_guest_us: ゲスト上のユーザー モードで実行されているサンプルのオーバーヘッドの割合
機械

・サンプル:サンプル数

・period:サンプルのイベントカウントの生の数

デフォルトでは、comm、dso、およびシンボル キーが使用されます。
(つまり --sort comm,dso,symbol)

--branch-stack オプションを使用した場合、以下のソートキーも追加されます。
入手可能:
dso_from、dso_to、symbol_from、symbol_to、予測ミス。

· dso_from: 分岐元のライブラリまたはモジュールの名前

· dso_to: 分岐先のライブラリまたはモジュールの名前

·symbol_from:分岐元の関数の名前

·symbol_to: 分岐先の関数の名前

· 予測ミス: 予測された分岐の場合は「N」、予測を誤った分岐の場合は「Y」

· in_tx: TSXトランザクションでの分岐

· abort: TSX トランザクションを中止します。

· サイクル: 基本ブロック内のサイクル

また、デフォルトのソートキーは comm、dso_from、symbol_from、dso_to に変更されます。
およびsymbol_toについては、「--branch-stack」を参照してください。

-F、--フィールド=
出力フィールドの指定 - CSV 形式で複数のキーを指定できます。 次のフィールド
利用可能: overhead、overhead_sys、overhead_us、overhead_children、sample、および
期間。 また、任意のソートキーを含めることもできます。

デフォルトでは、-F で指定されていないすべてのソートキーが追加されます。
自動的に。

--mem-mode オプションを使用すると、次のソートキーも使用できます
(--branch-stack とは互換性がありません):
symbol_daddr、dso_daddr、ロック、tlb、mem、スヌープ、dcacheline。

·symbol_daddr: サンプル時に実行されているデータシンボルの名前

· dso_daddr: 実行中のデータを含むライブラリまたはモジュールの名前。
サンプルの時間

· locked: サンプル時にバスがロックされているかどうか

· tlb: サンプル時のデータに対する tlb アクセスのタイプ

· mem: サンプル時のデータのメモリアクセスの種類

· スヌープ: サンプル時のデータのスヌープのタイプ (存在する場合)

· dcacheline: サンプル時にデータ アドレスが存在するキャッシュライン

また、デフォルトのソートキーは local_weight、mem、sym、dso、
symbol_daddr、dso_daddr、スヌープ、tlb、ロックされています。「--mem-mode」を参照してください。

-p、--parent=
親を識別するための正規表現フィルター。 親はこの関数の呼び出し元であり、
コールチェーンを通じて検索されるため、コールチェーン情報を記録する必要があります。 の
パターンは拡張正規表現形式であり、デフォルトは「^sys_|^do_page_fault」です。を参照してください。
- 選別 .

-x、--その他を除外
親一致のあるエントリのみを表示します。

-w、--列幅=
端末を読みやすくするために、各列の幅を指定されたリストに強制します。 0は意味します
制限なし (デフォルトの動作)。

-t、--フィールドセパレータ=
特殊な区切り文字を使用し、スペースを埋め込まず、すべての出現箇所を置き換えます。
シンボル名 (およびその他の出力) 内のこの区切り文字を、 . キャラクター、つまり
これは唯一無効な区切り文字です。

-D、--ダンプ-生のトレース
生のトレースを ASCII でダンプします。

-g、--call-graph=
タイプ、最小パーセントしきい値、印刷制限、呼び出し順序、並べ替えを使用して呼び出しチェーンを表示します。
キーとブランチ。 パラメータの順序は固定されていないため、任意のパラメータを使用できることに注意してください。
恣意的な命令で与えられる。 XNUMX つの例外は print_limit です。これは前に置く必要があります。
しきい値ごとに。

print_type は次のいずれかになります。
- フラット: 単一列、コール チェーンの線形露出。
- グラフ: 絶対オーバーヘッド率を表示するグラフ ツリーを使用します。 (デフォルト)
- フラクタル: グラフと似ていますが、相対率を表示します。 の各支店
ツリーは新しいプロファイルされたオブジェクトとみなされます。
- none: コールチェーンの表示を無効にします。

しきい値は、最小パーセントを指定するパーセント値です。
出力コールグラフに含まれます。 デフォルトは 0.5 (%) です。

print_limit は、stdio インターフェイスが使用されている場合にのみ適用されます。 制限することだよ
単一の履歴エントリ内のコール グラフ エントリの数。 必要であることに注意してください
しきい値の後に与えられます (ただし、連続している必要はありません)。
デフォルトは 0 (無制限) です。

順序は次のいずれかになります。
- 呼び出し先: 呼び出し先ベースのコール グラフ。
- 呼び出し元: 反転呼び出し元ベースのコール グラフ。
--children が使用されている場合のデフォルトは「caller」、それ以外の場合は「callee」です。

sort_key は次のとおりです。
- 関数: 関数の比較 (デフォルト)
- アドレス: 個々のコードのアドレスを比較します。

ブランチは次のとおりです。
- ブランチ: 利用可能な場合、コールグラフに最後のブランチ情報を含めます。
通常、これには --branch-history を使用する方が便利です。

- 子供
子のコールチェーンを親エントリに蓄積して、
出力。 出力には新しい「Children」列があり、データに基づいて並べ替えられます。
コールチェーンを記録する必要があります。 詳細については、「オーバーヘッドの計算」セクションを参照してください。
詳細。

--最大スタック
コールチェーンを解析するときのスタックの深さの制限を設定します。指定されたものを超えるものはありません。
深さは無視されます。 これは情報損失と高速化とのトレードオフです。
特に非常に長いコールチェーン スタックを持つ可能性のあるワークロードの処理。 ノート
--itrace オプションを使用すると、合成されたコールチェーンのサイズがこれをオーバーライドします。
合成されたコールチェーンのサイズが大きい場合の値。

デフォルト:127

-G、--反転
逆呼び出し元ベースのコール グラフのエイリアス。

--ignore-callees=
指定された正規表現に一致する関数の呼び出し先を無視します。 これには次のような効果があります。
このような各関数の呼び出し元をコール グラフ ツリー内の XNUMX か所に集めます。

--かなり=
かわいいプリントスタイル。 キー: ノーマル、生

--stdio
標準入出力インターフェースを使用します。

--トゥイ
Annotate と統合され、DSO にズームインできる TUI インターフェイスを使用します。
またはスレッドなどの機能があります。 --tui を使用するには tty が必要です (存在しない場合)。
他のコマンドにパイプする場合と同様に、stdio インターフェイスが使用されます。

--gtk
GTK2 インターフェイスを使用します。

-k、--vmlinux=
vmlinux パス名

--kallshms=
kallshms パス名

-m、--モジュール
モジュールシンボルをロードします。 警告: これは、-k および LIVE カーネルと一緒にのみ使用してください。

-f、-force
文句を言わないで、やってください。

--symfs=
このディレクトリに関連するシンボルを含むファイルを探します。

-C、--cpu
提供されている CPU のリストのサンプルのみをレポートします。 複数のCPUをXNUMXつのCPUとして提供できます。
スペースを含まないカンマ区切りのリスト: 0,1。 CPU の範囲は -: 0 ~ 2 で指定します。
デフォルトでは、すべての CPU のサンプルがレポートされます。

-M、--逆アセンブラスタイル=
objdump の逆アセンブラ スタイルを設定します。

- ソース
ソース コードとアセンブリ コードをインターリーブします。 デフォルトで有効になっていますが、無効にするには
--ソースなし。

--asm-生
アセンブリ命令の生の命令エンコーディングを表示します。

--合計期間の表示
期間の合計を含む列を表示します。

-I、--show-info
perf.data ファイルに関する拡張情報を表示します。 これにより、次のような情報が追加されます。
非常に大きいため、ディスプレイが乱雑になる可能性があります。 現在含まれているもの: CPU と NUMA
ホスト システムのトポロジ。

-b、--ブランチスタック
命令アドレスの代わりにサンプリングされた分岐のアドレスを使用して、
ヒストグラムを作成します。 意味のある出力を生成するには、perf.data ファイルが
perf record -b または perf record --branch-filter xxx を使用して取得します。xxx はブランチです。
フィルターオプション。 perf レポートは、perf.data ファイルに次のものが含まれているかどうかを自動検出できます。
ブランチ スタックを作成すると、次の場合を除き、自動的にブランチ ビュー モードに切り替わります。
--no-branch-stack が使用されます。

--支店履歴
サンプリングされた分岐のアドレスをコールスタックに追加します。 これにより、検査が可能になります
プログラムが各サンプルに到達するまでにたどったパス。 データ収集では -b (または
-j) および -g。

--objdump=
objdump バイナリへのパス。

- グループ
イベントグループ情報をまとめて表示します。

-デマングル
シンボル名を人間が読める形式にデマングルします。 デフォルトで有効になっていますが、無効にするには
--デマングルなし。

--デマングル-カーネル
カーネル シンボル名を人間が読める形式にデマングルします (C++ カーネルの場合)。

--mem-mode
命令アドレスに加えてサンプルのデータ アドレスを使用して、
ヒストグラム。 意味のある出力を生成するには、perf.data ファイルを取得しておく必要があります。
perf Record -d -W を使用し、特殊イベント -e cpu/mem-loads/ または -e を使用する
cpu/mem-stores/。 見る perf memの アクセスが簡単になります。

--パーセント制限
オーバーヘッドがそのパーセントを下回るエントリは表示しません。 (デフォルト: 0)。

-パーセンテージ
フィルタリングされたエントリのオーバーヘッドの割合を表示する方法を決定します。 フィルターは次のとおりです。
--comms、--dsos、および/または --symbols オプションと TUI でのズーム操作によって適用されます
(スレッド、DSO など)。

「相対」は、フィルタリングされたエントリのみに対して相対的であることを意味します。
表示されるエントリの合計は常に 100% になります。 「絶対」とは保持することを意味します
フィルター適用前後の元の値。

- ヘッダ
perf.data ファイルのヘッダー情報を表示します。 これには、次のようなさまざまな情報が含まれます
ホスト名、OS とパフォーマンスのバージョン、CPU/メモリ情報、パフォーマンス コマンド ライン、イベント リストなど。
現在、この機能は --stdio 出力のみがサポートされています。

--ヘッダーのみ
perf.data ヘッダーのみを表示します (--stdio を強制します)。

--itrace
命令トレース データをデコードするためのオプション。 オプションは次のとおりです。

指示イベントを合成します
b ブランチイベントを合成する
c ブランチイベントを合成します (呼び出しのみ)
r 分岐イベントを合成します (戻り値のみ)
x トランザクションイベントを合成する
エラーイベントを合成する
d デバッグログを作成する
g 呼び出しチェーンを合成します (i または x と一緒に使用します)
l 最後の分岐エントリを合成します (i または x とともに使用します)

デフォルトはすべてのイベント、つまり --itrace=ibxe と同じです

さらに、指示イベントの期間 (デフォルトは 100000)
次の単位で指定できます。

私は指示
tティック
ミリ秒
私たちマイクロ秒
ns ナノ秒 (デフォルト)

また、命令の呼び出しチェーン サイズ (デフォルトは 16、最大 1024)、または
トランザクションイベントを指定できます。

また、最後の分岐エントリの数 (デフォルトは 64、最大 1024)
命令またはトランザクションイベントを指定できます。

デコードを完全に無効にするには、--no-itrace を使用します。

--完全なソースパス
srcline 出力のソース ファイルのフル パスを表示します。

--show-ref-call-graph
複数のイベントがサンプリングされる場合、すべてのイベントのコールグラフを収集する必要がない場合があります。
そのうちの。 サンプルサイトは通常近くにあり、
参照イベントのコールグラフ。 したがって、ユーザーは「call-graph=no」イベント修飾子を使用して、
オーバーヘッドを減らすために、他のイベントのコールグラフを無効にします。 ただし、パフォーマンス レポートは実行できません。
コールグラフを無効にするイベントのコールグラフを表示します。 このオプションにより、
参照イベントによって収集された参照コールグラフを表示するパフォーマンス レポート
コールグラフイベント。

--ソケットフィルター
このフィルターと一致するプロセッサーソケット上のサンプルのみをレポートします

オーバーヘッド 計算


オーバーヘッドは次のように XNUMX つの列で表示できます。 子供達自己 パフォーマンスが集まるとき
コールチェーン。 の 自己 オーバーヘッドは、すべての期間値を加算することによって単純に計算されます。
エントリ - 通常は関数 (シンボル) です。 これは、perf が伝統的に示す値であり、
すべての合計 自己 オーバーヘッド値は 100% である必要があります。

この 子供 オーバーヘッドは、子関数のすべての期間値を加算することによって計算されます。
たとえそうでなくても、高レベル関数の合計オーバーヘッドを表示できること
多くのことを直接実行します。 子供達 ここでは、別の(親)から呼び出される関数を意味します
機能。

すべての合計は混乱を招くかもしれません 子供 オーバーヘッド値が 100% を超えているため、
それぞれがすでに蓄積されている 自己 子関数のオーバーヘッド。 しかし、
これを有効にすると、サンプルが
子どもたちに広がりました。

次の例を考えてみましょう。 以下のようなXNUMXつの機能があります。

.ft C
void foo(void) {
/* 何かをする */
}

ボイドバー(ボイド) {
/* 何かをする */
foo();
}

int main(void) {
バー()
0リターン;
}
.ft

この場合 foo の子です バー, バー ~の直系の子供です メイン so foo またです
の子 メイン。 言い換えると、 メイン の親です fooバー, バー の親です
foo.

すべてのサンプルが次のように記録されているとします。 fooバー それだけ。 コールチェーンで記録される場合
出力は、perf の通常の (自己オーバーヘッドのみの) 出力で以下のようなものを示します。
レポート:

.ft C
オーバーヘッドシンボル
……………………
60.00% フー
|
--- ふー
バー
メイン
__libc_start_main

40.00%バール
|
- - バー
メイン
__libc_start_main
.ft

--children オプションが有効な場合、 自己 子関数のオーバーヘッド値 (つまり、
fooバー) を計算するために親に追加されます。 子供 オーバーヘッド。 この場合、
レポートは次のように表示されます。

.ft C
子どもたちのセルフシンボル
………………………………
100.00% 0.00% __libc_start_main
|
--- __libc_start_main

100.00% 0.00% メイン
|
- - 主要
__libc_start_main

100.00% 40.00% バール
|
- - バー
メイン
__libc_start_main

60.00% 60.00% フー
|
--- ふー
バー
メイン
__libc_start_main
.ft

上記の出力では、 自己 のオーバーヘッド foo (60%) が追加されました 子供 のオーバーヘッド
バー, メイン__libc_start_main。 同様に、 自己 のオーバーヘッド バー (40%) を追加しました。
子供 のオーバーヘッド メイン\_\_libc_start_main.

So \_\_libc_start_mainメイン 同じ (100%) であるため、最初に表示されます。 子供
オーバーヘッド (ゼロであっても) 自己 オーバーヘッド)そして彼らはの親です foo
バー.

v3.16以降、 子供 デフォルトではオーバーヘッドが表示され、出力はそのオーバーヘッドによってソートされます。
値。 NS 子供 オーバーヘッドは、 --no-children オプションを指定することで無効になります。
コマンドラインまたは追加によって レポート.子供たち = false or トップ・チルドレン = false パフォーマンスで
設定ファイル。

onworks.net サービスを使用してオンラインで perf-report を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad