Re: [PATCH] mm/oom: Add killed process selection information

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed 14-08-19 23:06:04, Edward Chron wrote:
> For an OOM event: print oom_score_adj value for the OOM Killed process
> to document what the oom score adjust value was at the time the process
> at the time of the OOM event. The value can be set by the user and it
> effects the resulting oom_score so useful to document this value.

This value is interesting especially for setups which do not print
eligible tasks (sysctl oom_dump_tasks = 0) and helps to notice a
misconfiguration <YOUR UDEV EXAMPLE GOES HERE> or to confirm that
oom_score_adj configuration applies as expected.
 
> Sample message output:
> Aug 14 23:00:02 testserver kernel: Out of memory: Killed process 2692
>  (oomprocs) total-vm:1056800kB, anon-rss:1052760kB, file-rss:4kB,i
>  shmem-rss:0kB oom_score_adj:1000
> 
> Signed-off-by: Edward Chron <echron@xxxxxxxxxx>

With that feel free to add
Acked-by: Michal Hocko <mhocko@xxxxxxxx>

and post as a stand alone patch. Btw. the patch could be simplified by
not using a helper variable and using victim->signal->oom_score_adj
right in the pr_err.

Thanks!

> ---
>  mm/oom_kill.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> index eda2e2a0bdc6..6b1674cac377 100644
> --- a/mm/oom_kill.c
> +++ b/mm/oom_kill.c
> @@ -858,6 +858,7 @@ static void __oom_kill_process(struct task_struct *victim, const char *message)
>  	struct task_struct *p;
>  	struct mm_struct *mm;
>  	bool can_oom_reap = true;
> +	long adj;
>  
>  	p = find_lock_task_mm(victim);
>  	if (!p) {
> @@ -877,6 +878,8 @@ static void __oom_kill_process(struct task_struct *victim, const char *message)
>  	count_vm_event(OOM_KILL);
>  	memcg_memory_event_mm(mm, MEMCG_OOM_KILL);
>  
> +	adj = (long)victim->signal->oom_score_adj;
> +
>  	/*
>  	 * We should send SIGKILL before granting access to memory reserves
>  	 * in order to prevent the OOM victim from depleting the memory
> @@ -884,12 +887,12 @@ static void __oom_kill_process(struct task_struct *victim, const char *message)
>  	 */
>  	do_send_sig_info(SIGKILL, SEND_SIG_PRIV, victim, PIDTYPE_TGID);
>  	mark_oom_victim(victim);
> -	pr_err("%s: Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB, shmem-rss:%lukB\n",
> +	pr_err("%s: Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB, shmem-rss:%lukB oom_score_adj:%ld\n",
>  		message, task_pid_nr(victim), victim->comm,
>  		K(victim->mm->total_vm),
>  		K(get_mm_counter(victim->mm, MM_ANONPAGES)),
>  		K(get_mm_counter(victim->mm, MM_FILEPAGES)),
> -		K(get_mm_counter(victim->mm, MM_SHMEMPAGES)));
> +		K(get_mm_counter(victim->mm, MM_SHMEMPAGES)), adj);
>  	task_unlock(victim);
>  
>  	/*
> -- 
> 2.20.1

-- 
Michal Hocko
SUSE Labs




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux