]> pere.pagekite.me Git - homepage.git/commitdiff
Publish new blog post about Coz.
authorPetter Reinholdtsen <pere@hungry.com>
Thu, 11 Aug 2016 10:00:33 +0000 (12:00 +0200)
committerPetter Reinholdtsen <pere@hungry.com>
Thu, 11 Aug 2016 10:00:33 +0000 (12:00 +0200)
blog/data/2016-08-11-coz-profiler.txt [new file with mode: 0644]

diff --git a/blog/data/2016-08-11-coz-profiler.txt b/blog/data/2016-08-11-coz-profiler.txt
new file mode 100644 (file)
index 0000000..3627d51
--- /dev/null
@@ -0,0 +1,66 @@
+Title: Coz can help you find bottlenecks in multi-threaded software - nice free software
+Tags: english, debian, nice free software
+Date: 2016-08-11 12:00
+
+<p>This summer, I read a great article
+"<a href="https://www.usenix.org/publications/login/summer2016/curtsinger">coz:
+This Is the Profiler You're Looking For</a>" 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.</p>
+
+<p>The project and presentation was so inspiring that I would like to
+get the system into Debian.  I
+<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830708">created
+a WNPP request for it</a> 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.</p>
+
+<p>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:
+
+<p><blockquote><pre>
+coz run --- program-to-run
+</pre></blockquote></p>
+
+<p>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
+<a href="http://plasma-umass.github.io/coz/">http://plasma-umass.github.io/coz/</a>
+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 &lt;coz.h&gt; 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.</p>
+
+<p>A video published by ACM
+<a href="https://www.youtube.com/watch?v=jE0V-p1odPg">presenting the
+Coz profiler</a> is available from Youtube.  There is also a paper
+from the 25th Symposium on Operating Systems Principles available
+titled
+<a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/curtsinger">Coz:
+finding code that counts with causal profiling</a>.</p>
+
+<p><a href="https://github.com/plasma-umass/coz">The source code</a>
+for Coz is available from github.  It will only build with clang
+because it uses a
+<a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55606">C++
+feature missing in GCC</a>, but I've submitted
+<a href="https://github.com/plasma-umass/coz/pull/67">a patch to solve
+it</a> and hope it will be included in the upstream source soon.</p>
+
+<p>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.</p>