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