From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756179AbbJALDZ (ORCPT ); Thu, 1 Oct 2015 07:03:25 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:35559 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755242AbbJALDV (ORCPT ); Thu, 1 Oct 2015 07:03:21 -0400 X-AuditID: cbfee690-f794e6d0000014de-05-560d12f71fd8 From: Pintu Kumar To: akpm@linux-foundation.org, minchan@kernel.org, dave@stgolabs.net, pintu.k@samsung.com, mhocko@suse.cz, koct9i@gmail.com, rientjes@google.com, hannes@cmpxchg.org, penguin-kernel@i-love.sakura.ne.jp, bywxiaobai@163.com, mgorman@suse.de, vbabka@suse.cz, js1304@gmail.com, kirill.shutemov@linux.intel.com, alexander.h.duyck@redhat.com, sasha.levin@oracle.com, cl@linux.com, fengguang.wu@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpgs@samsung.com, pintu_agarwal@yahoo.com, pintu.ping@gmail.com, vishnu.ps@samsung.com, rohit.kr@samsung.com, c.rajkumar@samsung.com, sreenathd@samsung.com Subject: [PATCH 1/1] mm: vmstat: Add OOM kill count in vmstat counter Date: Thu, 01 Oct 2015 16:18:43 +0530 Message-id: <1443696523-27262-1-git-send-email-pintu.k@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAAy2Sa0hTcRjG+59zdlFcnqbWX6OSgYmK5mXqPzJJQzh9SAzBD/XBlp6mqFM2 lSTymuUFlul01VZIs1hz3qaFVopuBqYSkZZ5t7xM87JMdJmiba1vz8vze3kfeF42zh0l3NjJ okxaLBKk8pj2hNaZn+tr5nLi/Of/cJGySctEu3tyAkmVnqhcVoWhka0VgJb0Xqh+VAuQydiE o3rdRfSw8zEDjRqVBHpROsNAQ6+VTDSl3WegqrUFgH4UmRno+aaJhRS31xhIajaw0MhSDYG2 VsdZ6E5dC4aMRcUEUvWO46h8tohAigIpQDLpJDh3lFKpZQzKsGLCqY5HkyyqVpdFdTRoMEr1 dgmjdJpSJqX7Vcmi+h7sENTcsByjnry/RK3PjxGUqeszk5K2aQBVrcijBmt7WTFOl+3DEunU 5GxafCr8qn3SzmoPM2PV9canyUE8HxS6lAE2G5J8+HLapwzYWeRh+HGqiVkG7NlcUg3g0EwF sBl82LU4htmMZwDe62/7TxVgsO9bK8tKMUlP+HtlB1gNZ7Ifh3JtF24dcFIF4N3tmn+UExkF 35n6GVZNkB6wcWwXWHNwyPNwpSjSFskdKivDrKuQnGPD1le7uA0n4VaVnrAxx6CuG7elc4U9 6q9EBThUCw5ogAudkZAhuSYU8/0kgjRJlkjol5CepgOWxgf2FirawVT3GT0g2YDnwIFChzgu Q5AtyUnTg2DLhfu4m0tCuuVJRJnxAUEhgSiYHxwUGHo6hHeEs+y2HcslhYJMOoWmM2hxvDgr lZboAca2c8sHFQGOoQvOMnPzcMHTidQGg+Py8dHoSN/qfPJ7invoxk3YdiWpLoJjFL4JKj9x K1+MtWu8fMMjNqILXU/+7As3xH7JW5p0vz7vv+fpHRecW9JsZxjcL143pXhc8HHcFAW2zObI pwNdEwccJ7rlCtEHdXO9dvFgpyKq8exUSUxWNI+QJAkCvHGxRPAXtSYY5+wCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrOKsWRmVeSWpSXmKPExsVy+t9jAd3vQrxhBqc3s1jMWb+GzeLPv+ks Fn1z1C26p0xmsrj+7Q2jxctDmharb65htHj/fD2zxepNvhYz985ltbj5fA6LxcrOB6wWl3fN YbO4t+Y/q8Xkd88YLV41f2e1WPb1PbvF7JZ3rBZ93w+zW1x/OY3F4tvb2+wWbUs2Mlk8b25l sVh85DazRffjZhaL2Y19jBZT+u4yOkh7LF4xhdXj8Jv3zB47Z91l91iwqdRj59pVTB6L97xk 8ti0qpPNY9OnSeweJ2b8ZvF4cmU6k8e8k4EeH5/eYvF4v+8qm0ffllWMHlNn13ucWXCEPUA4 qoHRJiM1MSW1SCE1Lzk/JTMv3VbJOzjeOd7UzMBQ19DSwlxJIS8xN9VWycUnQNctMwcYOkoK ZYk5pUChgMTiYiV9O0wTQkPcdC1gGiN0fUOC4HqMDNBAwhrGjN9vD7IVvJWsuHT3DHMDY5No FyMnh4SAicS+F7eYIGwxiQv31rN1MXJxCAksZZToP7UFymlkkjjxcDM7SBWbgLrEjze/GUES IgKnmCWmr9nHDOIwCyxmlGj/OQ2sSljAVeLo+1OsIDaLgKrEult/gDo4OHgFnCXeNDuBmBIC ChJzJtlMYORewMiwilEitSC5oDgpPdcwL7Vcrzgxt7g0L10vOT93EyM4kTyT2sF4cJf7IUYB DkYlHt4DKTxhQqyJZcWVuYcYJTiYlUR4Zd4ChXhTEiurUovy44tKc1KLDzGaAq2fyCwlmpwP THJ5JfGGxibmpsamliYWJmaWSuK8Nw4xhAkJpCeWpGanphakFsH0MXFwSjUwbuqe+y1z1s3k uH+7GAPZ3f5eSD3AMzv5ss0FwYPeR9WDX1lkPHnEsPOjTI+b4ZxN2289q5k6yb5ZP5axYtbq qtTMcp2FR3fO+CqsofK3vsHgeqVFR/624jy7r2vvX1o6ke8KO9vMo/mKhfFWy2YfX/zybqvk XOk1Jt950u+6LhZ80y+oIaUppMRSnJFoqMVcVJwIAGbShwY6AwAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch maintains number of oom calls and number of oom kill count in /proc/vmstat. It is helpful during sluggish, aging or long duration tests. Currently if the OOM happens, it can be only seen in kernel ring buffer. But during long duration tests, all the dmesg and /var/log/messages* could be overwritten. So, just like other counters, the oom can also be maintained in /proc/vmstat. It can be also seen if all logs are disabled in kernel. A snapshot of the result of over night test is shown below: $ cat /proc/vmstat oom_stall 610 oom_kill_count 1763 Here, oom_stall indicates that there are 610 times, kernel entered into OOM cases. However, there were around 1763 oom killing happens. The OOM is bad for the any system. So, this counter can help the developer in tuning the memory requirement at least during initial bringup. Signed-off-by: Pintu Kumar --- include/linux/vm_event_item.h | 2 ++ mm/oom_kill.c | 2 ++ mm/page_alloc.c | 2 +- mm/vmstat.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 2b1cef8..ade0851 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -57,6 +57,8 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, #ifdef CONFIG_HUGETLB_PAGE HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, #endif + OOM_STALL, + OOM_KILL_COUNT, UNEVICTABLE_PGCULLED, /* culled to noreclaim list */ UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */ UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */ diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 03b612b..e79caed 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -570,6 +570,7 @@ void oom_kill_process(struct oom_control *oc, struct task_struct *p, * space under its control. */ do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true); + count_vm_event(OOM_KILL_COUNT); mark_oom_victim(victim); pr_err("Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n", task_pid_nr(victim), victim->comm, K(victim->mm->total_vm), @@ -600,6 +601,7 @@ void oom_kill_process(struct oom_control *oc, struct task_struct *p, task_pid_nr(p), p->comm); task_unlock(p); do_send_sig_info(SIGKILL, SEND_SIG_FORCED, p, true); + count_vm_event(OOM_KILL_COUNT); } rcu_read_unlock(); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9bcfd70..1d82210 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2761,7 +2761,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, schedule_timeout_uninterruptible(1); return NULL; } - + count_vm_event(OOM_STALL); /* * Go through the zonelist yet one more time, keep very high watermark * here, this is only to catch a parallel oom killing, we must fail if diff --git a/mm/vmstat.c b/mm/vmstat.c index 1fd0886..f054265 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -808,6 +808,8 @@ const char * const vmstat_text[] = { "htlb_buddy_alloc_success", "htlb_buddy_alloc_fail", #endif + "oom_stall", + "oom_kill_count", "unevictable_pgs_culled", "unevictable_pgs_scanned", "unevictable_pgs_rescued", -- 1.7.9.5