All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh
       [not found] <b6d31ae26f8615d6bd020f4392980950d4c70c96.1513095505.git.mpetlan@redhat.com>
@ 2017-12-12 16:22 ` Michael Petlan
  2017-12-12 17:11   ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Petlan @ 2017-12-12 16:22 UTC (permalink / raw)
  To: linux-perf-users; +Cc: acme

Having 'filename' variable there seems to be more stable, since
'result->name' has recently changed to 'result->uptr'.

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
---
 tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 30a950c..3759582 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -13,7 +13,7 @@ add_probe_vfs_getname() {
 	local verbose=$1
 	if [ $had_vfs_getname -eq 1 ] ; then
 		line=$(perf probe -L getname_flags 2>&1 | egrep 'result.*=.*filename;' | sed -r 's/[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*/\1/')
-		perf probe $verbose "vfs_getname=getname_flags:${line} pathname=result->name:string"
+		perf probe $verbose "vfs_getname=getname_flags:${line} pathname=filename:string"
 	fi
 }
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh
  2017-12-12 16:22 ` [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh Michael Petlan
@ 2017-12-12 17:11   ` Arnaldo Carvalho de Melo
  2017-12-13 14:23     ` Michael Petlan
  0 siblings, 1 reply; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-12-12 17:11 UTC (permalink / raw)
  To: Michael Petlan; +Cc: linux-perf-users, acme

Em Tue, Dec 12, 2017 at 11:22:32AM -0500, Michael Petlan escreveu:
> Having 'filename' variable there seems to be more stable, since
> 'result->name' has recently changed to 'result->uptr'.

Here it fails:

[root@jouet perf]# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
  probe:vfs_getname    (on getname_flags:72 with pathname=filename:string)

You can now use it in all perf tools, such as:

	perf record -e probe:vfs_getname -aR sleep 1

[root@jouet perf]# perf trace -e open,openat touch /tmp/temporary_file.zbMD1
     0.042 ( 0.017 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
     0.096 ( 0.018 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
     0.679 ( 0.040 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
     0.817 ( 0.252 ms): touch/7761 open(filename: , flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 3
[root@jouet perf]#

And result->name is still there:

[root@jouet perf]# pahole -C filename ../build/v4.15.0-rc2+/fs/namei.o
struct filename {
	const char  *              name;                 /*     0     8 */
	const char  *              uptr;                 /*     8     8 */
	struct audit_names *       aname;                /*    16     8 */
	int                        refcnt;               /*    24     4 */
	const char const           iname;                /*    28     0 */

	/* size: 32, cachelines: 1, members: 5 */
	/* padding: 4 */
	/* last cacheline: 32 bytes */
};
[root@jouet perf]#

At getname_flags:72 result->name has it as expected, at least up to
v4.15.0-rc2+, where are you experiencing problems?

- Arnaldo
 
> Signed-off-by: Michael Petlan <mpetlan@redhat.com>
> ---
>  tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> index 30a950c..3759582 100644
> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> @@ -13,7 +13,7 @@ add_probe_vfs_getname() {
>  	local verbose=$1
>  	if [ $had_vfs_getname -eq 1 ] ; then
>  		line=$(perf probe -L getname_flags 2>&1 | egrep 'result.*=.*filename;' | sed -r 's/[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*/\1/')
> -		perf probe $verbose "vfs_getname=getname_flags:${line} pathname=result->name:string"
> +		perf probe $verbose "vfs_getname=getname_flags:${line} pathname=filename:string"
>  	fi
>  }
>  
> -- 
> 1.8.3.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh
  2017-12-12 17:11   ` Arnaldo Carvalho de Melo
@ 2017-12-13 14:23     ` Michael Petlan
  2017-12-13 14:58       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Petlan @ 2017-12-13 14:23 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-perf-users, acme

On Tue, 12 Dec 2017, Arnaldo Carvalho de Melo wrote:
> Em Tue, Dec 12, 2017 at 11:22:32AM -0500, Michael Petlan escreveu:
> > Having 'filename' variable there seems to be more stable, since
> > 'result->name' has recently changed to 'result->uptr'.
> 
> Here it fails:
> 
> [root@jouet perf]# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
> Added new event:
>   probe:vfs_getname    (on getname_flags:72 with pathname=filename:string)
> 
> You can now use it in all perf tools, such as:
> 
> 	perf record -e probe:vfs_getname -aR sleep 1
> 
> [root@jouet perf]# perf trace -e open,openat touch /tmp/temporary_file.zbMD1
>      0.042 ( 0.017 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
>      0.096 ( 0.018 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
>      0.679 ( 0.040 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
>      0.817 ( 0.252 ms): touch/7761 open(filename: , flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 3
> [root@jouet perf]#
> 
> And result->name is still there:
> 
> [root@jouet perf]# pahole -C filename ../build/v4.15.0-rc2+/fs/namei.o
> struct filename {
> 	const char  *              name;                 /*     0     8 */
> 	const char  *              uptr;                 /*     8     8 */
> 	struct audit_names *       aname;                /*    16     8 */
> 	int                        refcnt;               /*    24     4 */
> 	const char const           iname;                /*    28     0 */
> 
> 	/* size: 32, cachelines: 1, members: 5 */
> 	/* padding: 4 */
> 	/* last cacheline: 32 bytes */
> };
> [root@jouet perf]#
> 
> At getname_flags:72 result->name has it as expected, at least up to
> v4.15.0-rc2+, where are you experiencing problems?

[root@muflon-1 ~]# uname -r 
4.15.0-rc1

[root@muflon-1 ~]# perf -v
perf version 4.15.rc1.g4fbd8d

[root@muflon-1 ~]# perf probe 'vfs_getname=getname_flags:72 pathname=result->name:string'
Failed to find 'result' in this function.
  Error: Failed to add events.

[root@muflon-1 ~]# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
Added new event:
  probe:vfs_getname    (on getname_flags:72 with pathname=filename:string)

You can now use it in all perf tools, such as:

	perf record -e probe:vfs_getname -aR sleep 1

[root@muflon-1 ~]# perf trace -e open,openat touch /tmp/temporary_file.zbMD1
     0.024 ( 0.013 ms): touch/31276 open(filename: /etc/ld.so.cache, flags: CLOEXEC                       ) = 3
     0.052 ( 0.014 ms): touch/31276 open(filename: /lib64/libc.so.6, flags: CLOEXEC                       ) = 3
     0.281 ( 0.019 ms): touch/31276 open(filename: /usr/lib/locale/locale-archive, flags: CLOEXEC         ) = 3
     0.344 ( 0.016 ms): touch/31276 open(filename: /tmp/temporary_file.zbMD1, flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 3

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh
  2017-12-13 14:23     ` Michael Petlan
@ 2017-12-13 14:58       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-12-13 14:58 UTC (permalink / raw)
  To: Michael Petlan; +Cc: linux-perf-users, acme

Em Wed, Dec 13, 2017 at 03:23:39PM +0100, Michael Petlan escreveu:
> On Tue, 12 Dec 2017, Arnaldo Carvalho de Melo wrote:
> > Em Tue, Dec 12, 2017 at 11:22:32AM -0500, Michael Petlan escreveu:
> > > Having 'filename' variable there seems to be more stable, since
> > > 'result->name' has recently changed to 'result->uptr'.

> > Here it fails:

> > [root@jouet perf]# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
> > Added new event:
> >   probe:vfs_getname    (on getname_flags:72 with pathname=filename:string)

> > You can now use it in all perf tools, such as:

> > 	perf record -e probe:vfs_getname -aR sleep 1
> > 
> > [root@jouet perf]# perf trace -e open,openat touch /tmp/temporary_file.zbMD1
> >      0.042 ( 0.017 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
> >      0.096 ( 0.018 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
> >      0.679 ( 0.040 ms): touch/7761 open(filename: , flags: CLOEXEC                                       ) = 3
> >      0.817 ( 0.252 ms): touch/7761 open(filename: , flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 3
> > [root@jouet perf]#

> > And result->name is still there:

> > [root@jouet perf]# pahole -C filename ../build/v4.15.0-rc2+/fs/namei.o
> > struct filename {
> > 	const char  *              name;                 /*     0     8 */
> > 	const char  *              uptr;                 /*     8     8 */
> > 	struct audit_names *       aname;                /*    16     8 */
> > 	int                        refcnt;               /*    24     4 */
> > 	const char const           iname;                /*    28     0 */
> > 
> > 	/* size: 32, cachelines: 1, members: 5 */
> > 	/* padding: 4 */
> > 	/* last cacheline: 32 bytes */
> > };
> > [root@jouet perf]#
> > 
> > At getname_flags:72 result->name has it as expected, at least up to
> > v4.15.0-rc2+, where are you experiencing problems?
> 
> [root@muflon-1 ~]# uname -r 
> 4.15.0-rc1
> 
> [root@muflon-1 ~]# perf -v
> perf version 4.15.rc1.g4fbd8d
> 
> [root@muflon-1 ~]# perf probe 'vfs_getname=getname_flags:72 pathname=result->name:string'
> Failed to find 'result' in this function.
>   Error: Failed to add events.

Ok, so we need to dig further, as, on a f26 x86_64 system updated yesterday to 4.15-rc3 I get:

[root@jouet ~]# perf probe 'vfs_getname=getname_flags:72 pathname=result->name:string'
Added new event:
  probe:vfs_getname    (on getname_flags:72 with pathname=result->name:string)

You can now use it in all perf tools, such as:

	perf record -e probe:vfs_getname -aR sleep 1

[root@jouet ~]# uname -a
Linux jouet 4.15.0-rc3+ #3 SMP Wed Dec 13 10:14:18 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@jouet ~]# 
[root@jouet ~]# perf trace -e open,probe:vfs_getname/max-stack=3/
     0.000 ( 0.036 ms): lighttpd/9653 open(filename: /proc/loadavg, mode: ISGID|IXOTH                       ) ...
     0.036 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/proc/loadavg")
                                       getname_flags ([kernel.kallsyms])
                                       do_sys_open ([kernel.kallsyms])
                                       do_syscall_64 ([kernel.kallsyms])
     0.000 ( 0.104 ms): lighttpd/9653  ... [continued]: open()) = 8
    22.681 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/etc/localtime")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])
                                       vfs_statx ([kernel.kallsyms])
   850.746 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/var/cache/app-info/yaml")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])
                                       sys_inotify_add_watch ([kernel.kallsyms])
   850.781 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/var/lib/app-info/xmls")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])
                                       sys_inotify_add_watch ([kernel.kallsyms])
   850.799 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/var/lib/app-info/yaml")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])
                                       sys_inotify_add_watch ([kernel.kallsyms])
   850.813 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/usr/share/app-info/yaml")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])
                                       sys_inotify_add_watch ([kernel.kallsyms])
   850.832 (         ): probe:vfs_getname:(ffffffff8227c9f3) pathname="/usr/local/share/app-info/xmls")
                                       getname_flags ([kernel.kallsyms])
                                       user_path_at_empty ([kernel.kallsyms])

What system is this? Distro, release, gcc, etc?

- ARnaldo
 
> [root@muflon-1 ~]# perf probe 'vfs_getname=getname_flags:72 pathname=filename:string'
> Added new event:
>   probe:vfs_getname    (on getname_flags:72 with pathname=filename:string)
> 
> You can now use it in all perf tools, such as:
> 
> 	perf record -e probe:vfs_getname -aR sleep 1
> 
> [root@muflon-1 ~]# perf trace -e open,openat touch /tmp/temporary_file.zbMD1
>      0.024 ( 0.013 ms): touch/31276 open(filename: /etc/ld.so.cache, flags: CLOEXEC                       ) = 3
>      0.052 ( 0.014 ms): touch/31276 open(filename: /lib64/libc.so.6, flags: CLOEXEC                       ) = 3
>      0.281 ( 0.019 ms): touch/31276 open(filename: /usr/lib/locale/locale-archive, flags: CLOEXEC         ) = 3
>      0.344 ( 0.016 ms): touch/31276 open(filename: /tmp/temporary_file.zbMD1, flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 3

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-12-13 14:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <b6d31ae26f8615d6bd020f4392980950d4c70c96.1513095505.git.mpetlan@redhat.com>
2017-12-12 16:22 ` [PATCH 2/2] perf test shell: Fix pathname arg in probe_vfs_getname.sh Michael Petlan
2017-12-12 17:11   ` Arnaldo Carvalho de Melo
2017-12-13 14:23     ` Michael Petlan
2017-12-13 14:58       ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.