mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
tracepoint: add tracepoints for debugging oom_score_adj
oom_score_adj is used for guarding processes from OOM-Killer. One of problem is that it's inherited at fork(). When a daemon set oom_score_adj and make children, it's hard to know where the value is set. This patch adds some tracepoints useful for debugging. This patch adds 3 trace points. - creating new task - renaming a task (exec) - set oom_score_adj To debug, users need to enable some trace pointer. Maybe filtering is useful as # EVENT=/sys/kernel/debug/tracing/events/task/ # echo "oom_score_adj != 0" > $EVENT/task_newtask/filter # echo "oom_score_adj != 0" > $EVENT/task_rename/filter # echo 1 > $EVENT/enable # EVENT=/sys/kernel/debug/tracing/events/oom/ # echo 1 > $EVENT/enable output will be like this. # grep oom /sys/kernel/debug/tracing/trace bash-7699 [007] d..3 5140.744510: oom_score_adj_update: pid=7699 comm=bash oom_score_adj=-1000 bash-7699 [007] ...1 5151.818022: task_newtask: pid=7729 comm=bash clone_flags=1200011 oom_score_adj=-1000 ls-7729 [003] ...2 5151.818504: task_rename: pid=7729 oldcomm=bash newcomm=ls oom_score_adj=-1000 bash-7699 [002] ...1 5175.701468: task_newtask: pid=7730 comm=bash clone_flags=1200011 oom_score_adj=-1000 grep-7730 [007] ...2 5175.701993: task_rename: pid=7730 oldcomm=bash newcomm=grep oom_score_adj=-1000 Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Cc: KOSAKI Motohiro <[email protected]> Acked-by: David Rientjes <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
6bd4837de9
commit
43d2b11324
6 changed files with 113 additions and 0 deletions
|
|
@ -33,6 +33,10 @@
|
|||
#include <linux/security.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/freezer.h>
|
||||
#include <linux/ftrace.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/oom.h>
|
||||
|
||||
int sysctl_panic_on_oom;
|
||||
int sysctl_oom_kill_allocating_task;
|
||||
|
|
@ -55,6 +59,7 @@ void compare_swap_oom_score_adj(int old_val, int new_val)
|
|||
spin_lock_irq(&sighand->siglock);
|
||||
if (current->signal->oom_score_adj == old_val)
|
||||
current->signal->oom_score_adj = new_val;
|
||||
trace_oom_score_adj_update(current);
|
||||
spin_unlock_irq(&sighand->siglock);
|
||||
}
|
||||
|
||||
|
|
@ -74,6 +79,7 @@ int test_set_oom_score_adj(int new_val)
|
|||
spin_lock_irq(&sighand->siglock);
|
||||
old_val = current->signal->oom_score_adj;
|
||||
current->signal->oom_score_adj = new_val;
|
||||
trace_oom_score_adj_update(current);
|
||||
spin_unlock_irq(&sighand->siglock);
|
||||
|
||||
return old_val;
|
||||
|
|
|
|||
Loading…
Reference in a new issue