About
Implementation/Development notes
Implementation details
Screenshots
Changelog
Sourceforge Project Page
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.
(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