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を返します。