Adrian Lienhard wrote:
I had a few situations where this sort of logging could have saved me hours (or days). One example was the problem where Squeak would suddenly stop responding to web requests and hog the CPU but would get back into normal mode as soon as you wiggle the mouse [1]. I could eventually find the root cause by compiling a special VM with John's message tracer that can be activated by sending a signal. With DTrace I could have just written a simple D script and trace the production system when it got into this mood.
What we do in our production environments is to hook up SIGUSR1 to a handler that dumps all the call stacks in the system. This has proven to be *the* ticket to debug everything from CPU hogging over tight GC spins to semaphore and Delay lockups.
DTrace probes are said to have a very low execution overhead if they are not active and hence could be added to the VM by default. Something else interesting may be that DTrace provides many predefined probes for system and library calls that may be useful to combine with higher-level Smalltalk probes.
I just hacked a small prototype and this seems to work (Unix VM on OS X).
Did you run benchmarks with and without the probes to see what the impact is?
Cheers, - ndres