This summer, I read a great article
-"coz:
-This Is the Profiler You're Looking For" in USENIX ;login: about
-how to profile multi-threaded programs. It presented a system for
-profiling software by running experiences in the running program,
-testing how run time performance is affected by "speeding up" parts of
-the code to various degrees compared to a normal run. It does this by
-slowing down parallel threads while the "faster up" code is running
-and measure how this affect processing time. The processing time is
-measured using probes inserted into the code, either using progress
-counters (COZ_PROGRESS) or as latency meters (COZ_BEGIN/COZ_END). It
-can also measure unmodified code by measuring complete the program
-runtime and running the program several times instead.
-
-
The project and presentation was so inspiring that I would like to
-get the system into Debian. I
-created
-a WNPP request for it and contacted upstream to try to make the
-system ready for Debian by sending patches. The build process need to
-be changed a bit to avoid running 'git clone' to get dependencies, and
-to include the JavaScript web page used to visualize the collected
-profiling information included in the source package.
-But I expect that should work out fairly soon.
-
-
The way the system work is fairly simple. To run an coz experiment
-on a binary with debug symbols available, start the program like this:
-
-
-coz run --- program-to-run
-
-
-
This will create a text file profile.coz with the instrumentation
-information. To show what part of the code affect the performance
-most, use a web browser and either point it to
-http://plasma-umass.github.io/coz/
-or use the copy from git (in the gh-pages branch). Check out this web
-site to have a look at several example profiling runs and get an idea what the end result from the profile runs look like. To make the
-profiling more useful you include <coz.h> and insert the
-COZ_PROGRESS or COZ_BEGIN and COZ_END at appropriate places in the
-code, rebuild and run the profiler. This allow coz to do more
-targeted experiments.
-
-
A video published by ACM
-presenting the
-Coz profiler is available from Youtube. There is also a paper
-from the 25th Symposium on Operating Systems Principles available
-titled
-Coz:
-finding code that counts with causal profiling.
-
-
The source code
-for Coz is available from github. It will only build with clang
-because it uses a
-C++
-feature missing in GCC, but I've submitted
-a patch to solve
-it and hope it will be included in the upstream source soon.
-
-
Please get in touch if you, like me, would like to see this piece
-of software in Debian. I would very much like some help with the
-packaging effort, as I lack the in depth knowledge on how to package
-C++ libraries.
-