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
next prev parent 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.