|
From: <sv...@va...> - 2005-11-11 17:33:44
|
Author: njn Date: 2005-11-11 17:33:41 +0000 (Fri, 11 Nov 2005) New Revision: 227 Log: update performance analysis project Modified: trunk/help/projects.html Modified: trunk/help/projects.html =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/help/projects.html 2005-11-09 22:16:20 UTC (rev 226) +++ trunk/help/projects.html 2005-11-11 17:33:41 UTC (rev 227) @@ -27,37 +27,22 @@ <h2>Software Infrastructure</h2> =20 <h3>Profiling Valgrind</h3> -<p>We haven't had a good way to profile Valgrind for something like 2 ye= ars. -If we could find a way to profile Valgrind, there would certainly be som= e -easy speed-ups to find. That would make everybody happier!</p> +<p>Valgrind used to have a built-in tick-based profiler, but it stopped +working about two years ago and we've had no way of profiling it since, +because neither gprof nor gcov work with Valgrind.</p> =20 -<p>Valgrind used to have a tick-based profiler. A timer was set up to s= end -SIGALRM 100 times per second, and every time it was caught Valgrind woul= d -record where in its code it was. This gave a good view of which parts o= f -the code were responsible for the most amount of runtime. The code for = this -is still there (see coregrind/m_profile.c) but it hasn't worked for a lo= ng -time. If you activate it (set VG_DO_PROFILING in include/pub_tool_profi= le.h, -recompile, and use --profile=3Dyes) Valgrind bombs due to signal issues. -Also, this relies on the glibc function setitimer(), and we are in the -process of removing all dependencies on glibc.</p> +<p>Recently self-hosting started working well enough to use Cachegrind o= n +Valgrind (see the README_DEVELOPERS file for how to do this), but no +thorough performance investigation has yet been done. This would be ver= y +valuable because Valgrind's speed is the single biggest cause of user +complaints.</p> =20 -<p>Neither gcov nor gprof work with Valgrind, basically because Valgrind= does -weird stuff that they cannot handle. Perhaps another tool (OProfile?) w= ould -be appropriate.</p> +<p>The only problem with using Cachegrind on Valgrind is that it's hard = to +profile big programs due to the double-slowdown. If you know of another +profiler that will work with Valgrind (OProfile perhaps?) that could be +helpful. (Added August 27, 2005; updated November 11, 2005)</p> =20 -<p>Using Cachegrind is a possibility, although Valgrind's support for ru= nning -itself is very flaky at the moment. Improving this support would also l= et -us run Valgrind itself under Memcheck.</p> =20 -<p>Or if anyone knows how to get the tick-based profiler working again -without relying on glibc functions, that would be a good start. (Added -August 27, 2005)</p> - -<p><b>Update:</b> Self-hosting works reasonably well now; at least=20 -well enough to run Nulgrind under Cachegrind. See the README_DEVELOPERS -file for details. (October 10, 2005) - - <h3>Performance regression testing</h3> <p>We currently have some scripts to run the regression tests nightly on a range of machines. This is very useful for spotting correctness |