Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp173344ybl; Wed, 21 Aug 2019 17:03:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqwqW+ccNdedXOcmpbLw7Ade9HtYnrULhjQsQySydV82RX5R1brUVthEp0HrD3rcVq6FYj0W X-Received: by 2002:a17:902:33a5:: with SMTP id b34mr4080526plc.286.1566432187076; Wed, 21 Aug 2019 17:03:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566432187; cv=none; d=google.com; s=arc-20160816; b=fjo20SbVTCUlbiZC3d1z4mMPR7QEGeBvOJ5hpDEt0aU5qWmc3H4610daR9vdXm0Wnf m16VbEWQghLGyyhjxcplKWFkkPG0+xvLe+kkB5ONjH8E5ix27SueN5UTV6xFfwXJCo5k 0PJKlf2HnxiNJfzFx7A4QT1Z3whDAuF4urY4BATYBgjwkPh+mYmcey98/w4jRDbjZDBP b/628gfQxa9GlLdgGog1Z44FYBqdL5pOR1gS8VIDtyhDWXGAGRagEbjpFDIA+kh7VBB/ V02WRghEEiL5WO1XAD9aiUE6+X+GkMLOeGIA0Xx/RJKRRC0yN/B3KviWh5WOyV2Ay5iW lWHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=0KVJzgs8EgORbeJXXQubNPgw1WiUGBr9OYGA7l6xlcE=; b=J32Jsgw01HzDWUyyLENPrsjWJGWLWH+o4uNZyZ8lGbn0EUwqBkLl0OeRzD7UD3RU5L qv3LUxJiN+6nonGOJksIL2JykOMOWLnpGQTQXflM09xoJf7s4Ywd6h8DAqc+i9akcqsQ XP1a9nWLUMIZTXKvf4kXOM/p7yb8Rg/0Hil099mhb7OnWL6ISa2EvyzVFjDuD7Jyl5jx BxT7urZaDWaur4weZAuu0cIZBsSLsoK6Lk5teUwB6R8CpKmrWekZNXTgBnLvF4GuAh4M DIqawVlAhVTw7sB/sdSxVQFaMgQRqr1pvesrVEyo1B1eGxZEbMty0E9Jw4FNWHh06vit y5BQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@arista.com header.s=googlenew header.b=eDrUlZ1s; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=REJECT dis=NONE) header.from=arista.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q10si17279667pfc.85.2019.08.21.17.02.51; Wed, 21 Aug 2019 17:03:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@arista.com header.s=googlenew header.b=eDrUlZ1s; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=REJECT dis=NONE) header.from=arista.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731330AbfHUXMW (ORCPT + 99 others); Wed, 21 Aug 2019 19:12:22 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:46977 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729763AbfHUXMV (ORCPT ); Wed, 21 Aug 2019 19:12:21 -0400 Received: by mail-io1-f66.google.com with SMTP id x4so7998640iog.13 for ; Wed, 21 Aug 2019 16:12:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=googlenew; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0KVJzgs8EgORbeJXXQubNPgw1WiUGBr9OYGA7l6xlcE=; b=eDrUlZ1sAmJkYbQSimlYWKmC1dUR+CGjg15fVmd1/JPfkySdGgd52llMp900L9A9hQ xYCXspJbD486cUNWl0/vHQefQh4ROBps1vwmCGTQrj0xn4lK2BmEmSjR4zqihmxL0Vmv v7SpuHz+28jBLO5xIB1jvjKV/0SjBjvjJG+fvcoP8THQk3rqzGv9l3FAHn1QHRoXwLPI hJK4Zj3oUmIFYSV9I78tLqwFRk0/xZpZj76fvCFuDkXwwgXho67oM3Ir9m0oawERpcIJ tjAwoiHFgGoi+9brArrSyzUTwbjpy9F5g9otqjnxC5V64fO44nqxNWscO/6okRf9PX0K eq7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0KVJzgs8EgORbeJXXQubNPgw1WiUGBr9OYGA7l6xlcE=; b=LrQopEKtsef6g4BfQAR55mtaySpuSVcOjtCEFQYjCu032lzlNuK2l2kppo0//Y2NL4 pm6mQWe11SkJVfO8iD7hZbGuOrwGn+mxOxNt6S40jxlbYOjuoMVdpuYyF8Oml9H1Yw1D L5A+cnp6qLjZmGgKWXINC2qOzkkB77rn7emTlPHZj4ynY3wM9/mMCpwPD42JRPy5+qTj abYKoRmLK6jp5F7EOL6dqrv6pNARhTKNiSmPZrHWBbv+rLTVkKZxowQRSjDlFityKW8J uFfSK3cGn6+FZuXRm60GXvzKqwOXptoaFaLLWnx2Yc8hFYcfT8lHECZm+PZ1jIJSOJnB LEgw== X-Gm-Message-State: APjAAAXgqun/avMgrHR7bQI8vsIKUDaKP8GtycmtfRIsOGsJ5r+A5D14 xRtiQSjLfc+ubmkG2d1CcfKz5Hy/Usr13iQ+xZikmQ== X-Received: by 2002:a02:390c:: with SMTP id l12mr4178791jaa.76.1566429140549; Wed, 21 Aug 2019 16:12:20 -0700 (PDT) MIME-Version: 1.0 References: <20190821001445.32114-1-echron@arista.com> <20190821064732.GW3111@dhcp22.suse.cz> <20190821074721.GY3111@dhcp22.suse.cz> In-Reply-To: <20190821074721.GY3111@dhcp22.suse.cz> From: Edward Chron Date: Wed, 21 Aug 2019 16:12:08 -0700 Message-ID: Subject: Re: [PATCH] mm/oom: Add oom_score_adj value to oom Killed process message To: Michal Hocko Cc: David Rientjes , Andrew Morton , Roman Gushchin , Johannes Weiner , Tetsuo Handa , Shakeel Butt , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ivan Delalande Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 21, 2019 at 12:47 AM Michal Hocko wrote: > > On Wed 21-08-19 00:19:37, David Rientjes wrote: > > On Wed, 21 Aug 2019, Michal Hocko wrote: > > > > > > vm.oom_dump_tasks is pretty useful, however, so it's curious why you > > > > haven't left it enabled :/ > > > > > > Because it generates a lot of output potentially. Think of a workload > > > with too many tasks which is not uncommon. > > > > Probably better to always print all the info for the victim so we don't > > need to duplicate everything between dump_tasks() and dump_oom_summary(). > > I believe that the motivation was to have a one line summary that is already > parsed by log consumers. And that is in __oom_kill_process one. > Yes the motivation was one line summary that the OOM Killed Process message supplies along with the fact it is error priority as I mentioned. It is a very desirable place to put summarized information. > Also I do not think this patch improves things much for two reasons > at leasts a) it doesn't really give you the whole list of killed tasks > (this might be the whole memcg) and b) we already do have most important > information in __oom_kill_process. If something is missing there I do > not see a strong reason we cannot add it there. Like in this case. > This is a good point. Additionally (which you know, but mentioning for reference) the OOM output used to look like this: Nov 14 15:23:48 oldserver kernel: [337631.991218] Out of memory: Kill process 19961 (python) score 17 or sacrifice child Nov 14 15:23:48 oldserver kernel: [337631.991237] Killed process 31357 (sh) total-vm:5400kB, anon-rss:252kB, file-rss:4kB, shmem-rss:0kB It now looks like this with 5.3.0-rc5 (minus the oom_score_adj): Jul 22 10:42:40 newserver kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-10383.slice/user@10383.service,task=oomprocs,pid=3035,uid=10383 Jul 22 10:42:40 newserver kernel: Out of memory: Killed process 3035 (oomprocs) total-vm:1056800kB, anon-rss:8kB, file-rss:4kB, shmem-rss:0kB Jul 22 10:42:40 newserver kernel: oom_reaper: reaped process 3035 (oomprocs), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB The old output did explain that a oom_score of 17 must have either tied for highest or was the highest. This did document why OOM selected the process it did, even if ends up killing the related sh process. With the newer format that added constraint message, it does provide uid which can be helpful and the oom_reaper showing that the memory was reclaimed is certainly reassuring. My understanding now is that printing the oom_score is discouraged. This seems unfortunate. The oom_score_adj can be adjusted appropriately if oom_score is known. So It would be useful to have both. But at least if oom_score_adj is printed you can confirm the value at the time of the OOM event. Thank-you, -Edward Chron Arista Networks > > Edward, how about this? > > > > diff --git a/mm/oom_kill.c b/mm/oom_kill.c > > --- a/mm/oom_kill.c > > +++ b/mm/oom_kill.c > > @@ -420,11 +420,17 @@ static int dump_task(struct task_struct *p, void *arg) > > * State information includes task's pid, uid, tgid, vm size, rss, > > * pgtables_bytes, swapents, oom_score_adj value, and name. > > */ > > -static void dump_tasks(struct oom_control *oc) > > +static void dump_tasks(struct oom_control *oc, struct task_struct *victim) > > { > > pr_info("Tasks state (memory values in pages):\n"); > > pr_info("[ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name\n"); > > > > + /* If vm.oom_dump_tasks is disabled, only show the victim */ > > + if (!sysctl_oom_dump_tasks) { > > + dump_task(victim, oc); > > + return; > > + } > > + > > if (is_memcg_oom(oc)) > > mem_cgroup_scan_tasks(oc->memcg, dump_task, oc); > > else { > > @@ -465,8 +471,8 @@ static void dump_header(struct oom_control *oc, struct task_struct *p) > > if (is_dump_unreclaim_slabs()) > > dump_unreclaimable_slab(); > > } > > - if (sysctl_oom_dump_tasks) > > - dump_tasks(oc); > > + if (p || sysctl_oom_dump_tasks) > > + dump_tasks(oc, p); > > if (p) > > dump_oom_summary(oc, p); > > } > > -- > Michal Hocko > SUSE Labs