Free Code Graphing Project

About
Implementation/Development notes
Implementation details
Screenshots
Changelog
Sourceforge Project Page

Version 2.6.0 has been released! (2004-08-29) Release Information

About

The fcgp comes from Rusty Russell's Linux Kernel Graphing Project (lgp) - and that's basically still the current state. While being much more optimized than the original, the code is still in several regards specific to the Linux kernel (the 2.4 series). I (creinig) happened to be the first (and only) one to actually submit a patch and when Rusty ran out of time, he "convinced" me to take over maintenance :-)

The code takes a Linux kernel source distribution, crunches over it for about 35 minutes on a 400MHz machine / 11 minutes on a 1.2GHz Athlon (as of V2.5.2), requiring up to 90MB RAM at peak times and about 240MB disk space (without kernel sources) and finally produces a ~22MB postscript file of the poster you can see below.

You can also have a look at Rusty's original page in all its glory.


Implementation/Development notes

(1) I don't think the code can be made much faster anymore. Perhaps a 30% improvement with some greater reorganization / rewrite, but that's it. Anyway, if you consider that it went from 9 hours to about 70 minutes of processing time I'd say that is good enough for now.
Update (V2.5.2): Errare Humanum Est. It's now 35 minutes (and on my 1.2GHz Athlon it even went from 28 minutes (V2.5.1) to 11 minutes), so the 30% is clearly surpassed. And there's still room for improvement :) This time I won't try to guess how much though :)
Update (V2.6.0): On a 2.2GHz P4 a 2.6 kernel takes about 20 min to generate.

(2) The next big step is removing the dependencies on the Linux kernel directory layout (not difficult - much of this is already parameterizable (although only by editing the Makefile)) and on the Linux Kernel coding style (i.e. finding a better, more robust way of identifying / isolating function bodies).

(3) Also the output should be more customizable - poster caption text, poster subdivision (number of rings etc), minimum function size shown etc should be defined via some config file.

Last Change: 2004-09-02 01:30:33 UTC

SourceForge Logo