<div><span style="font-family:arial,sans-serif;font-size:13px">As promised, I've added my visualizer code to the LITMUS^RT repos. First, the userspace tool:</span></div><div><a href="https://github.com/LITMUS-RT/rt-kernelshark">https://github.com/LITMUS-RT/rt-kernelshark</a><span style="font-family:arial,sans-serif;font-size:13px"><br>

</span></div><div>To compile:</div><div>$ make gui</div><div>Second, I've pushed a prop/rt-kshark branch for the kernelspace changes. That change is two things:</div><div>1. save litmus_clock() values with every FTRACE record (FTRACE time is unreliable)</div>

<div>2. add container visualization macros</div><div><br></div><div>This tool is for debugging and is meant to replace the old unit-trace visualization code. It is significantly faster than unit-trace's visualizer and has a more modular design so that new features (like containers) can be added.</div>

<div><br></div><span style="font-family:arial,sans-serif;font-size:13px"><div>Example run:</div>$ trace-cmd record -e sched:sched_switch -e litmus:* &</span><div><font face="arial, sans-serif">$ echo GSN-EDF > /proc/litmus/active_plugin<br>

</font><div><font face="arial, sans-serif">$ rtspin -w 10 20 10</font></div><div><font face="arial, sans-serif">$ rtspin -w 10 20 10</font></div><div><font face="arial, sans-serif">$ rtspin -w 10 20 10</font></div><div><font face="arial, sans-serif">$ release_ts</font></div>

<div><font face="arial, sans-serif"># wait for tasks to finish</font></div><div><font face="arial, sans-serif">$ fg</font></div><div><font face="arial, sans-serif">$ <CTRL-C></font></div><div><font face="arial, sans-serif"># visualize the schedule</font></div>

<div><font face="arial, sans-serif">$ kernelshark trace.dat </font></div><div><font face="arial, sans-serif"># can also pass in the -c flag to ignore records before release_ts</font></div><div><font face="arial, sans-serif"># call with -h to see other command line options</font></div>

<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">When kernelshark loads, the first thing you will see is a high-level view of the CPUs:</font></div><div><a href="http://imgur.com/a/sTcPL#CWOyk">http://imgur.com/a/sTcPL#CWOyk</a></div>

<div>Black areas represent time spent running tasks which aren't real-time. You can zoom into an area by clicking and dragging the mouse to the right. You can zoom out by clicking and dragging the mouse to the left. To plot tasks or containers, use options under the "Plot" menu. It's faster to zoom in to an area of interest before plotting tasks or containers, which are a lot more complicated than CPUs.<br>

</div><div><br></div><div>An example of plotted tasks:</div><div><a href="http://imgur.com/a/sTcPL#oGaAW">http://imgur.com/a/sTcPL#oGaAW</a></div><div>Currently releases, deadlines, completions, and blocked times are all visualized. A task blocking would resemble the black lines used to denote non-RT work for the CPU plots.</div>

<div><br></div><div>An example of a plotted container:</div><div><a href="http://imgur.com/a/sTcPL#ayyek">http://imgur.com/a/sTcPL#ayyek</a></div><div>The first colorspin line is a periodic server container for a userspace task. I have unhelpfully given the container the same name as the userspace task, which is the second colorspin line. I've used this to visualize locks (a lock is "running" a task when that task holds the lock) and to visualize different criticality levels in our mixed-criticality scheduler. This is a very useful tool for visualizing all the abstractions we use in scheduling theory and our last paper would not have succeeded without it.</div>

<div><br></div><div>I will add detailed documentation to the wiki in the next week, especially for container visualization. Before I write that up, I want to send out a cleaned version of our test scripts which automate experiment setup, tracing, overhead measurements, and plotting.</div>

<div><br></div><div>Try it out! Report bugs on the github page!</div><div><div><br></div>-- <br>Jonathan Herman<br>Department of Computer Science at UNC Chapel Hill<br>
</div></div>