[Gluster-devel] gluster IRC and use systemtap can't output glusterfs backtrace

Krishnan Parthasarathi kparthas at redhat.com
Wed May 14 03:26:50 UTC 2014


This systemtap script limits itself to the fuse module and glusterfs binary.
But it is possible to track all the modules that can be possibly (dynamically)
loaded into a glusterfs process using system scripts.

I am not sure what kind of analysis you are looking at, across all function
call stacks.

thanks,
Krish

----- Original Message -----
> to  Krishnan Parthasarathi:
> thank you very much for your help,
> As you said,  I use stap -d /usr/local/sbin/glusterfs --ldd -e 'probe
> process("/usr/local/lib/glusterfs/3.5/xlator/mount/fuse.so").function("*"){print_ubacktrace()}'
> ,
> systemtap can output the fuse module function of the stack ,
> But now I want to track glusterfs all function'call in order to analyze
> glusterfs system, need output all function call stack ,
> Do you have any better suggestion? or  Recommend other tools(similar to
> systemtap)?
>         thank you very much!
> 
> 
> 
> 
> justglusterfs at gmail.com
>  
> From: Krishnan Parthasarathi
> Date: 2014-05-13 13:38
> To: 陈陈
> CC: gluster-devel
> Subject: Re: [Gluster-devel] gluster IRC and use systemtap can't output
> glusterfs backtrace
> To probe functions in specific translators you need to
> specify the path to the corresponding .so file in the process
> provider.
>  
> For eg, to probe functions in fuse translator,
>  
> stap -d /usr/local/sbin/glusterfs --ldd -e 'probe
> process("/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so").function("*"){print_ubacktrace()}'
>  确实可以输出fuse模块的函数栈
> The following is the output I see, when I write files using dd on
> a GlusterFS native mount,
>  
> <snip>
>  
> 0x31d7cf5e1d : clone+0x6d/0x90 [/usr/lib64/libc-2.17.so]
> 0x7f7977a1c834 : fuse_resolve+0x74/0x4f0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd3e : fuse_resolve_all+0x8e/0xb0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd80 : fuse_resolve_and_resume+0x20/0x30
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a3507e : fuse_thread_proc+0x2ae/0x690
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x31d8407c53 : start_thread+0xc3/0x310 [/usr/lib64/libpthread-2.17.so]
> 0x31d7cf5e1d : clone+0x6d/0x90 [/usr/lib64/libc-2.17.so]
> 0x7f7977a1e4d0 : fuse_fd_ctx_get+0x0/0x40
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1c84c : fuse_resolve+0x8c/0x4f0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd3e : fuse_resolve_all+0x8e/0xb0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd80 : fuse_resolve_and_resume+0x20/0x30
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a3507e : fuse_thread_proc+0x2ae/0x690
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x31d8407c53 : start_thread+0xc3/0x310 [/usr/lib64/libpthread-2.17.so]
> 0x31d7cf5e1d : clone+0x6d/0x90 [/usr/lib64/libc-2.17.so]
> 0x7f7977a1c1e0 : fuse_resolve_continue+0x0/0x100
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1c9f8 : fuse_resolve+0x238/0x4f0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd3e : fuse_resolve_all+0x8e/0xb0
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a1cd80 : fuse_resolve_and_resume+0x20/0x30
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x7f7977a3507e : fuse_thread_proc+0x2ae/0x690
> [/usr/local/lib/glusterfs/3.5qa2/xlator/mount/fuse.so]
> 0x31d8407c53 : start_thread+0xc3/0x310 [/usr/lib64/libpthread-2.17.so]
> 0x31d7cf5e1d : clone+0x6d/0x90 [/usr/lib64/libc-2.17.so]
>  
> </snip>
>  
> Hope that helps,
> Krish
>  
>  
> ----- Original Message -----
> > See inline for response.
> > 
> > ----- Original Message -----
> > > hi everyone!
> > > I meet three question:
> > > 
> > > question one:
> > > 
> > > I use IRC client(mirc) config server is:  irc.freenode.net  or
> > > irc.gnu.org
> > > but always can't connect, follwing errors:
> > > Connect retry #1 irc,freenode,net (6667) (dns pool)
> > > unable to connect server (connect timed out)
> > > 
> > > 
> > > 
> > > question two:
> > > I system is centos6.4,glusterfs version is 3.4.
> > > I want to use systemtap watch glusterfs function backtrace,
> > > when I configure glusterfs source code, execute the following operation:
> > > ./configure --enable--systemtap
> > > but checking dtrace happen error,because in my system,no dtrace,my
> > > question is --enable--systemtap why need dtrace?  it must have dtrace?
> > 
> > I think the systemtap folks have retained certain symbols from dtrace
> > so that code instrumented with systemtap user specified probes are
> > compatible
> > with systems that have dtrace but not systemtap in them.
> > 
> > > 
> > > question three:
> > > when I do io test in glusterfs client. I execute following command:
> > > stap -d /usr/local/sbin/glusterfs --ldd -e 'probe
> > > process("glusterfs").function("*"){print_ubacktrace()}'
> > > 
> > > the result is  there is nothing output, and  the stap command S state,
> > > no return.
> > 
> > For 'process' systemtap provider, you don't need to compile glusterfs with
> > "--enable-systemtap". I am not sure why you are not seeing any of the
> > probes
> > firing in your stap script. Let me try this same and share my results on
> > this
> > thread.
> > 
> > Hope that helps,
> > Krish
> > 
> > > 
> > > thank you answer me!
> > > _______________________________________________
> > > Gluster-devel mailing list
> > > Gluster-devel at gluster.org
> > > http://supercolony.gluster.org/mailman/listinfo/gluster-devel
> > > 
> > _______________________________________________
> > Gluster-devel mailing list
> > Gluster-devel at gluster.org
> > http://supercolony.gluster.org/mailman/listinfo/gluster-devel
> > 
> 



More information about the Gluster-devel mailing list