I removed the "execname== nfsd" line and got nothing again: # ./readdir.d dtrace: script './readdir.d' matched 21739 probes ^C CPU ID FUNCTION:NAME 0 2 :END ==============time===================== ==============count==================== ========total time in func============= ======average time in func=============
# more readdir.d #!/usr/sbin/dtrace -s #pragma D option dynvarsize=64m fbt::nfs3readdirplus:entry, fbt::nfs3readdir:entry { @count[probefunc] = count(); self->x[probefunc, stackdepth] = timestamp } fbt:::return / self->x[probefunc, stackdepth] / { this->diff = timestamp - self->x[probefunc, stackdepth]; @time[probefunc] = quantize(this->diff); @total[probefunc] = sum(this->diff); @avg[probefunc] = avg(this->diff); self->x[probefunc, stackdepth] = 0 } END { printf("==============time====================="); printa(@time); printf("==============count===================="); printa(@count); printf("========total time in func============="); printa(@total); printf("======average time in func============="); printa(@avg); } Thanks, -- Leon On 2/25/07, Matty <matty91 at gmail.com> wrote: > I think execname is set to the name of the executable that performs > the readdir*(), not nfsd. What happens when you remove the "execname > == nfsd" line from the entry probes?: > > fbt::nfs3readdirplus:entry, > fbt::nfs3readdir:entry > { > @count[execname,probefunc] = count(); > self->x[probefunc, stackdepth] = timestamp > } > > Thanks, > - Ryan > -- > UNIX Administrator > http://prefetch.net > > On 2/25/07, Leon Koll <leon.is.here at gmail.com> wrote: > > On 2/21/07, Calum Mackay <Calum.Mackay at sun.com> wrote: > > > hi Leon, > > > > > > That does indeed look odd. The kstat is incremented *before* we send the > > > request, so it's hard to see how you can see it in a snoop, and not in > > > the nfsstat output. > > > > > > What version of Solaris is the client running? > > > > > > A dtrace script would indeed do it, too, of course. An FBT trace on e.g. > > > > > > fbt::nfs3readdirplus:entry > > > > > > fbt::nfs3readdir:entry > > > > > > will catch the two types of READDIR. > > > > Hi Calum, > > I used this one (please correct if something is wrong in it) : > > > > #!/usr/sbin/dtrace -s > > #pragma D option dynvarsize=64m > > > > fbt::nfs3readdirplus:entry, > > fbt::nfs3readdir:entry > > / execname == "nfsd" / > > { > > @count[probefunc] = count(); > > self->x[probefunc, stackdepth] = timestamp > > } > > fbt:::return > > / self->x[probefunc, stackdepth] / > > { > > this->diff = timestamp - self->x[probefunc, stackdepth]; > > @time[probefunc] = quantize(this->diff); > > @total[probefunc] = sum(this->diff); > > @avg[probefunc] = avg(this->diff); > > self->x[probefunc, stackdepth] = 0 > > } > > END { > > printf("==============time====================="); > > printa(@time); > > printf("==============count===================="); > > printa(@count); > > printf("========total time in func============="); > > printa(@total); > > printf("======average time in func============="); > > printa(@avg); > > } > > > > and got nothing: > > # ./readdir.d > > dtrace: script './readdir.d' matched 22067 probes > > ^C > > CPU ID FUNCTION:NAME > > 1 2 :END > > ==============time===================== > > ==============count==================== > > ========total time in func============= > > ======average time in func============= > > > > At the same time, snoop shows a lot of ACCESS3, GETATTR3, READDIRPLUS3 ops. > > Where's the catch? > > > > Thanks, > > -- Leon > > _______________________________________________ > > nfs-discuss mailing list > > nfs-discuss at opensolaris.org > > > _______________________________________________ > nfs-discuss mailing list > nfs-discuss at opensolaris.org >