git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH, RFC] Fix build problems related to profile-directed optimization

From
Ted Ts'o <tytso@mit.edu>
Date
Feb 2, 2012, 20:12 UTC
Message-ID
<20120202201226.GA1032@thunk.org>
In-Reply-To
<7vvcnpuhpo.fsf@alter.siamese.dyndns.org>
On Thu, Feb 02, 2012 at 12:02:27PM -0800, Junio C Hamano wrote:
Show 5 quoted lines
> 
> Thanks for a patch.  How does this compare with what was discussed in the
> other thread?
> 
>   http://thread.gmane.org/gmane.comp.version-control.git/188992/focus=189172

I wasn't aware of this other approach when I created this patch (I must have missed the e-mail thread, sorry).

One of the reasons why I did it this way was for more flexibility. I wanted to be able to do:

$ make PROFILE_GEN=YesPlease PROFILE_DIR=/var/cache/FDO all # make PROFILE_GEN=YesPlease PROFILE_DIR=/var/cache/FDO install

run a bunch of git commands on various git repositories to get real-life usage...

Then do...

$ make PROFILE_USE=YesPlease PROFILE_DIR=/var/cache/FDO all # make PROFILE_GEN=YesPlease PROFILE_DIR=/var/cache/FDO install

But for many people they would probably be satisfied with something that builds git using a single magic recipe, even if they give up some fractional performance improvement (keep in mind that the feedback directed optimization seems to buy you only a single digit percentage improvement according according to Andi's original experiment; I just got interested in this more for amusement value than any thought that it would save me serious amounts of time).

> I would wish a solution ideally would support
> 
> 	make PROFILE_BUILD=YesPlease
>         make PROFILE_BUILD=YesPlease install

At least in theory, it should be possible to have something which supports both PROFILE_GEN/PROFILE_USE as well as a combined PROFILE_BUILD.

The hard part is that PROFILE_BUILD requires a multi-pass process; you need to build with one set of CFLAGS, then run the sample workload to get the data for your feedback directed optimizations, and then re-run the build with another set of CFLAGS. I think what we could to check for PROFILE_BUILD, and if it is set, do the first PROFILE_GEN / make test commands as part of the top-level Makefile's all: rule, and then do the normal build after that.

It's a little kludgy, but does that sound acceptable to you?
       	      	      	       	    	  - Ted
Previous: Junio C HamanoNext: Ted Ts'o
Message 3 of 18 in “Fix build problems related to profile-directed optimization”
  1. Fix build problems related to profile-directed optimizationTheodore Ts'o, Feb 2, 2012
  2. Junio C HamanoFeb 2, 2012
  3. Ted Ts'oFeb 2, 2012
  4. Ted Ts'oFeb 2, 2012
  5. Junio C HamanoFeb 3, 2012
  6. Ted Ts'oFeb 3, 2012
  7. Junio C HamanoFeb 3, 2012
  8. Theodore TsoFeb 3, 2012
  9. Junio C HamanoFeb 3, 2012
  10. Fix build problems related to profile-directed optimizationTheodore Ts'o, Feb 6, 2012
  11. Jeff KingFeb 6, 2012
  12. Ted Ts'oFeb 6, 2012
  13. Fix build problems related to profile-directed optimizationTheodore Ts'o, Feb 6, 2012
  14. Ted Ts'oFeb 8, 2012
  15. Junio C HamanoFeb 9, 2012
  16. Johannes SixtFeb 9, 2012
  17. Junio C HamanoFeb 9, 2012
  18. Andi KleenFeb 3, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.