From: Michal Hocko <mhocko@kernel.org> To: Vinayak Menon <vinmenon@codeaurora.org> Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mgorman@techsingularity.net, vbabka@suse.cz, riel@redhat.com, vdavydov.dev@gmail.com, anton.vorontsov@linaro.org, minchan@kernel.org, shashim@codeaurora.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2 v2] mm: vmpressure: fix sending wrong events on underflow Date: Thu, 9 Feb 2017 13:10:57 +0100 [thread overview] Message-ID: <20170209121057.GF10257@dhcp22.suse.cz> (raw) In-Reply-To: <1486641577-11685-1-git-send-email-vinmenon@codeaurora.org> On Thu 09-02-17 17:29:36, Vinayak Menon wrote: > At the end of a window period, if the reclaimed pages > is greater than scanned, an unsigned underflow can > result in a huge pressure value and thus a critical event. > Reclaimed pages is found to go higher than scanned because > of the addition of reclaimed slab pages to reclaimed in > shrink_node without a corresponding increment to scanned > pages. Minchan Kim mentioned that this can also happen in > the case of a THP page where the scanned is 1 and reclaimed > could be 512. > > Acked-by: Minchan Kim <minchan@kernel.org> > Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> Acked-by: Michal Hocko <mhocko@suse.com> I would prefer the fixup in vmpressure() as already mentioned but this should work as well. > --- > v2: Adding a comment and reordering the patches > as per Michal's suggestion > > mm/vmpressure.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/mm/vmpressure.c b/mm/vmpressure.c > index 149fdf6..6063581 100644 > --- a/mm/vmpressure.c > +++ b/mm/vmpressure.c > @@ -112,9 +112,16 @@ static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned, > unsigned long reclaimed) > { > unsigned long scale = scanned + reclaimed; > - unsigned long pressure; > + unsigned long pressure = 0; > > /* > + * reclaimed can be greater than scanned in cases > + * like THP, where the scanned is 1 and reclaimed > + * could be 512 > + */ > + if (reclaimed >= scanned) > + goto out; > + /* > * We calculate the ratio (in percents) of how many pages were > * scanned vs. reclaimed in a given time frame (window). Note that > * time is in VM reclaimer's "ticks", i.e. number of pages > @@ -124,6 +131,7 @@ static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned, > pressure = scale - (reclaimed * scale / scanned); > pressure = pressure * 100 / scale; > > +out: > pr_debug("%s: %3lu (s: %lu r: %lu)\n", __func__, pressure, > scanned, reclaimed); > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > member of the Code Aurora Forum, hosted by The Linux Foundation > -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org> To: Vinayak Menon <vinmenon@codeaurora.org> Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mgorman@techsingularity.net, vbabka@suse.cz, riel@redhat.com, vdavydov.dev@gmail.com, anton.vorontsov@linaro.org, minchan@kernel.org, shashim@codeaurora.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2 v2] mm: vmpressure: fix sending wrong events on underflow Date: Thu, 9 Feb 2017 13:10:57 +0100 [thread overview] Message-ID: <20170209121057.GF10257@dhcp22.suse.cz> (raw) In-Reply-To: <1486641577-11685-1-git-send-email-vinmenon@codeaurora.org> On Thu 09-02-17 17:29:36, Vinayak Menon wrote: > At the end of a window period, if the reclaimed pages > is greater than scanned, an unsigned underflow can > result in a huge pressure value and thus a critical event. > Reclaimed pages is found to go higher than scanned because > of the addition of reclaimed slab pages to reclaimed in > shrink_node without a corresponding increment to scanned > pages. Minchan Kim mentioned that this can also happen in > the case of a THP page where the scanned is 1 and reclaimed > could be 512. > > Acked-by: Minchan Kim <minchan@kernel.org> > Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> Acked-by: Michal Hocko <mhocko@suse.com> I would prefer the fixup in vmpressure() as already mentioned but this should work as well. > --- > v2: Adding a comment and reordering the patches > as per Michal's suggestion > > mm/vmpressure.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/mm/vmpressure.c b/mm/vmpressure.c > index 149fdf6..6063581 100644 > --- a/mm/vmpressure.c > +++ b/mm/vmpressure.c > @@ -112,9 +112,16 @@ static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned, > unsigned long reclaimed) > { > unsigned long scale = scanned + reclaimed; > - unsigned long pressure; > + unsigned long pressure = 0; > > /* > + * reclaimed can be greater than scanned in cases > + * like THP, where the scanned is 1 and reclaimed > + * could be 512 > + */ > + if (reclaimed >= scanned) > + goto out; > + /* > * We calculate the ratio (in percents) of how many pages were > * scanned vs. reclaimed in a given time frame (window). Note that > * time is in VM reclaimer's "ticks", i.e. number of pages > @@ -124,6 +131,7 @@ static enum vmpressure_levels vmpressure_calc_level(unsigned long scanned, > pressure = scale - (reclaimed * scale / scanned); > pressure = pressure * 100 / scale; > > +out: > pr_debug("%s: %3lu (s: %lu r: %lu)\n", __func__, pressure, > scanned, reclaimed); > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > member of the Code Aurora Forum, hosted by The Linux Foundation > -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-02-09 12:23 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-09 11:59 [PATCH 1/2 v2] mm: vmpressure: fix sending wrong events on underflow Vinayak Menon 2017-02-09 11:59 ` Vinayak Menon 2017-02-09 11:59 ` [PATCH 2/2 v5] mm: vmscan: do not pass reclaimed slab to vmpressure Vinayak Menon 2017-02-09 11:59 ` Vinayak Menon 2017-02-09 12:20 ` Michal Hocko 2017-02-09 12:20 ` Michal Hocko 2017-02-10 8:45 ` vinayak menon 2017-02-10 8:45 ` vinayak menon 2017-02-10 9:05 ` Michal Hocko 2017-02-10 9:05 ` Michal Hocko 2017-02-09 12:10 ` Michal Hocko [this message] 2017-02-09 12:10 ` [PATCH 1/2 v2] mm: vmpressure: fix sending wrong events on underflow Michal Hocko 2017-02-09 12:22 ` Michal Hocko 2017-02-09 12:22 ` Michal Hocko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170209121057.GF10257@dhcp22.suse.cz \ --to=mhocko@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=anton.vorontsov@linaro.org \ --cc=hannes@cmpxchg.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@techsingularity.net \ --cc=minchan@kernel.org \ --cc=riel@redhat.com \ --cc=shashim@codeaurora.org \ --cc=vbabka@suse.cz \ --cc=vdavydov.dev@gmail.com \ --cc=vinmenon@codeaurora.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.