xfs
[Top] [All Lists]

Re: likely and unlikely was: Re: [PATCH] split xfs_ioc_xattr

To: David Chinner <dgc@xxxxxxx>
Subject: Re: likely and unlikely was: Re: [PATCH] split xfs_ioc_xattr
From: Andi Kleen <andi@xxxxxxxxxxxxxx>
Date: Mon, 21 Apr 2008 09:55:58 +0200
Cc: Eric Sandeen <sandeen@xxxxxxxxxxx>, Timothy Shimmin <tes@xxxxxxx>, Andi Kleen <andi@xxxxxxxxxxxxxx>, Niv Sardi <xaiki@xxxxxxxxxxxxx>, Christoph Hellwig <hch@xxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <20080421003343.GL108924158@xxxxxxx>
References: <20080319204014.GA23644@xxxxxx> <ncciqylf7q0.fsf@xxxxxxx> <20080414032940.GA10579@xxxxxx> <ncclk3ejwam.fsf@xxxxxxx> <20080416063712.GN108924158@xxxxxxx> <4805A589.7080906@xxxxxxx> <87ve2i5kbs.fsf@xxxxxxxxxxxxxxxxx> <4808488A.7010204@xxxxxxx> <4808AAA5.1060201@xxxxxxxxxxx> <20080421003343.GL108924158@xxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
On Mon, Apr 21, 2008 at 10:33:43AM +1000, David Chinner wrote:
> On Fri, Apr 18, 2008 at 09:05:25AM -0500, Eric Sandeen wrote:
> > ISTR that the dir2 code on Irix had tons of compiler pragmas for likely
> > and unlikely paths, and that it actually was well-profiled and tested.
> > Did that ever get translated into Linux hints?
> 
> The Irix code (#pragma mips_frequency_hint [FREQUENT|NEVER|INIT])
> only controllered physical placement of code, it never issued
> branch hints. 

likely/unlikely control placement too and I think it is actually
more important for kernel code than branch hints (which x86 doesn't
have explictely unlike ia64, they only way to do a branch hint is to reorder
the code) due to icache effects.

i.e. a "never" block gets moved out of line,
> while a "frequent" block is left inline. Realistically, the way
> this is used in the Irix dir2 code is completely useless - code like
> this:

Indeed because gcc has a heuristic that early returns are considered
unlikely:

/* Branch causing function to terminate is probably not taken.  */
DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (61), 
0)

It's only 61%, but that should be enough.

I'm somewhat surprised that MipsPro didn't have such a default heuristic 
though ...

-Andi


<Prev in Thread] Current Thread [Next in Thread>