[LLVMdev] Indirect call site profiling
Xinliang David Li
xinliangli at gmail.com
Mon Oct 27 09:32:08 PDT 2014
On Sun, Oct 26, 2014 at 11:49 AM, <betulb at codeaurora.org> wrote:
> > On 10/24/14, 8:26 PM, betulb at codeaurora.org wrote:
> >> Hi All,
> >> We've been working on enhancing LLVM's instrumentation based profiling
> >> by
> >> adding indirect call target profiling support. Our goal is to add
> >> instrumentation around indirect call sites, so that we may track the
> >> frequently taken target addresses and their call frequencies.
> >> The acquired data has uses in optimization of indirect function call
> >> heavy applications. Our initial findings show that using the profile
> >> data
> >> in optimizations would help improve the performance of some of the spec
> >> benchmarks notably.
> > Can you quantify "notably?" Also, do you profile on one set of inputs
> > and then test the optimization on another set of inputs (e.g., the test
> > and train runs)?
> I can't give numbers, but we do collect data from train runs.
> >> We have a proof of concept implementation, which we
> >> plan to put it up for review. However, I’d like to inquire prior if
> >> there
> >> are any plans or ongoing work done in the community to enable indirect
> >> call target profiling support or not. Please inform if cfe-dev is a
> >> better
> >> candidate for posting PGO related emails.
> > Interesting. I did not think SPEC had many programs with a lot of
> > indirect function calls.
> Spec does have programs such as gcc, vortex and others which use indirect
> calls. I'm planning to have an RFC soon on the feature. I'll follow it w/
> the patch for the profiler changes for clang, llvm and compiler-rt.
IIRC, gap is another C program benefit from this.
> > It would be interesting to see what your optimization would do on an
> > operating system kernel like FreeBSD or Linux. The VFS (file system)
> > layer uses function pointers a lot, but I'm not sure if it's the
> > dominant overhead.
> > Have you tried on C++ programs? They should be making heavy use of
> > indirect function calls as well.
> > If you make your software public, please let me know. Adapting your work
> > for kernel execution and trying it out on a kernel might be a nice
> > project for one of our students.
> > Regards,
> > John Criswell
> > --
> > John Criswell
> > Assistant Professor
> > Department of Computer Science, University of Rochester
> > http://www.cs.rochester.edu/u/criswell
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev