After half a week of trying to figure out and being worried that I'll seriously fall behind, things are much brighter now :)
I have finally figured out what all information is required.
Gathering process information is the simple part. We have pre-defined functions for it:we can probe the sys_fork() and the sys_execve() and sys_exit() (though I still wonder why vfork() and clone() cannot be probed) and use the pre-defined functions there like pid() etc.It was the disk throughput, CPU utilisation part which was a little confusing..I do have some ideas how to implement, not sure if they work though.
1.was thinking of using the processor queue , disk queue for it and use the qsq_ functions. They'll probably point out the bottlenecks very clearly,say if the number of processes waiting is large.This, from the tasks waiting point of view.
2.Or, to look at it from the CPU and disk point of view, we could probe the kernel inline functions like idle_balance etc.
One more thing, one hint that my mentor gave, logging in memory is better option than logging to a file at bootup.
But anyway, my deadline is 11th June so I can very well experiment with these ideas.
I am really happy to finally get to the coding part :) Wrote a script that returns the process information (pid, ppid, execname, pexecname ) whenever a new process is created.Trivial but still... its code!! Once I am able to implement the CPU and Disk info part, I can modify the bootchartd )
p.s Just realised the parent child relationship can be shown easily in the bootchart.. but that comes later in the rendering phase