Showing posts from October, 2014

Profiling the Thorium actor model engine with LTTng UST

Thorium is an actor model engine in C 1999. It uses MPI and Pthreads. The latency (in Thorium) when sending small messages between actors recently came to my attention. In this post, LTTng-UST is used to generate actor message delivery paths annotated with time deltas in each step. Perf I have been working with perf for a while now, but found it only useful mostly for hardware counters. I typically use the following command to record events with perf. Note that ($thread is the Linux LWP (lightweight process) thread number. perf record -g \     -e cache-references,cache-misses,cpu-cycles,ref-cycles,instructions,branch-instructions,branch-misses \     -t $thread -o $     As far as I know, perf can not trace things like message delivery paths in userspace. Tracing with LTTng-UST   This week, I started to read about tracepoints (perf does support "Tracepoint Events"). In particular, I wanted to use tracepoints to understand some erratic behavior