There are some behavioral characteristics and limitations of the program cache layout development flow that you should bear in mind:
- Generation of Path Profiling Data File
(.pdat). When running an application that has been instrumented to
collect path-profiling data (using --gen_profile_info compiler option during
build), the application will use functions in the run-time-support library to
write out information to the path profiling data file (pprofout.pdat in above
tutorial). If there is a path profiling data file already in existence when the
application starts to run, then any new path profiling data generated will be
appended to the existing file. To prevent combining path profiling data from
separate runs of an application, you need to either rename the path profiling
data file from the previous run of the application or remove it before running
the application again.
- Indirect Calls Not Recognized by Path
Profiling Mechanisms. When using available path profiling mechanisms to
collect weighted call graph information from the path profiling data, pprof6x
does not recognize indirect calls. An indirect call site will not be represented
in the CSV output file that is generated by pprof6x. You can work around this
limitation by introducing your own information about indirect call sites into
the relevant CSV file(s). If you take this approach, please be sure to follow
the format of the callgraph analysis CSV file ("caller", "callee","call
frequency"). If you are able to get weighted call graph information from a PC
trace into a callgraph analysis CSV, this limitation will no longer apply (as
the PC trace can always identify the callee of an indirect call).
- Multiple --preferred_order Options Associated
With Single Function. There may be cases in which you might want to
input more than one preferred function order command file to the linker during
the link of an application. For example, you may have developed or received a
separate preferred function order command file for one or more of the object
libraries that are used by your application. In such cases, it is possible that
one function may be specified in multiple preferred function order command
files. If this happens, the linker will honor only the first instance of the
--preferred_order option in which the function is specified.