llvm-profdata - プロファイルデータツール¶
概要¶
llvm-profdata command [args…]
説明¶
llvm-profdata ツールは、プロファイルデータファイルを扱うための小さなユーティリティです。
コマンド¶
MERGE¶
概要¶
llvm-profdata merge [options] [filename…]
説明¶
llvm-profdata merge は、PGOインストルメンテーションによって生成された複数のプロファイルデータファイルを受け取り、それらを単一のインデックス付きプロファイルデータファイルにマージします。
デフォルトでは、プロファイルデータは変更なしでマージされます。これは、各入力ファイルの相対的な重要度が、それに含まれるサンプル数またはカウント数に比例することを意味します。一般に、より長いトレーニング実行からの入力は、より短い実行よりも比較的重要であると解釈されます。トレーニング実行の性質によっては、-weighted-input
オプションを使用することにより、各入力ファイルに与える重みを調整すると便利な場合があります。
-weighted-input
、-input-files
、または位置引数を介して渡されたプロファイルは、見られるたびに一度処理されます。
オプション¶
- --help¶
コマンドラインオプションの概要を出力します。
- --output=<output>, -o¶
出力ファイル名を指定します。結果のインデックス付きプロファイルデータは標準出力に書き込むことができないため、Output は
-
にすることはできません。
- --weighted-input=<weight,filename>¶
重みとともに入力ファイル名を指定します。指定された
filename
のプロファイルカウントは、指定されたweight
でスケール(乗算)されます。weight
は1以上の10進整数です。このオプションを使用せずに指定された入力ファイルには、デフォルトの重み1が割り当てられます。例を以下に示します。
- --input-files=<path>, -f¶
マージするファイルのリストを含むファイルを指定します。このファイルのエントリは改行で区切られます。 '#'で始まる行はスキップされます。エントリは、<filename>または<weight>,<filename>の形式にすることができます。
- --remapping-file=<path>, -r¶
入力プロファイルのシンボル名から、出力プロファイルで使用する必要があるシンボル名へのリマッピングを含むファイルを指定します。ファイルは、
<input-symbol> <output-symbol>
の形式の行で構成する必要があります。空白行と#
で始まる行はスキップされます。llvm-cxxmapツールを使用して、シンボルリマッピングファイルを生成できます。
- --instr (default)¶
入力プロファイルがインストルメンテーションベースのプロファイルであることを指定します。
- --sample¶
入力プロファイルがサンプルベースのプロファイルであることを指定します。
生成されたファイルの形式は、次の3つの方法のいずれかで生成できます。
- --binary (default)¶
バイナリエンコーディングを使用してプロファイルを出力します。インストルメンテーションベースのプロファイルの場合、出力形式はインデックス付きバイナリ形式です。
- --extbinary¶
拡張可能なバイナリエンコーディングを使用してプロファイルを出力します。このオプションは、サンプルベースのプロファイルでのみ使用できます。拡張可能なバイナリエンコーディングは、圧縮を有効にするとよりコンパクトになり、デフォルトのバイナリエンコーディングよりも高速にロードできます。
- --text¶
テキストモードでプロファイルを出力します。このオプションは、サンプルベースとインストルメンテーションベースの両方のプロファイルで使用することもできます。このオプションを使用すると、プロファイルはプロファイルリーダーで解析可能なテキスト形式でダンプされます。
- --gcc¶
GCCのgcov形式を使用してプロファイルを出力します(まだサポートされていません)。
- --sparse[=true|false]¶
実行カウントが0の関数レコードを出力しません。-instrと組み合わせてのみ使用できます。PGO中にコンパイラーの最適化を阻害する可能性があるため、デフォルトはfalseです。
- --num-threads=<N>, -j¶
N個のスレッドを使用してプロファイルのマージを実行します。N = 0の場合、llvm-profdataは使用する適切なスレッド数を自動検出します。これがデフォルトです。
- --failure-mode=[any|all]¶
失敗モードを設定します。次の2つのオプションがあります。'any'は、プロファイルが無効な場合にマージコマンドを失敗させ、'all'は、すべてのプロファイルが無効な場合にのみマージコマンドを失敗させます。 'all'が設定されている場合、無効なプロファイルからの情報は、最終的なマージされた製品から除外されます。デフォルトの失敗モードは「any」です。
- --prof-sym-list=<path>¶
プロファイルにプロファイルシンボルリストを生成するためのシンボルのリストを含むファイルを指定します。このオプションは、extbinary形式のサンプルベースのプロファイルでのみ使用できます。このファイルのエントリは改行で区切られます。
- --compress-all-sections=[true|false]¶
プロファイルの書き込み時に、すべてのセクションを圧縮します。このオプションは、extbinary形式のサンプルベースのプロファイルでのみ使用できます。
- --use-md5=[true|false]¶
プロファイルの書き込み時に、名前テーブルで文字列を表すためにMD5を使用します。このオプションは、extbinary形式のサンプルベースのプロファイルでのみ使用できます。
- --gen-partial-profile=[true|false]¶
プロファイルを、最適化されたターゲットの一部のプロファイルカバレッジのみを提供する部分プロファイルとしてマークします。このオプションは、extbinary形式のサンプルベースのプロファイルでのみ使用できます。
- --split-layout=[true|false]¶
プロファイルデータセクションを、インライン化された関数を持つサンプルプロファイルを含むものと、含まないものの2つに分割します。このオプションは、extbinary形式のサンプルベースのプロファイルでのみ使用できます。
- --convert-sample-profile-layout=[nest|flat]¶
マージされたプロファイルを、新しいレイアウトを持つプロファイルに変換します。サポートされているレイアウトは、
nest
(ネストされたプロファイル。入力はCSフラットプロファイルである必要があります) とflat
(ネストされたインライン化をフラット化したプロファイル) です。
- --supplement-instr-with-sample=<ファイル>¶
インストルメンテーションプロファイルをサンプルプロファイルで補完します。サンプルプロファイルはフラグの入力です。出力はインストルメンテーション形式になります(-instrでのみ機能します)。
- --zero-counter-threshold=<浮動小数点数>¶
インストルメンテーションプロファイルではコールドだがサンプルプロファイルではホットな関数について、ゼロカウンターの数がカウンターの総数で割った比率がしきい値を超えている場合、その関数のプロファイルはパフォーマンスに有害であるとみなされ、破棄されます。
- --instr-prof-cold-threshold=<整数>¶
ユーザーが指定するインストルメンテーションプロファイルのコールドしきい値で、プロファイルサマリーから取得したコールドしきい値を上書きします。
- --suppl-min-size-threshold=<整数>¶
関数のサイズがしきい値より小さい場合、PGO初期インライナーによってインライン化される可能性があるとみなし、サンプルプロファイルに基づいて調整されません。
- --debug-info=<パス>¶
生のプロファイルのデバッグ情報を含む実行可能ファイルまたは
.dSYM
を指定します。--debug-info-correlate
または--profile-correlate=debug-info
がインストルメンテーションに使用された場合は、このオプションを使用して生のプロファイルを関連付けます。
- --binary-file=<パス>¶
生のプロファイルのプロファイルデータとプロファイル名セクションを含む実行可能ファイルを指定します。
-profile-correlate=binary
がインストルメンテーションに使用された場合は、このオプションを使用して生のプロファイルを関連付けます。
- --temporal-profile-trace-reservoir-size¶
出力プロファイルに保存される時間プロファイルトレースの最大数。より多くのトレースが追加された場合は、リザーバーサンプリングを使用して保持するトレースを選択します。同じインデックス付きプロファイルに対して異なるマージ呼び出し間でこの値を変更すると、サンプルのバイアスが発生する可能性があることに注意してください。デフォルト値は100です。
- --temporal-profile-max-trace-length¶
単一の時間プロファイルトレース内の関数の最大数。長いトレースは切り捨てられます。デフォルト値は1000です。
- --function=<文字列>¶
出力で正規表現に一致する関数のみを保持し、その他はプロファイルから削除します。
- --no-function=<文字列>¶
正規表現に一致する関数をプロファイルから削除します。–function と –no-function の両方が指定され、関数が両方に一致する場合は、削除されます。
例¶
基本的な使い方¶
3つのプロファイルをマージ
llvm-profdata merge foo.profdata bar.profdata baz.profdata -output merged.profdata
重み付けされた入力¶
入力ファイル foo.profdata
は特に重要であり、そのカウントに10を掛けます
llvm-profdata merge --weighted-input=10,foo.profdata bar.profdata baz.profdata --output merged.profdata
前の呼び出しと全く同等(明示的な形式。プログラムによる呼び出しに便利)
llvm-profdata merge --weighted-input=10,foo.profdata --weighted-input=1,bar.profdata --weighted-input=1,baz.profdata --output merged.profdata
表示¶
概要¶
llvm-profdata show [オプション] [ファイル名]
説明¶
llvm-profdata show はプロファイルデータファイルを受け取り、このファイルおよび指定された関数に関するプロファイルカウンターに関する情報を表示します。
ファイル名 が省略されているか、-
の場合、llvm-profdata show は標準入力から入力を読み取ります。
オプション¶
- --all-functions¶
すべての関数の詳細を出力します。
- --binary-ids¶
プロファイルに埋め込まれたバイナリIDを出力します。
- --counts¶
表示された関数のカウンター値を出力します。
- --show-format=<text|json|yaml>¶
提供されたプロファイルタイプでサポートされている場合は、選択された形式で出力を出力します。
- --function=<文字列>¶
関数の名前に指定された文字列が含まれている場合に、その関数の詳細を出力します。
- --help¶
コマンドラインオプションの概要を出力します。
- --output=<出力>, -o¶
出力ファイル名を指定します。出力 が
-
であるか、指定されていない場合、出力は標準出力に送信されます。
- --instr (デフォルト)¶
入力プロファイルがインストルメンテーションベースのプロファイルであることを指定します。
- --text¶
インストルメンテーションベースのプロファイルデータ表現のテキスト形式でプロファイルカウントを表示するようにプロファイルダンパーに指示します。デフォルトでは、プロファイル情報は、注釈付きで、より人間が読みやすい形式(テキスト形式)でダンプされます。
- --topn=<n>¶
サマリーセクションで最もホットな基本ブロックを持つ上位
n
個の関数を表示するようにプロファイルダンパーに指示します。デフォルトでは、topn関数はダンプされません。
- --sample¶
入力プロファイルがサンプルベースのプロファイルであることを指定します。
- --memop-sizes¶
表示された関数のメモリイントリンシック呼び出しのプロファイルされたサイズを表示します。
- --value-cutoff=<n>¶
最大カウント値が
n
以上である関数のみを表示します。デフォルトでは、value-cutoffは0に設定されています。
- --list-below-cutoff¶
最大カウント値がカットオフ値を下回る関数の名前のみを出力します。
- --profile-version¶
プロファイルバージョンを出力します。
- --showcs¶
コンテキストセンシティブなプロファイルカウントのみを表示します。デフォルトでは、すべてのコンテキストセンシティブなプロファイルカウントをフィルタリングします。
- --show-prof-sym-list=[true|false]¶
プロファイルに存在する場合は、プロファイルシンボルリストを表示します。このオプションは、extbinary形式のサンプルベースプロファイルでのみ意味があります。
- --show-sec-info-only=[true|false]¶
プロファイル内の各セクションに関する基本情報を表示します。このオプションは、extbinary形式のサンプルベースプロファイルでのみ意味があります。
- --debug-info=<パス>¶
生のプロファイルのデバッグ情報を含む実行可能ファイルまたは
.dSYM
を指定します。--debug-info-correlate
または--profile-correlate=debug-info
をインストルメンテーションに使用した場合、このオプションを使用して、生のプロファイルから相関付けられた関数を表示します。
- --covered¶
実行された関数、つまり、ゼロ以外のカウントを持つ関数のみを表示します。
OVERLAP¶
SYNOPSIS¶
llvm-profdata overlap [オプション] [ベースプロファイルファイル] [テストプロファイルファイル]
DESCRIPTION¶
llvm-profdata overlap は、2つのプロファイルデータファイルを受け取り、ファイル全体間および指定された関数間のカウンター分布の重複を表示します。
このコマンドでは、重複は次のように定義されます。ベースプロファイルファイルに次のカウントがあるとします:{c1_1, c1_2, …, c1_n, c1_u_1, c2_u_2, …, c2_u_s}、およびテストプロファイルファイルに{c2_1, c2_2, …, c2_n, c2_v_1, c2_v_2, …, c2_v_t}があるとします。ここで、c{1|2}_i (i = 1 .. n) は一致するカウンターであり、c1_u_i (i = 1 .. s) および c2_v_i (i = 1 .. v) は、それぞれベースプロファイルファイルとテストプロファイルファイルにのみ存在する不一致のカウンター(またはカウンターのみ)です。sum_1 = c1_1 + c1_2 + … + c1_n + c1_u_1 + c2_u_2 + … + c2_u_s、および sum_2 = c2_1 + c2_2 + … + c2_n + c2_v_1 + c2_v_2 + … + c2_v_tとします。重複 = min(c1_1/sum_1, c2_1/sum_2) + min(c1_2/sum_1, c2_2/sum_2) + … + min(c1_n/sum_1, c2_n/sum_2)です。
結果の重複分布は、0.0%から100.0%のパーセント値であり、0.0%は重複がないことを意味し、100.0%は完全な重複を意味します。
例として、ベースプロファイルファイルに {400, 600} のカウントがあり、テストプロファイルファイルに一致するカウント {60000, 40000} がある場合、重複は80%になります。
OPTIONS¶
- --function=<string>¶
関数の名前に指定された文字列が含まれている場合に、その関数の詳細を出力します。
- --help¶
コマンドラインオプションの概要を出力します。
- --output=<output>, -o¶
出力ファイル名を指定します。出力 が
-
であるか、指定されていない場合、出力は標準出力に送信されます。
- --value-cutoff=<n>¶
最大カウント値が
n
以上である関数のみを表示します。デフォルトでは、value-cutoffは符号なしのlong longの最大値に設定されます。
- --cs¶
コンテキスト依存のプロファイルカウントの重複のみを表示します。デフォルトでは、非コンテキスト依存のプロファイルカウントが表示されます。
ORDER¶
SYNOPSIS¶
llvm-profdata order [オプション] [ファイル名]
DESCRIPTION¶
llvm-profdata orderは、プロファイルの時系列プロファイリングトレースを使用して、それらのトレースのページフォールト数を削減する関数順序を見つけます。この出力は、ELFの場合はlld
に--symbol-ordering-file=
経由で、Mach-Oの場合は-order-file
経由で直接渡すことができます。プロファイルで見つかったトレースが現実世界を代表する場合、この順序は起動パフォーマンスを向上させるはずです。
OPTIONS¶
- --help¶
コマンドラインオプションの概要を出力します。
- --output=<output>, -o¶
出力ファイル名を指定します。出力 が
-
であるか、指定されていない場合、出力は標準出力に送信されます。
EXIT STATUS¶
llvm-profdata は、コマンドが省略された場合、無効な場合、入力ファイルを読み取れない場合、またはデータ間に不一致がある場合に1を返します。