[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gprof/2776] Strange profiling results

From: dmantipov at yandex dot ru
Subject: [Bug gprof/2776] Strange profiling results
Date: 22 Jun 2006 14:55:15 -0000

------- Additional Comments From dmantipov at yandex dot ru  2006-06-22 14:55 
(In reply to comment #1)

> Have you checked the assembler output of the compiler ?  Perhaps it is 
> being clever.  Maybe it knows that all but the calls to gettimeofday are 
> redundant ?

Strace shows a lot of gettimeofday() calls during execution of the first test
program above.

Moreover, I've checked an annotated assemler output produced with
'-fverbose-asm' by gcc 4.0.2 and  gcc 4.1.1 and found that even with '-O3', the
code is assembled 'as is', i.e.
at least:
 - rdtsc and gettimeofday() aren't eliminated
 - loops aren't unrolled

> What about main(), is any time spent in that function ?

Flat profile doesn't include  data for main(), i.e. it  contains f() and g()
only. But the call graph shows something for main() too, for example:

index % time    self  children    called     name
[1]    100.0    0.00    0.50                 main [1]
                0.49    0.00     100/100         f [2]
                0.01    0.00     100/100         g [3]
                0.49    0.00     100/100         main [1]
[2]     98.0    0.49    0.00     100         f [2]
                0.01    0.00     100/100         main [1]
[3]      2.0    0.01    0.00     100         g [3]
Assembler output says that mcount() is called from main(), so main() should be
accounted too. On the other side, it's possible that main() is just too fast
even for 1 profiling sample (all SIGPROFs was handled when we're in f() or g()
?). I believe this is another question for you - why main() isn't included into
flat profile :-) ?
> Also it appears that the two percentages above add up to more than 100%.

Yes, this is strange. 
> The most likely though is that bad profiling data is being generated. 
> ie it is not gprof's fault but either gcc's (for not inserting the calls 
> to the profiling hooks correctly) or else the run time C library's (for 
> not implementing the profiling hooks correctly).  Check you version of 
> gcc.  If it is an old one, then try updating it.  If it is a new one, 
> then try using an older one and see if the problem goes away.

I'll try a few versions of older gcc, starting from gcc 3.2...



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]