What do you get with the following (leave it running until you see a
few READDIR operations with snoop, and then hit ^C)?:

fbt:nfs:nfs3_readdir:entry
{
       @count[execname,probefunc] = count();
}

On 2/25/07, Leon Koll <leon.is.here at gmail.com> wrote:
> 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
> >
>


-- 
UNIX Administrator
http://prefetch.net

Reply via email to