All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Martin Bligh <mbligh@mbligh.org>, Matt Mackall <mpm@selenic.com>,
	Arjan van de Ven <arjan@infradead.org>,
	Chuck Ebbert <76306.1226@compuserve.com>,
	Adrian Bunk <bunk@stusta.de>, Andrew Morton <akpm@osdl.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Dave Jones <davej@redhat.com>,
	Tim Schmielau <tim@physik3.uni-rostock.de>
Subject: Re: [patch 00/2] improve .text size on gcc 4.0 and newer  compilers
Date: Fri, 6 Jan 2006 01:15:19 +0100	[thread overview]
Message-ID: <20060106001519.GA15520@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.64.0601051548290.3169@g5.osdl.org>


* Linus Torvalds <torvalds@osdl.org> wrote:

> Also, the profiles can be misleading at times: you often get 
> instructions with zero hits, because they always schedule together 
> with another instruction. So parsing things and then matching them up 
> (correctly) with the source code in order to annotate them is probably 
> pretty nontrivial.

yeah, but schedules-together isnt a big problem in terms of branch 
predictions: unused branches really stick out with their zero counters.  
Especially if there enough profiling hits, it's usually a quick glance 
to figure out the hotpath:

c0119e1f:   582904 <sys_gettimeofday>:
c0119e1f:   582904 	57                   	push   %edi
c0119e20:   312621 	56                   	push   %esi
c0119e21:       29 	53                   	push   %ebx
c0119e22:        0 	50                   	push   %eax
c0119e23:   285471 	50                   	push   %eax
c0119e24:       15 	8b 74 24 18          	mov    0x18(%esp),%esi
c0119e28:       21 	8b 7c 24 1c          	mov    0x1c(%esp),%edi
c0119e2c:   325688 	89 f0                	mov    %esi,%eax
c0119e2e:       26 	89 fa                	mov    %edi,%edx
c0119e30:        0 	e8 86 fe ff ff       	call   c0119cbb <timeofday_API_hacks>
c0119e35:   377758 	83 f8 01             	cmp    $0x1,%eax
c0119e38:   384539 	75 3f                	jne    c0119e79 <sys_gettimeofday+0x5a>
c0119e3a:        0 	85 f6                	test   %esi,%esi
c0119e3c:        0 	74 19                	je     c0119e57 <sys_gettimeofday+0x38>
c0119e3e:        0 	89 e0                	mov    %esp,%eax
c0119e40:        0 	e8 4b c6 fe ff       	call   c0106490 <do_gettimeofday>
c0119e45:        0 	b9 08 00 00 00       	mov    $0x8,%ecx
c0119e4a:        0 	89 f0                	mov    %esi,%eax
c0119e4c:        0 	89 e2                	mov    %esp,%edx
c0119e4e:        0 	e8 3e f2 0b 00       	call   c01d9091 <copy_to_user>
c0119e53:        0 	85 c0                	test   %eax,%eax
c0119e55:        0 	75 19                	jne    c0119e70 <sys_gettimeofday+0x51>
c0119e57:        0 	85 ff                	test   %edi,%edi
c0119e59:        0 	74 1c                	je     c0119e77 <sys_gettimeofday+0x58>
c0119e5b:        0 	b9 08 00 00 00       	mov    $0x8,%ecx
c0119e60:        0 	ba 88 3e 53 c0       	mov    $0xc0533e88,%edx
c0119e65:        0 	89 f8                	mov    %edi,%eax
c0119e67:        0 	e8 25 f2 0b 00       	call   c01d9091 <copy_to_user>
c0119e6c:        0 	85 c0                	test   %eax,%eax
c0119e6e:        0 	74 07                	je     c0119e77 <sys_gettimeofday+0x58>
c0119e70:        0 	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
c0119e75:        0 	eb 02                	jmp    c0119e79 <sys_gettimeofday+0x5a>
c0119e77:        0 	31 c0                	xor    %eax,%eax
c0119e79:      308 	5e                   	pop    %esi
c0119e7a:   749654 	5f                   	pop    %edi
c0119e7b:   415831 	5b                   	pop    %ebx
c0119e7c:      744 	5e                   	pop    %esi
c0119e7d:   361201 	5f                   	pop    %edi
c0119e7e:   373195 	c3                   	ret    

here at the top you can see that the CPU is a nice 3-issue design and 
that in this workload the branch at c0119e38 is untaken and returns from 
the function afterwards. A branch instruction followed by more than 2 
zero profile-count instructions (that are not jumps) is a good sign of 
an untaken branch. This would be a pretty strong heuristics as well i 
think. We could really make the requirement be 'zero profiling hits', 
and the branch instruction would have to get 'enough' hits, to conclude 
that the branch is a candidate for likely/unlikely.

	Ingo

  reply	other threads:[~2006-01-06  0:15 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-05  0:55 [patch 00/2] improve .text size on gcc 4.0 and newer compilers Chuck Ebbert
2006-01-05  1:07 ` Martin Bligh
2006-01-05 12:19   ` Arjan van de Ven
2006-01-05 14:30     ` Jakub Jelinek
2006-01-05 16:55       ` Linus Torvalds
2006-01-05 18:42         ` Daniel Jacobowitz
2006-01-05 17:02     ` Matt Mackall
2006-01-05 17:59       ` Martin Bligh
2006-01-05 18:09         ` Arjan van de Ven
2006-01-05 18:43           ` Daniel Jacobowitz
2006-01-05 19:17         ` Linus Torvalds
2006-01-05 19:40           ` Linus Torvalds
2006-01-05 19:49             ` Martin Bligh
2006-01-05 20:13               ` Linus Torvalds
2006-01-05 20:15                 ` Linus Torvalds
2006-01-05 23:30                   ` Ingo Molnar
2006-01-05 23:54                     ` Linus Torvalds
2006-01-06  0:15                       ` Ingo Molnar [this message]
2006-01-06  0:27                         ` Linus Torvalds
2006-01-06  0:54                           ` Ingo Molnar
2006-01-06  0:02                     ` Martin Bligh
2006-01-06  0:40                       ` Ingo Molnar
2006-01-06  0:55                         ` Martin Bligh
2006-01-06  1:48                           ` Mitchell Blank Jr
2006-01-06  0:50                   ` Mitchell Blank Jr
2006-01-06  0:58                     ` Ingo Molnar
2006-01-06  1:22                       ` Mitchell Blank Jr
2006-01-05 21:34             ` Matt Mackall
2006-01-05 22:08               ` Linus Torvalds
2006-01-05 22:36                 ` Matt Mackall
2006-01-05 22:49                   ` Martin Bligh
2006-01-05 23:02                     ` Matt Mackall
2006-01-05 22:55                   ` Ingo Molnar
2006-01-05 23:11                     ` Matt Mackall
2006-01-05 23:27                       ` Jesse Barnes
2006-01-05 23:58                       ` Ingo Molnar
2006-01-05 21:32           ` Grzegorz Kulewski
  -- strict thread matches above, loose matches on Subject: below --
2005-12-28 11:46 Ingo Molnar
2005-12-28 19:17 ` Linus Torvalds
2005-12-28 19:34   ` Arjan van de Ven
2005-12-28 21:02     ` Linus Torvalds
2005-12-28 21:17       ` Arjan van de Ven
2005-12-28 21:23       ` Ingo Molnar
2005-12-28 21:48         ` Ingo Molnar
2005-12-28 23:56           ` Krzysztof Halasa
2005-12-29  7:41             ` Ingo Molnar
2005-12-29  8:02               ` Dave Jones
2005-12-29 19:44               ` Krzysztof Halasa
2005-12-29  4:11           ` Andrew Morton
2005-12-29  7:32             ` Ingo Molnar
2005-12-29 14:58               ` Horst von Brand
2005-12-29 15:40               ` Adrian Bunk
2005-12-29 17:41               ` Linus Torvalds
2005-12-29 18:42                 ` Arjan van de Ven
2005-12-29 18:45                   ` Arjan van de Ven
2005-12-29 20:19                 ` Ingo Molnar
2005-12-29 22:20                   ` Matt Mackall
2005-12-29 20:28                 ` Dave Jones
2005-12-29 20:49                   ` Linus Torvalds
2005-12-29 21:25                     ` Linus Torvalds
     [not found]                       ` <20051229224839.GA12247@elte.hu>
2005-12-29 22:58                         ` Arjan van de Ven
2005-12-30  2:03                           ` Tim Schmielau
2005-12-30  2:15                             ` Tim Schmielau
2005-12-30  7:49                             ` Ingo Molnar
2005-12-31 14:38                               ` Adrian Bunk
2005-12-31 14:45                                 ` Ingo Molnar
2005-12-31 15:08                                   ` Adrian Bunk
2006-01-02 10:37                                     ` Ingo Molnar
2006-01-02 10:48                                       ` Arjan van de Ven
2006-01-02 13:43                                         ` Adrian Bunk
2006-01-02 14:05                                           ` Ingo Molnar
2006-01-02 15:01                                             ` Adrian Bunk
2006-01-02 18:44                                             ` Krzysztof Halasa
2006-01-02 18:51                                               ` Arjan van de Ven
2006-01-02 19:49                                                 ` Krzysztof Halasa
2006-01-02 19:54                                                   ` Arjan van de Ven
2006-01-02 20:05                                                     ` Krzysztof Halasa
2006-01-02 20:18                                                       ` Jörn Engel
2006-01-02 22:23                                                 ` Russell King
2006-01-02 23:55                                                   ` Alan Cox
2006-01-03  3:59                                                   ` Daniel Jacobowitz
2006-01-03  8:53                                                     ` Russell King
2006-01-03  8:56                                                       ` Arjan van de Ven
2006-01-03  9:00                                                         ` Russell King
2006-01-03  9:10                                                           ` Arjan van de Ven
2006-01-03  9:14                                                         ` Vitaly Wool
2006-01-02 19:03                                               ` Andrew Morton
2006-01-02 19:17                                                 ` Jakub Jelinek
2006-01-02 19:30                                                   ` Andrew Morton
2006-01-02 19:41                                                   ` Linus Torvalds
2006-01-02 19:53                                                     ` Ingo Molnar
2006-01-02 20:28                                                     ` Jakub Jelinek
2006-01-02 20:09                                                 ` Ingo Molnar
2006-01-02 20:24                                                   ` Andrew Morton
2006-01-02 20:40                                                     ` Ingo Molnar
2006-01-02 20:30                                                 ` Ingo Molnar
2006-01-02 19:12                                               ` Linus Torvalds
2006-01-02 19:59                                                 ` Krzysztof Halasa
2006-01-02 20:13                                                 ` Ingo Molnar
2006-01-02 21:00                                                   ` Jan Engelhardt
2006-01-02 22:43                                                     ` Linus Torvalds
2006-01-02 13:42                                       ` Adrian Bunk
2006-01-02 18:28                                         ` Andrew Morton
2006-01-02 18:49                                           ` Arjan van de Ven
2006-01-02 19:26                                             ` Jörn Engel
2006-01-02 21:51                                             ` Grant Coady
2006-01-02 22:03                                               ` Antonio Vargas
2006-01-02 22:56                                                 ` Arjan van de Ven
2006-01-02 23:10                                                   ` Grant Coady
2006-01-02 23:57                                                     ` Alan Cox
2006-01-02 23:58                                                       ` Grant Coady
2006-01-03  5:31                                           ` Nick Piggin
2006-01-03 23:40                                           ` Martin J. Bligh
2006-01-04  4:28                                             ` Matt Mackall
2006-01-04  5:51                                               ` Martin J. Bligh
2006-01-04 17:10                                                 ` Matt Mackall
2006-01-04 22:37                                                 ` Linus Torvalds
2006-01-05  0:55                                                   ` Martin Bligh
2006-01-04 17:36                                               ` Zwane Mwaikambo
2005-12-31  3:51                             ` Kurt Wall
2005-12-30  3:31                           ` Nicolas Pitre
2005-12-30  3:47                     ` Mark Lord
2005-12-30  3:56                       ` Dave Jones
2005-12-30  3:57                       ` Mark Lord
2005-12-30  4:02                         ` Dave Jones
2005-12-30  4:11                           ` Mark Lord
2005-12-30  4:14                             ` Mark Lord
2005-12-30  4:20                               ` Mark Lord
2005-12-30  5:04                                 ` Dave Jones
2005-12-29 23:16                 ` Willy Tarreau
2005-12-30  8:05                   ` Arjan van de Ven
2005-12-30  8:15                     ` Willy Tarreau
2005-12-30  8:24                       ` Arjan van de Ven
2005-12-30  9:20                         ` Willy Tarreau
2005-12-30 13:38                           ` Adrian Bunk
2005-12-30  8:33                   ` Jesper Juhl
2005-12-30  9:28                     ` Willy Tarreau
2005-12-30  9:37                       ` Jesper Juhl
2005-12-30  9:38                         ` Willy Tarreau
2005-12-30 19:53                   ` Alistair John Strachan
2005-12-29  7:49             ` Arjan van de Ven
2005-12-29 15:01               ` Horst von Brand
2005-12-30 15:28             ` Alan Cox
2005-12-30 20:59               ` Adrian Bunk
2005-12-30 22:12             ` Matt Mackall
2005-12-30 23:54               ` Adrian Bunk
2005-12-31  9:20               ` Arjan van de Ven
2005-12-29 14:38           ` Christoph Hellwig
2005-12-29 14:54             ` Arjan van de Ven
2005-12-29 15:35               ` Adrian Bunk
2005-12-29 15:38                 ` Arjan van de Ven
2005-12-29 15:42                 ` Jakub Jelinek
2005-12-29 19:14                   ` Adrian Bunk
2005-12-30  9:28                   ` Andi Kleen
2005-12-30  9:40                     ` Ingo Molnar
2005-12-30 10:14                       ` Ingo Molnar
2005-12-30 13:31                         ` Adrian Bunk
2005-12-30 14:08                         ` Christian Trefzer
2005-12-30 10:25                       ` Andi Kleen
2005-12-29  0:37         ` Rogério Brito
2006-01-03  3:36         ` Daniel Jacobowitz
2005-12-29  4:38 ` Adrian Bunk
2005-12-29  7:59   ` Ingo Molnar
2005-12-29 13:52     ` Adrian Bunk
2005-12-29 19:57       ` Horst von Brand
2005-12-29 20:25       ` Ingo Molnar
2005-12-31 15:22         ` Adrian Bunk

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=20060106001519.GA15520@elte.hu \
    --to=mingo@elte.hu \
    --cc=76306.1226@compuserve.com \
    --cc=akpm@osdl.org \
    --cc=arjan@infradead.org \
    --cc=bunk@stusta.de \
    --cc=davej@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbligh@mbligh.org \
    --cc=mpm@selenic.com \
    --cc=tim@physik3.uni-rostock.de \
    --cc=torvalds@osdl.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.