Messages in this thread | | | Date | Wed, 2 Dec 2009 10:19:07 +0100 | From | Ingo Molnar <> | Subject | Re: [RFC] [PATCH 0/2] Futex fault injection |
| |
* Sripathi Kodi <sripathik@in.ibm.com> wrote:
> On Tue, 1 Dec 2009 17:23:59 +0100 > Ingo Molnar <mingo@elte.hu> wrote: > > > > > * Darren Hart <dvhltc@us.ibm.com> wrote: > > > > > I don't think the "butt-ugly" argument is enough to reject the patch. > > > > It is in my book - i dont ever apply ugly patches intentionally. > > > > > It's a fairly subjective metric and I don't think the proposed > > > solution results in "pretty" code either. In fact the super long > > > function names and multi-line conditionals are arguably "ugly" (maybe > > > not "butt-ugly" though). :-) > > > > > > However, the arguments are solid and I understand wanting to introduce > > > a new feature in a particular way. Has there been any work done on > > > perf event injection up to this point or would this be a completely > > > new perf feature? > > > > Yeah, it would be a brand new one. > > > > Fault injection framework currently in the kernel provides an > infrastructure to set parameters like 'probability', 'interval', > 'times' as well as a task filter. I think a fault injection mechanism > using tracepoints-perf will also need to provide such a framework, > because without that the faults become too predictable. For example, > if there are 20 fault points in the kernel, we should be able to > trigger any one of them with a given probability, possibly for a > particular task alone. This infrastructure will have to be built in > perf tools in user space. Do you agree?
Yeah, definitely so. I think event injection is ultimately useful and should/could graduate/extend from its current rather limited debugfs based API to something syscall based (which perf could offer). App testsuites could programmatically inject faults, etc.
The act of logging/tracing/profiling events and the act of injecting events is ultimately connected.
Btw., 'perf task filter' is something inherent in perf events: you can define per task (or per cpu, or per task hierarchy) events.
Ingo
| |