linux-omap4-3.1.0: Add sched_process_exec tracing
PATCH 1/1 linux-omap4-3.1.0: Add sched_process_exec tracing
Hi,
the attached patch enables tracing of sched_process_exec events by adding upstream kernel commit:
https://github.com/torvalds/linux/commit/4ff16c25e2cc48cbe6956e356c38a25ac063a64d
to the linux-omap4-3.1.0 kernel recipe (tested with pandaboard).
We added this to our meta-ti mirror. It would be great if this could also be upstream.
Thanks,
Paul
Signature · 8 lines
Paul Woegerer | SW Development Engineer http://go.mentor.com/sourceryanalyzer Mentor Embedded(tm) | Prinz Eugen Straße 72/2/4, Vienna, 1040 Austria Nucleus® | Linux® | Android(tm) | Services | UI | Multi-OS Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.
From f1ae5aa3b3029073d20e542a45f8f6b25a4aab12 Mon Sep 17 00:00:00 2001
From: Paul Woegerer <[email protected]>
Date: Fri, 12 Oct 2012 00:40:24 -0700
Subject: [PATCH] linux-omap4-3.1.0: Add sched_process_exec tracing
--- .../linux-omap4-3.1.0/add_exec_tracepoint.patch | 109 ++++++++++++++++++++ recipes-kernel/linux/linux-omap4_3.1.0.bb | 3 +- 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 recipes-kernel/linux/linux-omap4-3.1.0/add_exec_tracepoint.patch
recipes-kernel/linux/linux-omap4-3.1.0/add_exec_tracepoint.patch new file +109 -0
@@ -0,0 +1,109 @@ +From 4ff16c25e2cc48cbe6956e356c38a25ac063a64d Mon Sep 17 00:00:00 2001 +From: David Smith <[email protected]> +Date: Tue, 7 Feb 2012 10:11:05 -0600 +Subject: [PATCH] tracepoint, vfs, sched: Add exec() tracepoint + +Added a minimal exec tracepoint. Exec is an important major event +in the life of a task, like fork(), clone() or exit(), all of +which we already trace. + +[ We also do scheduling re-balancing during exec() - so it's useful + from a scheduler instrumentation POV as well. ] + +If you want to watch a task start up, when it gets exec'ed is a good place +to start. With the addition of this tracepoint, exec's can be monitored +and better picture of general system activity can be obtained. This +tracepoint will also enable better process life tracking, allowing you to +answer questions like "what process keeps starting up binary X?". + +This tracepoint can also be useful in ftrace filtering and trigger +conditions: i.e. starting or stopping filtering when exec is called. + +Signed-off-by: David Smith <[email protected]> +Signed-off-by: Peter Zijlstra <[email protected]> +Cc: Steven Rostedt <[email protected]> +Cc: Christoph Hellwig <[email protected]> +Cc: Al Viro <[email protected]> +Cc: Andrew Morton <[email protected]> +Cc: Linus Torvalds <[email protected]> +Link: http://lkml.kernel.org/r/[email protected] +Signed-off-by: Ingo Molnar <[email protected]> +--- + fs/exec.c | 9 ++++++--- + include/trace/events/sched.h | 27 +++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+), 3 deletions(-) + +diff --git a/fs/exec.c b/fs/exec.c +index aeb135c..d0d2080 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -63,6 +63,8 @@ + #include <trace/events/task.h> + #include "internal.h" + ++#include <trace/events/sched.h> ++ + int core_uses_pid; + char core_pattern[CORENAME_MAX_SIZE] = "core"; + unsigned int core_pipe_limit; +@@ -1401,9 +1403,10 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) + */ + bprm->recursion_depth = depth; + if (retval >= 0) { +- if (depth == 0) +- ptrace_event(PTRACE_EVENT_EXEC, +- old_pid); ++ if (depth == 0) { ++ trace_sched_process_exec(current, old_pid, bprm); ++ ptrace_event(PTRACE_EVENT_EXEC, old_pid); ++ } + put_binfmt(fmt); + allow_write_access(bprm->file); + if (bprm->file) +diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h +index 6ba596b..e61ddfe 100644 +--- a/include/trace/events/sched.h ++++ b/include/trace/events/sched.h +@@ -6,6 +6,7 @@ + + #include <linux/sched.h> + #include <linux/tracepoint.h> ++#include <linux/binfmts.h> + + /* + * Tracepoint for calling kthread_stop, performed to end a kthread: +@@ -276,6 +277,32 @@ TRACE_EVENT(sched_process_fork, + ); + + /* ++ * Tracepoint for exec: ++ */ ++TRACE_EVENT(sched_process_exec, ++ ++ TP_PROTO(struct task_struct *p, pid_t old_pid, ++ struct linux_binprm *bprm), ++ ++ TP_ARGS(p, old_pid, bprm), ++ ++ TP_STRUCT__entry( ++ __string( filename, bprm->filename ) ++ __field( pid_t, pid ) ++ __field( pid_t, old_pid ) ++ ), ++ ++ TP_fast_assign( ++ __assign_str(filename, bprm->filename); ++ __entry->pid = p->pid; ++ __entry->old_pid = p->pid; ++ ), ++ ++ TP_printk("filename=%s pid=%d old_pid=%d", __get_str(filename), ++ __entry->pid, __entry->old_pid) ++); ++ ++/* + * XXX the below sched_stat tracepoints only apply to SCHED_OTHER/BATCH/IDLE + * adding sched_stat support to SCHED_FIFO/RR would be welcome. + */ +-- +1.7.6.5
recipes-kernel/linux/linux-omap4_3.1.0.bb +2 -1
@@ -3,7 +3,7 @@ COMPATIBLE_MACHINE = "pandaboard" require linux.inc # The main PR is now using MACHINE_KERNEL_PR, for omap4 see conf/machine/include/omap4.inc -MACHINE_KERNEL_PR_append = "a" +MACHINE_KERNEL_PR_append = "b" CORTEXA8FIXUP = "no"
@@ -12,6 +12,7 @@ SRCREV = "a5c60c099296fcfc0c8fa8085c40883971486512" SRC_URI = "git://dev.omapzoom.org/pub/scm/integration/kernel-ubuntu.git;protocol=git;branch=ti-ubuntu-3.1-1282 \ file://0001-Makefile.fwinst-fix-install-breakage-for-FW-images-r.patch \ + file://add_exec_tracepoint.patch \ file://defconfig \ "
Signature · 1 line
1.7.9.5
Quoted 9 lines · Paul
Hi,
the attached patch enables tracing of
sched_process_execevents by adding upstream kernel commit:
https://github.com/torvalds/linux/commit/4ff16c25e2cc48cbe6956e356c38a25ac063a64d
to the linux-omap4-3.1.0 kernel recipe (tested with pandaboard).We added this to our meta-ti mirror. It would be great if this could also be upstream.
Paul,
Care to port it to the 3.4 version we now have for OMAP4?
Signature · 1 line
Denys
Quoted 166 lines
Signature · 20 lines
Paul Woegerer | SW Development Engineer http://go.mentor.com/sourceryanalyzer Mentor Embedded(tm) | Prinz Eugen Straße 72/2/4, Vienna, 1040 Austria Nucleus® | Linux® | Android(tm) | Services | UI | Multi-OS Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries. From f1ae5aa3b3029073d20e542a45f8f6b25a4aab12 Mon Sep 17 00:00:00 2001 From: Paul Woegerer <[email protected]> Date: Fri, 12 Oct 2012 00:40:24 -0700 Subject: [PATCH] linux-omap4-3.1.0: Add sched_process_exec tracing --- .../linux-omap4-3.1.0/add_exec_tracepoint.patch | 109 ++++++++++++++++++++ recipes-kernel/linux/linux-omap4_3.1.0.bb | 3 +- 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 recipes-kernel/linux/linux-omap4-3.1.0/add_exec_tracepoint.patchrecipes-kernel/linux/linux-omap4-3.1.0/add_exec_tracepoint.patch new file +109
-0@@ -0,0 +1,109 @@ +From 4ff16c25e2cc48cbe6956e356c38a25ac063a64d Mon Sep 17 00:00:00 2001 +From: David Smith <[email protected]> +Date: Tue, 7 Feb 2012 10:11:05 -0600 +Subject: [PATCH] tracepoint, vfs, sched: Add exec() tracepoint + +Added a minimal exec tracepoint. Exec is an important major event +in the life of a task, like fork(), clone() or exit(), all of +which we already trace. + +[ We also do scheduling re-balancing during exec() - so it's useful + from a scheduler instrumentation POV as well. ] + +If you want to watch a task start up, when it gets exec'ed is a good place +to start. With the addition of this tracepoint, exec's can be monitored +and better picture of general system activity can be obtained. This +tracepoint will also enable better process life tracking, allowing you to +answer questions like "what process keeps starting up binary X?". + +This tracepoint can also be useful in ftrace filtering and trigger +conditions: i.e. starting or stopping filtering when exec is called. + +Signed-off-by: David Smith <[email protected]> +Signed-off-by: Peter Zijlstra <[email protected]> +Cc: Steven Rostedt <[email protected]> +Cc: Christoph Hellwig <[email protected]> +Cc: Al Viro <[email protected]> +Cc: Andrew Morton <[email protected]> +Cc: Linus Torvalds <[email protected]> +Link: http://lkml.kernel.org/r/[email protected] +Signed-off-by: Ingo Molnar <[email protected]> +--- + fs/exec.c | 9 ++++++--- + include/trace/events/sched.h | 27 +++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+), 3 deletions(-) + +diff --git a/fs/exec.c b/fs/exec.c +index aeb135c..d0d2080 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -63,6 +63,8 @@ + #include <trace/events/task.h> + #include "internal.h" + ++#include <trace/events/sched.h> ++ + int core_uses_pid; + char core_pattern[CORENAME_MAX_SIZE] = "core"; + unsigned int core_pipe_limit; +@@ -1401,9 +1403,10 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) + */ + bprm->recursion_depth = depth; + if (retval >= 0) { +- if (depth == 0) +- ptrace_event(PTRACE_EVENT_EXEC, +- old_pid); ++ if (depth == 0) { ++ trace_sched_process_exec(current, old_pid, bprm); ++ ptrace_event(PTRACE_EVENT_EXEC, old_pid); ++ } + put_binfmt(fmt); + allow_write_access(bprm->file); + if (bprm->file) +diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h +index 6ba596b..e61ddfe 100644 +--- a/include/trace/events/sched.h ++++ b/include/trace/events/sched.h +@@ -6,6 +6,7 @@ + + #include <linux/sched.h> + #include <linux/tracepoint.h> ++#include <linux/binfmts.h> + + /* + * Tracepoint for calling kthread_stop, performed to end a kthread: +@@ -276,6 +277,32 @@ TRACE_EVENT(sched_process_fork, + ); + + /* ++ * Tracepoint for exec: ++ */ ++TRACE_EVENT(sched_process_exec, ++ ++ TP_PROTO(struct task_struct *p, pid_t old_pid, ++ struct linux_binprm *bprm), ++ ++ TP_ARGS(p, old_pid, bprm), ++ ++ TP_STRUCT__entry( ++ __string( filename, bprm->filename ) ++ __field( pid_t, pid ) ++ __field( pid_t, old_pid ) ++ ), ++ ++ TP_fast_assign( ++ __assign_str(filename, bprm->filename); ++ __entry->pid = p->pid; ++ __entry->old_pid = p->pid; ++ ), ++ ++ TP_printk("filename=%s pid=%d old_pid=%d", __get_str(filename), ++ __entry->pid, __entry->old_pid) ++); ++ ++/* + * XXX the below sched_stat tracepoints only apply to SCHED_OTHER/BATCH/IDLE + * adding sched_stat support to SCHED_FIFO/RR would be welcome. + */ +-- +1.7.6.5recipes-kernel/linux/linux-omap4_3.1.0.bb +2
-1@@ -3,7 +3,7 @@ COMPATIBLE_MACHINE = "pandaboard" require linux.inc # The main PR is now using MACHINE_KERNEL_PR, for omap4 see conf/machine/include/omap4.inc -MACHINE_KERNEL_PR_append = "a" +MACHINE_KERNEL_PR_append = "b" CORTEXA8FIXUP = "no"@@ -12,6 +12,7 @@ SRCREV = "a5c60c099296fcfc0c8fa8085c40883971486512" SRC_URI = "git://dev.omapzoom.org/pub/scm/integration/kernel-ubuntu.git;protocol=git;branch=ti-ubuntu-3.1-1282 \ file://0001-Makefile.fwinst-fix-install-breakage-for-FW-images-r.patch \ + file://add_exec_tracepoint.patch \ file://defconfig \ "Signature · 7 lines
1.7.9.5 _______________________________________________ meta-ti mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-ti
Quoted 8 lines · Denys Dmytriyenko
Quoted 7 lines · Paul
Hi,
the attached patch enables tracing of
sched_process_execevents by adding upstream kernel commit:
https://github.com/torvalds/linux/commit/4ff16c25e2cc48cbe6956e356c38a25ac063a64d
to the linux-omap4-3.1.0 kernel recipe (tested with pandaboard).
Quoted 7 lines
Quoted 2 lines
We added this to our meta-ti mirror. It would be great if this could also be upstream.
Paul,
Care to port it to the 3.4 version we now have for OMAP4?
Hi Denys,
thanks for getting back to me. This patch is obsolete since 3.4 already has sched_process_exec anyway.
Thanks again,
Paul
Signature · 10 lines
Paul Woegerer | SW Development Engineer http://go.mentor.com/sourceryanalyzer Mentor Embedded(tm) | Prinz Eugen Straße 72/2/4, Vienna, 1040 Austria Nucleus® | Linux® | Android(tm) | Services | UI | Multi-OS Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.