Re: [PATCH v3] exit: move trace_sched_process_exit earlier in do_exit()

From: Steven Rostedt
Date: Tue Mar 12 2024 - 11:16:28 EST


On Sun, 10 Mar 2024 13:25:29 +0800
wenyang.linux@xxxxxxxxxxx wrote:

> From: Wen Yang <wenyang.linux@xxxxxxxxxxx>
>
> Currently coredump_task_exit() takes some time to wait for the generation
> of the dump file. But if the user-space wants to receive a notification
> as soon as possible it maybe inconvenient.
>
> Move trace_sched_process_exit() earlier in do_exit().
> This way a user-space monitor could detect the exits and
> potentially make some preparations in advance.
>
> Oleg initially proposed this suggestion, and Steven further provided some
> detailed suggestions, and Mathieu carefully checked the historical code
> and said:
> : I've checked with Matthew Khouzam (maintainer of Trace Compass)
> : which care about this tracepoint, and we have not identified any
> : significant impact of moving it on its model of the scheduler, other
> : than slightly changing its timing.
> : I've also checked quickly in lttng-analyses and have not found
> : any code that care about its specific placement.
> : So I would say go ahead and move it earlier in do_exit(), it's
> : fine by me.
>

I'm putting together last minute minor patches for this merge window. I can
take this if nobody has any objections.

-- Steve


> Suggested-by: Oleg Nesterov <oleg@xxxxxxxxxx>
> Suggested-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
> Suggested-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
> Signed-off-by: Wen Yang <wenyang.linux@xxxxxxxxxxx>
> Cc: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> Cc: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Christian Brauner <brauner@xxxxxxxxxx>
> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> ---
> kernel/exit.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/exit.c b/kernel/exit.c
> index 493647fd7c07..2cff6533cb39 100644
> --- a/kernel/exit.c
> +++ b/kernel/exit.c
> @@ -826,6 +826,7 @@ void __noreturn do_exit(long code)
>
> WARN_ON(tsk->plug);
>
> + trace_sched_process_exit(tsk);
> kcov_task_exit(tsk);
> kmsan_task_exit(tsk);
>
> @@ -866,7 +867,6 @@ void __noreturn do_exit(long code)
>
> if (group_dead)
> acct_process();
> - trace_sched_process_exit(tsk);
>
> exit_sem(tsk);
> exit_shm(tsk);