On Thu, Oct 07, 2010 at 05:23:43PM +0200, Pierre Tardy wrote: > On Thu, Oct 7, 2010 at 5:08 PM, Mathieu Desnoyers > <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > > [ Adding a few more CCs, since this discussion is about a tracepoint > > userspace ABI policy, which is a topic of general interest. ] > > To add a little more comment, this is not the first time that > tracepoints ABI changes. You can look at pytimechart sourcecode: > http://gitorious.org/pytimechart/pytimechart/blobs/master/timechart/ftrace.py > > from 2.6.31 which is the first kernel I support, > > sched_switch: 'task %s:%d [%d] ==> %s:%d [%d]', > changed to: > sched_switch: 'prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s > ==> next_comm=%s next_pid=%d next_prio=%d', > > workqueue_execution: 'thread=%s > func=%s\\+%s/%s','thread','func','func_offset','func_size'), > changed to: > workqueue_execution: 'thread=%s func=%s','thread','func'), > Seems to be only formatting changes, but no field has been removed and no tracepoint has been renamed, etc... So these are no stable ABI changes because the formatting can be changed anytime. We want that flexibility and it stands on top of the per event "format" files. Tools are not supposed to read ascii formatted traces from trace/trace_pipe files. Instead they need to read binary traces from trace_pipe_raw files and look at the format file to know how to format this. This is why we have these format files: to let tools adapt with changes like format change or fields added. And we have a library in perf and trace-cmd that let you - request a field value in a raw trace, by its name. So the field doesn't need to have a stable offset in the trace. - request ascii format info, so that if ascii format changes, the tool adapt. - record binary traces, much more leightweight for the writer (kernel) and for the reader (user). I did told you that it would be better you make PyTimeChart use the perf scripting facilities, it handles all the above things + it would avoid you to handle a lot of things. Now it's up to you, but don't count on us to make the ascii formatting a stable ABI. > actually, over all the events pytimechart supports, only power traces > are stable... Now one problem is that we have really broken the workqueue tracepoints in this release. I thought nobody was using them so we could refactor this tracepoint subsystem, my bad. workqueue_execution has become workqueue_execution_start and workqueue_execution_end. workqueue_insertion is going to suffer a similar split. workqueue_creation and workqueue_destruction have disappear but I can probably restore them, but for the rest, what should we do? I really feel uncomfortable with this tracepoint/ABI problem.... Mathieu suggested we start a user library that could handle these changes when they are really necessary. Thoughts? (Adding Tejun in Cc). -- To unsubscribe from this list: send the line "unsubscribe linux-trace-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html