]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - mm/oom_kill.c
mm, oom: reorganize the oom report in dump_header
[linux.git] / mm / oom_kill.c
index 6589f60d50186aca3812be1a9ae3d8ba7369b87b..d90253f1ff93c14a6349a21daf5759d78a664ad6 100644 (file)
@@ -245,11 +245,11 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg,
        return points > 0 ? points : 1;
 }
 
-enum oom_constraint {
-       CONSTRAINT_NONE,
-       CONSTRAINT_CPUSET,
-       CONSTRAINT_MEMORY_POLICY,
-       CONSTRAINT_MEMCG,
+static const char * const oom_constraint_text[] = {
+       [CONSTRAINT_NONE] = "CONSTRAINT_NONE",
+       [CONSTRAINT_CPUSET] = "CONSTRAINT_CPUSET",
+       [CONSTRAINT_MEMORY_POLICY] = "CONSTRAINT_MEMORY_POLICY",
+       [CONSTRAINT_MEMCG] = "CONSTRAINT_MEMCG",
 };
 
 /*
@@ -269,7 +269,7 @@ static enum oom_constraint constrained_alloc(struct oom_control *oc)
        }
 
        /* Default to all available memory */
-       oc->totalpages = totalram_pages + total_swap_pages;
+       oc->totalpages = totalram_pages() + total_swap_pages;
 
        if (!IS_ENABLED(CONFIG_NUMA))
                return CONSTRAINT_NONE;
@@ -428,16 +428,25 @@ static void dump_tasks(struct mem_cgroup *memcg, const nodemask_t *nodemask)
        rcu_read_unlock();
 }
 
+static void dump_oom_summary(struct oom_control *oc, struct task_struct *victim)
+{
+       /* one line summary of the oom killer context. */
+       pr_info("oom-kill:constraint=%s,nodemask=%*pbl",
+                       oom_constraint_text[oc->constraint],
+                       nodemask_pr_args(oc->nodemask));
+       cpuset_print_current_mems_allowed();
+       pr_cont(",task=%s,pid=%d,uid=%d\n", victim->comm, victim->pid,
+               from_kuid(&init_user_ns, task_uid(victim)));
+}
+
 static void dump_header(struct oom_control *oc, struct task_struct *p)
 {
-       pr_warn("%s invoked oom-killer: gfp_mask=%#x(%pGg), nodemask=%*pbl, order=%d, oom_score_adj=%hd\n",
-               current->comm, oc->gfp_mask, &oc->gfp_mask,
-               nodemask_pr_args(oc->nodemask), oc->order,
+       pr_warn("%s invoked oom-killer: gfp_mask=%#x(%pGg), order=%d, oom_score_adj=%hd\n",
+               current->comm, oc->gfp_mask, &oc->gfp_mask, oc->order,
                        current->signal->oom_score_adj);
        if (!IS_ENABLED(CONFIG_COMPACTION) && oc->order)
                pr_warn("COMPACTION is disabled!!!\n");
 
-       cpuset_print_current_mems_allowed();
        dump_stack();
        if (is_memcg_oom(oc))
                mem_cgroup_print_oom_info(oc->memcg, p);
@@ -448,6 +457,8 @@ static void dump_header(struct oom_control *oc, struct task_struct *p)
        }
        if (sysctl_oom_dump_tasks)
                dump_tasks(oc->memcg, oc->nodemask);
+       if (p)
+               dump_oom_summary(oc, p);
 }
 
 /*