On Jan 12, 2008, at 12:26 PM, Adam Leventhal wrote:

On Fri, Jan 11, 2008 at 06:12:57PM -0800, Roman Shaposhnik wrote:
  My main beef with stack helpers is that they have to be executed
inside the kernel and are subject to the usual DTrace restrictions.
I would like to see a possibility of offloading more work to user
space in a generic fashion. For example, we have a libcollector.so
facility that is capable of reconstructing stacks under the most
challenging of situations (inside the function preamble, etc.) it is
way more accurate in what it reports back than ustack() it is also
capable of more stack unwinding than jstack(). Of course, it runs in
user space.

All respect to libcollector.so, but the conditions under which DTrace must gather a stack are far more constrained than those of a user-land program. The DTrace code from probe context can't do I/O or block -- it can only
load and store. Even looping is a bit of a stretch.

I don't disagree at all! And I'm not trying to say that *stack() should be replaced. I'm merely trying to explore whether the best of both worlds approach is doable. What we've done for Project D-Light clearly shows that for some applications it is doable. At this point I really would like to explore whether something like that could be generalized. See my earlier email to Eric. I understand his argument perfectly well. But I'm still not convinced that it makes the idea void. If convincing me is perceived as a waste of time -- that's ok. I guess I should get back to you when I earn my Solaris kernel guru degree :-) If on the other hand, I'm not explaining what I want clearly -- I can try again.

Thanks,
Roman.

Reply via email to