svn commit: r190837 - in stable/7/sys: . contrib/pf
dev/ath/ath_hal dev/cxgb kern
Robert Watson
rwatson at FreeBSD.org
Wed Apr 8 12:22:34 PDT 2009
On Wed, 8 Apr 2009, Robert Watson wrote:
>>>> While the probes I've added could be used to do this very easily, that's
>>>> not the thrust of the work I'm currently doing. A useful starting point
>>>> for someone interested in this problem would be a dtrace script like the
>>>> following:
>>>>
>>>> vfs:namecache:enter:done
>>>
>>> Also useful: the same script, but using "vfs:namecache:lookup:hit".
>>>
>> Perhaps we should start to put such scripts somewhere to src/tools.
>
> This sort of script isn't really worth putting in a library, as it's
> composed only of the most basic language constructs and a single probe.
> I'd rather reserve a tools tree for things that reflect a significant
> investment in time to write, rather than things that can be written in
> thirty seconds given a rudimentary knowledge of the D scripting language.
> Otherwise we'll be buried in scripts that have little utility and unable to
> find scripts that are useful.
>
> Something we do need to do is begin to formally document the sets of probes
> we're adding, because these sorts of trivial scripts become a lot more
> obvious it you know the probes exist and what they do :-). I'm not sure
> what the conventions for said man pages should be - perhaps vfs_probes(4) or
> vfs_dtrace(4) or the like, broken into a parts that include a summary of the
> goal of the provider, a list of the specific probes, etc?
Scott has suggested that these sorts of example scripts are particularly
helpful when just getting started with DTrace, so perhaps the thing to do is
this: I've collected a set of such scripts on our wiki here:
http://wiki.freebsd.org/DTrace/Examples
They illustrate some of the facilities of the D language, what you can do with
some of the probes we have in the tree already, etc. It would be fairly
straight forward to take this Wiki page and convert it into a new section of
the FreeBSD Handbook's DTrace chapter, basically just adding a bit more
annotation and explanation of the scripts.
Most of the scripts on the Wiki page don't yet work in FreeBSD 7-STABLE, as
they rely on probes I've added shortly before or since the code freeze for 7.2
began, FYI, but hopefully will start working in 7.x starting a bit after the
code freeze is relaxed.
Also notice that these DTrace scripts really only help you when analyzing the
behavior of the FreeBSD kernel, as we don't yet have proper tracing support
for userspace events (i.e., the "pid" provider).
Finally, the best reference I've found for DTrace so far is really the Solaris
Dynamic Tracing Guide, which includes an introduction to the language, review
of the providers available on Solaris, and example scripts that use them. As
with all programming languages, learning by doing is best, of course...
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the svn-src-stable-7
mailing list