public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Andy Lutomirski <luto@amacapital.net>,
	David Ahern <dsahern@gmail.com>, Andi Kleen <andi@firstfloor.org>,
	Stephane Eranian <eranian@google.com>,
	"Yan, Zheng" <zheng.z.yan@intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Arnaldo Carvalho de Melo <acme@infradead.org>
Subject: Re: [PATCH v3 00/14] perf, x86: Haswell LBR call stack support
Date: Wed, 9 Apr 2014 18:48:53 +0200	[thread overview]
Message-ID: <20140409164852.GA22728@two.firstfloor.org> (raw)
In-Reply-To: <20140409114857.GT11096@twins.programming.kicks-ass.net>

On Wed, Apr 09, 2014 at 01:48:57PM +0200, Peter Zijlstra wrote:
> On Wed, Feb 26, 2014 at 12:26:43PM -0800, Andy Lutomirski wrote:
> > Speed.  FPO saves one register (a big deal on x86_32; not so important
> > on x86_64) but also saves a few cycles on function entry and exit,
> > which is a bigger deal for small functions.
> 
> So I though that LTO was supposed to get rid of a lot of the small
> function and inline them.

It does it when it can (no indirect), thinks it's profitable and won't
increase code size too much. 

> 
> I've also heard that in practise this is very 'hard', and thus we're
> still stuck with a gazillion small functions (mostly C++ people suffer
> from this).

They need devirtualization, which we cannot do currently in the kernel.

> 
> Can anybody give a concise explanation on why LTO doesn't rid us of
> these small functions or point to a web resource that describes the
> problem?

It depends on the code of course.
On one of my LTO builds I have ~10% less functions in System.map.

Actual results will vary of course on the config.

-Andi


-- 
ak@linux.intel.com -- Speaking for myself only.

  reply	other threads:[~2014-04-09 16:48 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-18  6:07 [PATCH v3 00/14] perf, x86: Haswell LBR call stack support Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 01/14] perf, x86: Reduce lbr_sel_map size Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 02/14] perf, core: introduce pmu context switch callback Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 03/14] perf, x86: use context switch callback to flush LBR stack Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 04/14] perf, x86: Basic Haswell LBR call stack support Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 05/14] perf, core: pmu specific data for perf task context Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 06/14] perf, core: always switch pmu specific data during context switch Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 07/14] perf, x86: track number of events that use LBR callstack Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 08/14] perf, x86: allocate space for storing LBR stack Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 09/14] perf, x86: Save/resotre LBR stack during context switch Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 10/14] perf, core: simplify need branch stack check Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 11/14] perf, core: Pass perf_sample_data to perf_callchain() Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 12/14] perf, x86: use LBR call stack to get user callchain Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 13/14] perf, x86: enable LBR callstack when recording callchain Yan, Zheng
2014-02-18  6:07 ` [PATCH v3 14/14] perf, x86: Discard zero length call entries in LBR call stack Yan, Zheng
2014-02-23 19:47 ` [PATCH v3 00/14] perf, x86: Haswell LBR call stack support Stephane Eranian
2014-02-24  1:07   ` Yan, Zheng
2014-02-24  7:14 ` Peter Zijlstra
2014-02-26  2:39 ` Andy Lutomirski
2014-02-26  7:04   ` Stephane Eranian
2014-02-26  8:57     ` Yan, Zheng
2014-02-26 16:03     ` Andy Lutomirski
2014-02-26 18:55       ` Andi Kleen
2014-02-26 18:59         ` Andy Lutomirski
2014-02-26 19:19           ` David Ahern
2014-02-26 19:25             ` Andy Lutomirski
2014-02-26 20:14               ` David Ahern
2014-02-26 20:26                 ` Andy Lutomirski
2014-04-09 11:48                   ` Peter Zijlstra
2014-04-09 16:48                     ` Andi Kleen [this message]
2014-04-09 17:40                       ` Andi Kleen
2014-02-26 20:32                 ` Peter Zijlstra
2014-02-26 20:53                 ` Andi Kleen
2014-02-26 21:15                   ` Peter Zijlstra
2014-02-26 21:33                     ` Andi Kleen
2014-02-26 21:34                   ` David Ahern
2014-02-26 21:42                     ` Andi Kleen
2014-02-27  9:09                       ` Stephane Eranian
2014-02-27 12:35           ` Ingo Molnar
2014-02-27 16:08             ` Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140409164852.GA22728@two.firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=acme@infradead.org \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=zheng.z.yan@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox