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@xxxxxxxxx > > From: Krishnan Parthasarathi > Date: 2014-05-13 13:38 > To: 陈陈 > CC: gluster-devel > Subject: Re: 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@xxxxxxxxxxx > > > http://supercolony.gluster.org/mailman/listinfo/gluster-devel > > > > > _______________________________________________ > > Gluster-devel mailing list > > Gluster-devel@xxxxxxxxxxx > > http://supercolony.gluster.org/mailman/listinfo/gluster-devel > > > _______________________________________________ Gluster-devel mailing list Gluster-devel@xxxxxxxxxxx http://supercolony.gluster.org/mailman/listinfo/gluster-devel