This project aims at exploring novel ways of doing (light) kernel trace/debugging using a visual approach, with a focus on obtaining low cognitive load (i.e. you don't have to know much about the kernel subsystem and what it's doing in order to see things in action) and to give you an insight about what the kernel is doing (and where), connecting the single function with the subsystem it belongs to. On the other hand, you can also see it as a tool to wander, hence the name, around the kernel source code to see how things works under the hood. Picture in your mind a big rectangle representing the kernel binary code, and many smaller areas that are proportional to the size (in binary code) of the kernel functions. All these smaller areas fill up the entire kernel rectangle. Using ftrace we can come up with the kernel backtrace at a given instant in time and highlight the affected areas (i.e. callee functions) with some color and opacity level. Never called functions remains black (or any color chosen as the default background for inactive code) while functions called more frequently (and/or more recently) will have brighter/fancier colors. Representing the call flow like this could open up to novel debug approaches such like making the difference between subsequent color maps in order to discover what-functions-do-what. Also, it would be possible to navigate between subsystem that resembles the kernel hierarchical directory structure and filter by them in order to see only relevant information and to take a look at the dependencies among different subsystems. Visually, the hierarchical area information will be presented as a Voronoi treemap, there's quite an interesting experiment about how to create and render them efficiently in the references. Another point of this project is to let the user skim through the kernel flow without too much setup: the graphical interface should pop up overlayed on the screen on the press of a key shortcut, something that loosely resembles Numega's Softice (anyone remember the good ol' days? : ) ) way of popping up, and you're good to go.
Goal for this Hackweek
- Sort out a way of organizing all the kernel information sampled from ftrace
- Connecting them with subsystem (i.e. compilation unit) by virtue of dwarf info
- Build a data model for the calltrace and how to represent them on screen
While maybe also writing down some code to implement at least the data model part of it :).
LINK TO GITHUB WILL COME OUT SOON
No Hackers yet
Looking for hackers with the skills:
Nothing? Add some keywords!
This project is part of:
Hack Week 23
This project is one of its kind!