[patch][commit] Performance of --gprof option
Dave Brolley
brolley@redhat.com
Wed Jun 14 20:41:00 GMT 2006
Hi,
We have two ports which support pipeline modelling (--final-insn-count,
--trace-count) combined with use of --gprof=<file>,cycles=1 in order to
obtain cycle accurate profiles of the applications being simulated. Our
clients have complained about the poor performance of SID when using
these options. The poor performance is mainly due to the following factors:
o The gprof component is a "regular" client of the target scheduler when
in cycle mode.
o It is necessary to use --insn-count=1 in order to obtain accurate
samples when using --gprof=<file>,cycles=n. Otherwise the gprof
component is not triggered after the given number of cycles.
These combine to slow the simulation because each simulated cycle
requires one entire target scheduler iteration. Also, the gprof
component's "sample" pin is driven once per simulated cycle.
By making two simple changes, I was able to improve the performance of
SID by 30% in this situation.
1) Have the cpu component perform gprof sampling directly.
2) Allow a given number of cycles to be driven on the gprof component's
"sample" pin.
Change number 1 removes the requirement of using --insn-count=1. Gprof
sampling is now done by the cpu component in step_pin_handler and in
stop_after_insns_p.
Change number 2 allows several samples to be accumulated at the same pc
(when there is some kind of stall due to latency), eliminating the need
to drive the "sample" pin once per simulated cycle. This dramatically
reduces the number of times the pin is driven during a typical simulation.
These changes also fix a couple of "bugs" in that the gprof option
wasn't working as advertised (when --help is specified) since
o More samples would be taken than expected in insn-count mode if the
cpu was yielded
o Fewer samples than expected would be taken in cycle mode if
--insn-count=1 was not used.
The correct number of samples is now taken in all situations.
I've committed the attached patch which implements these changes. Tested
on two internal ports which support --gprof. Judging from the lack of
calls to cg_profile*, no other ports are using this feature.
Dave
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-gprof.ChangeLog
URL: <http://sourceware.org/pipermail/sid/attachments/20060614/9d8b95c8/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-gprof.patch.txt
URL: <http://sourceware.org/pipermail/sid/attachments/20060614/9d8b95c8/attachment.txt>
More information about the Sid
mailing list