Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LLVM-PROFDATA(1)		      LLVM			LLVM-PROFDATA(1)

NAME
     llvm-profdata - Profile data tool

SYNOPSIS
     llvm-profdata command [args...]

DESCRIPTION
     The  llvm-profdata  tool  is  a small utility for working with profile data
     files.

COMMANDS
     * merge

     * show

     * overlap

     * order

MERGE
   SYNOPSIS
     llvm-profdata merge [options] [filename...]

   DESCRIPTION
     llvm-profdata merge takes several profile data files generated by	PGO  in-
     strumentation  and  merges them together into a single indexed profile data
     file.

     By default profile data is merged without modification. This means that the
     relative importance of each input file is proportional  to  the  number  of
     samples or counts it contains. In general, the input from a longer training
     run  will	be  interpreted as relatively more important than a shorter run.
     Depending on the nature of the training runs it may be useful to adjust the
     weight given to each input file by using the -weighted-input option.

     Profiles passed in via -weighted-input, -input-files, or via positional ar-
     guments are processed once for each time they are seen.

   OPTIONS
     --help
	    Print a summary of command line options.

     --output=<output>, -o
	    Specify the output file name.  Output cannot be - as  the  resulting
	    indexed profile data can't be written to standard output.

     --weighted-input=<weight,filename>
	    Specify  an  input file name along with a weight. The profile counts
	    of the supplied filename will be scaled (multiplied) by the supplied
	    weight, where weight is a decimal integer >= 1.  Input files  speci-
	    fied  without  using this option are assigned a default weight of 1.
	    Examples are shown below.

     --input-files=<path>, -f
	    Specify a file which contains a list of files to merge. The  entries
	    in	this  file  are  newline-separated.  Lines starting with '#' are
	    skipped. Entries may be of the form  <filename>  or  <weight>,<file-
	    name>.

     --remapping-file=<path>, -r
	    Specify  a	file which contains a remapping from symbol names in the
	    input profile to the symbol names that should be used in the  output
	    profile. The file should consist of lines of the form <input-symbol>
	    <output-symbol>.  Blank lines and lines starting with # are skipped.

	    The  llvm-cxxmap  tool  can be used to generate the symbol remapping
	    file.

     --instr (default)
	    Specify that the input profile is an instrumentation-based profile.

     --sample
	    Specify that the input profile is a sample-based profile.

	    The format of the generated file can be generated in  one  of  three
	    ways:

	    --binary (default)

	    Emit  the profile using a binary encoding. For instrumentation-based
	    profile the output format is the indexed binary format.

	    --extbinary

	    Emit the profile using an extensible binary  encoding.  This  option
	    can  only  be  used with sample-based profile. The extensible binary
	    encoding can be more compact with compression  enabled  and  can  be
	    loaded faster than the default binary encoding.

	    --text

	    Emit  the  profile	in  text mode. This option can also be used with
	    both sample-based and instrumentation-based profile. When  this  op-
	    tion  is  used the profile will be dumped in the text format that is
	    parsable by the profile reader.

	    --gcc

	    Emit the profile using GCC's gcov format (Not yet supported).

     --sparse[=true|false]
	    Do not emit function records with 0 execution  count.  Can	only  be
	    used in conjunction with -instr. Defaults to false, since it can in-
	    hibit compiler optimization during PGO.

     --num-threads=<N>, -j
	    Use  N  threads  to perform profile merging. When N=0, llvm-profdata
	    auto-detects an appropriate number of threads to use.  This  is  the
	    default.

     --failure-mode=[any|all]
	    Set  the failure mode. There are two options: 'any' causes the merge
	    command to fail if any profiles are invalid, and  'all'  causes  the
	    merge  command to fail only if all profiles are invalid. If 'all' is
	    set, information from any invalid profiles is excluded from the  fi-
	    nal merged product. The default failure mode is 'any'.

     --prof-sym-list=<path>
	    Specify  a file which contains a list of symbols to generate profile
	    symbol list in the profile. This option can only be used  with  sam-
	    ple-based  profile in extbinary format. The entries in this file are
	    newline-separated.

     --compress-all-sections=[true|false]
	    Compress all sections when writing the profile. This option can only
	    be used with sample-based profile in extbinary format.

     --use-md5=[true|false]
	    Use MD5 to represent string in name table when writing the	profile.
	    This  option can only be used with sample-based profile in extbinary
	    format.

     --gen-partial-profile=[true|false]
	    Mark the profile to be a partial profile which only provides partial
	    profile coverage for the optimized target. This option can	only  be
	    used with sample-based profile in extbinary format.

     --convert-sample-profile-layout=[nest|flat]
	    Convert  the  merged  profile into a profile with a new layout. Sup-
	    ported layout are nest (Nested profile, the input should be CS  flat
	    profile) and flat (Profile with nested inlinees flattened out).

     --supplement-instr-with-sample=<file>
	    Supplement	an instrumentation profile with sample profile. The sam-
	    ple profile is the input of the flag. Output will be in instrumenta-
	    tion format (only works with -instr).

     --zero-counter-threshold=<float>
	    For the function which is cold in instr profile but  hot  in  sample
	    profile,  if the ratio of the number of zero counters divided by the
	    total number of counters is above the threshold, the profile of  the
	    function  will be regarded as being harmful for performance and will
	    be dropped.

     --instr-prof-cold-threshold=<int>
	    User specified cold threshold for instr profile which will	override
	    the cold threshold got from profile summary.

     --suppl-min-size-threshold=<int>
	    If	the  size of a function is smaller than the threshold, assume it
	    can be inlined by PGO early inliner and  it  will  not  be	adjusted
	    based on sample profile.

     --debug-info=<path>
	    Specify the executable or .dSYM that contains debug info for the raw
	    profile.   When  --debug-info-correlate  or  --profile-correlate=de-
	    bug-info was used for instrumentation, use this option to  correlate
	    the raw profile.

     --binary-file=<path>
	    Specify  the  executable that contains profile data and profile name
	    sections for the raw  profile.  When  -profile-correlate=binary  was
	    used  for instrumentation, use this option to correlate the raw pro-
	    file.

     --temporal-profile-trace-reservoir-size
	    The maximum number of temporal profile traces to be  stored  in  the
	    output profile. If more traces are added, we will use reservoir sam-
	    pling  to select which traces to keep. Note that changing this value
	    between different merge invocations  on  the  same	indexed  profile
	    could result in sample bias. The default value is 100.

     --temporal-profile-max-trace-length
	    The  maximum number of functions in a single temporal profile trace.
	    Longer traces will be truncated. The default value is 1000.

     --function=<string>
	    Only keep functions matching the regex in the output, all others are
	    erased from the profile.

     --no-function=<string>
	    Remove functions matching  the  regex  from  the  profile.	If  both
	    --function	and  --no-function  are specified and a function matches
	    both, it is removed.

   EXAMPLES
   Basic Usage
     Merge three profiles:

	llvm-profdata merge foo.profdata bar.profdata baz.profdata -output merged.profdata

   Weighted Input
     The input file foo.profdata is especially important, multiply its counts by
     10:

	llvm-profdata merge --weighted-input=10,foo.profdata bar.profdata baz.profdata --output merged.profdata

     Exactly equivalent to the previous invocation (explicit  form;  useful  for
     programmatic invocation):

	llvm-profdata merge --weighted-input=10,foo.profdata --weighted-input=1,bar.profdata --weighted-input=1,baz.profdata --output merged.profdata

SHOW
   SYNOPSIS
     llvm-profdata show [options] [filename]

   DESCRIPTION
     llvm-profdata  show  takes a profile data file and displays the information
     about the profile counters for this file and for any of the specified func-
     tion(s).

     If filename is omitted or is -, then llvm-profdata  show  reads  its  input
     from standard input.

   OPTIONS
     --all-functions
	    Print details for every function.

     --binary-ids
	    Print embedded binary ids in a profile.

     --counts
	    Print the counter values for the displayed functions.

     --show-format=<text|json|yaml>
	    Emit output in the selected format if supported by the provided pro-
	    file type.

     --function=<string>
	    Print  details  for  a  function if the function's name contains the
	    given string.

     --help
	    Print a summary of command line options.

     --output=<output>, -o
	    Specify the output file name.  If output is - or it isn't specified,
	    then the output is sent to standard output.

     --instr (default)
	    Specify that the input profile is an instrumentation-based profile.

     --text
	    Instruct the profile dumper to show profile counts in the text  for-
	    mat of the instrumentation-based profile data representation. By de-
	    fault,  the  profile  information is dumped in a more human readable
	    form (also in text) with annotations.

     --topn=<n>
	    Instruct the profile dumper to show the top  n  functions  with  the
	    hottest  basic  blocks  in the summary section. By default, the topn
	    functions are not dumped.

     --sample
	    Specify that the input profile is a sample-based profile.

     --memop-sizes
	    Show the profiled sizes of the  memory  intrinsic  calls  for  shown
	    functions.

     --value-cutoff=<n>
	    Show  only	those  functions  whose  max count values are greater or
	    equal to n.  By default, the value-cutoff is set to 0.

     --list-below-cutoff
	    Only output names of functions whose max count value are  below  the
	    cutoff value.

     --profile-version
	    Print profile version.

     --showcs
	    Only show context sensitive profile counts. The default is to filter
	    all context sensitive profile counts.

     --show-prof-sym-list=[true|false]
	    Show profile symbol list if it exists in the profile. This option is
	    only meaningful for sample-based profile in extbinary format.

     --show-sec-info-only=[true|false]
	    Show  basic  information about each section in the profile. This op-
	    tion is only meaningful for sample-based profile in  extbinary  for-
	    mat.

     --debug-info=<path>
	    Specify the executable or .dSYM that contains debug info for the raw
	    profile.   When  --debug-info-correlate  or  --profile-correlate=de-
	    bug-info was used for instrumentation, use this option to  show  the
	    correlated functions from the raw profile.

     --covered
	    Show  only	the  functions	that have been executed, i.e., functions
	    with non-zero counts.

OVERLAP
   SYNOPSIS
     llvm-profdata overlap [options] [base profile file] [test profile file]

   DESCRIPTION
     llvm-profdata overlap takes two profile data files and displays the overlap
     of counter distribution between the whole files  and  between  any  of  the
     specified functions.

     In  this  command, overlap is defined as follows: Suppose base profile file
     has the following counts: {c1_1, c1_2,  ...,  c1_n,  c1_u_1,  c2_u_2,  ...,
     c2_u_s},  and test profile file has {c2_1, c2_2, ..., c2_n, c2_v_1, c2_v_2,
     ..., c2_v_t}.  Here c{1|2}_i (i = 1 .. n) are matched counters  and  c1_u_i
     (i  =  1  .. s) and c2_v_i (i = 1 .. v) are unmatched counters (or counters
     only existing in) base profile file and test  profile  file,  respectively.
     Let  sum_1  =  c1_1 + c1_2 +  ... + c1_n +  c1_u_1 + c2_u_2 + ... + c2_u_s,
     and sum_2 = c2_1 + c2_2 + ... + c2_n + c2_v_1 +  c2_v_2  +  ...  +  c2_v_t.
     overlap  =  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).

     The result overlap distribution is a percentage number, ranging  from  0.0%
     to  100.0%, where 0.0% means there is no overlap and 100.0% means a perfect
     overlap.

     Here is an example, if base profile file has counts of {400, 600}, and test
     profile file has matched counts of {60000, 40000}. The overlap is 80%.

   OPTIONS
     --function=<string>
	    Print details for a function if the  function's  name  contains  the
	    given string.

     --help
	    Print a summary of command line options.

     --output=<output>, -o
	    Specify the output file name.  If output is - or it isn't specified,
	    then the output is sent to standard output.

     --value-cutoff=<n>
	    Show  only	those  functions  whose  max count values are greater or
	    equal to n.  By default, the value-cutoff is set to max of	unsigned
	    long long.

     --cs   Only  show overlap for the context sensitive profile counts. The de-
	    fault is to show non-context sensitive profile counts.

ORDER
   SYNOPSIS
     llvm-profdata order [options] [filename]

   DESCRIPTION
     llvm-profdata order uses temporal profiling traces from a profile and finds
     a function order that reduces the number of page faults for  those  traces.
     This  output  can be directly passed to lld via --symbol-ordering-file= for
     ELF or -order-file for Mach-O. If the traces found in the profile are  rep-
     resentative  of the real world, then this order should improve startup per-
     formance.

   OPTIONS
     --help
	    Print a summary of command line options.

     --output=<output>, -o
	    Specify the output file name.  If output is - or it isn't specified,
	    then the output is sent to standard output.

EXIT STATUS
     llvm-profdata returns 1 if the command is omitted or is invalid, if it can-
     not read input files, or if there is a mismatch between their data.

AUTHOR
     Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT
     2003-2026, LLVM Project

19				   2026-07-30			LLVM-PROFDATA(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=llvm-profdata&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help