The intent is to split LTT, get the infrastructure into the kernel, have
the trace points as patches.
> > [...] This adds no overhead to kernel, allows your suggested patches to
> > use a standard efficient infrastructure, reduces replicated work from
> > specific problem to specific problem.
> so why not keep the core parts as separate patches as well? If it does
> nothing then i dont see why it should get into the kernel proper.
:-) It does do something. It provides a common infrastructure for anyone
wanting to use trace points. What I meant is that when not enabled it
doesn't cause any overhead.
As a performance tool it will be used not only be kernel developers but by
people writing device drivers, sub-systems, and apps. Having an accepted
infrastructure in the kernel allows a common vocabulary to be used across
kernel, devices, sub-systems, and applications. It allows sub-system
developers who know their system best to put in the events and developers
of other sub-systems of apps to use those events to understand what is
going on. If the infrastructure is in the kernel, users could dynamically
enable and feedback performance results to the kernel developers.
In short this will provide a common way to discuss performance issues
across kernel, sub-system, and application space.
> > > my problem with this stuff is conceptual: it introduces a constant drag on
> > > the kernel sourcecode, while 99% of development will not want to trace,
> > If you care about performance you will want to trace. On two previous
> > kernels I have worked on I've heard this comment. Once the
> > infrastructure was in it was used and appreciated.
> (i think you have not read what i have written. I use tracing pretty
> frequently, and no, i dont need tracing in the kernel, during development
> i can apply patches to kernel trees just fine.)
Good - I'm glad you find tracing useful - sorry if I reacted to the
statement that most of the time it's not needed. As above, it should be in
the kernel proper not as just a patch.
> > The lockless scheme is pretty simple, instead of using a spinlock to
> > ensure atomic allocation of buffer space, the code does an
> > allocate-and-test routine where it tries to allocate space in the buffer
> (this is in essence a moving spinlock at the tail of the trace buffer -
> same problem.)
No, we use lock-free atomic operations to reserve a place in the buffer to
write the data. What happens is you attempt to atomic move the current
index pointer forward. If you succeed then you have bought yourself that
many data words in the queue. In the unlikely event you happened to
collide with someone you perform the atomic operation again.
The K42 MP OS Project
Advanced Operating Systems
Scalable Parallel Systems
IBM T.J. Watson Research Center
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/