All of lore.kernel.org
 help / color / mirror / Atom feed
From: vinayak menon <vinayakm.list@gmail.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: Vinayak Menon <vinmenon@codeaurora.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	mgorman@techsingularity.net, vbabka@suse.cz,
	Rik van Riel <riel@redhat.com>,
	vdavydov.dev@gmail.com, anton.vorontsov@linaro.org,
	Minchan Kim <minchan@kernel.org>,
	shashim@codeaurora.org, "linux-mm@kvack.org" <linux-mm@kvack.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2 RESEND] mm: vmpressure: fix sending wrong events on underflow
Date: Mon, 6 Feb 2017 20:05:21 +0530	[thread overview]
Message-ID: <CAOaiJ-ksqOr8T0KRN8eP-YmvCsXOwF6_z=gvQEtaC5mhMt7tvA@mail.gmail.com> (raw)
In-Reply-To: <20170206132410.GC10298@dhcp22.suse.cz>

On Mon, Feb 6, 2017 at 6:54 PM, Michal Hocko <mhocko@kernel.org> wrote:
> On Mon 06-02-17 18:39:03, vinayak menon wrote:
>> On Mon, Feb 6, 2017 at 6:10 PM, Michal Hocko <mhocko@kernel.org> wrote:
>> > On Mon 06-02-17 17:54:10, Vinayak Menon wrote:
>> > [...]
>> >> diff --git a/mm/vmpressure.c b/mm/vmpressure.c
>> >> index 149fdf6..3281b34 100644
>> >> --- a/mm/vmpressure.c
>> >> +++ b/mm/vmpressure.c
>> >> @@ -112,8 +112,10 @@ 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;
>> >>
>> >> +     if (reclaimed >= scanned)
>> >> +             goto out;
>> >
>> > This deserves a comment IMHO. Besides that, why shouldn't we normalize
>> > the result already in vmpressure()? Please note that the tree == true
>> > path will aggregate both scanned and reclaimed and that already skews
>> > numbers.
>> Sure. Will add a comment.
>> IIUC, normalizing in vmpressure() means something like this which you
>> mentioned in one
>> of your previous emails right ?
>>
>> + if (reclaimed > scanned)
>> +          reclaimed = scanned;
>
> yes or scanned = reclaimed.
>
>> Considering a scan window of 512 pages and without above piece of
>> code, if the first scanning is of a THP page
>> Scan=1,Reclaimed=512
>> If the next 511 scans results in 0 reclaimed pages
>> total_scan=512,Reclaimed=512 => vmpressure 0
>
> I am not sure I understand. What do you mean by next scans? We do not
> modify counters outside of vmpressure? If you mean next iteration of
> shrink_node's loop then this changeshouldn't make a difference, no?
>
By scan I meant pages scanned by shrink_node_memcg/shrink_list which is passed
as nr_scanned to vmpressure.
The calculation of pressure for tree is done at the end of
vmpressure_win and it is that
calculation which underflows. With this patch we want only the
underflow to be avoided. But
if we make (reclaimed = scanned) in vmpressure(), we change the
vmpressure value even
when there is no underflow right ?
Rewriting the above e.g again.
First call to vmpressure with nr_scanned=1 and nr_reclaimed=512 (THP)
Second call to vmpressure with nr_scanned=511 and nr_reclaimed=0
In the second call vmpr->tree_scanned becomes equal to vmpressure_win
and the work
is scheduled and it will calculate the vmpressure as 0 because
tree_reclaimed = 512

Similarly, if scanned is made equal to reclaimed in vmpressure()
itself as you had suggested,
First call to vmpressure with nr_scanned=1 and nr_reclaimed=512 (THP)
And in vmpressure, we make nr_scanned=1 and nr_reclaimed=1
Second call to vmpressure with nr_scanned=511 and nr_reclaimed=0
In the second call vmpr->tree_scanned becomes equal to vmpressure_win
and the work
is scheduled and it will calculate the vmpressure as critical, because
tree_reclaimed = 1

So it makes a difference, no?

WARNING: multiple messages have this Message-ID (diff)
From: vinayak menon <vinayakm.list@gmail.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: Vinayak Menon <vinmenon@codeaurora.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	mgorman@techsingularity.net, vbabka@suse.cz,
	Rik van Riel <riel@redhat.com>,
	vdavydov.dev@gmail.com, anton.vorontsov@linaro.org,
	Minchan Kim <minchan@kernel.org>,
	shashim@codeaurora.org, "linux-mm@kvack.org" <linux-mm@kvack.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2 RESEND] mm: vmpressure: fix sending wrong events on underflow
Date: Mon, 6 Feb 2017 20:05:21 +0530	[thread overview]
Message-ID: <CAOaiJ-ksqOr8T0KRN8eP-YmvCsXOwF6_z=gvQEtaC5mhMt7tvA@mail.gmail.com> (raw)
In-Reply-To: <20170206132410.GC10298@dhcp22.suse.cz>

On Mon, Feb 6, 2017 at 6:54 PM, Michal Hocko <mhocko@kernel.org> wrote:
> On Mon 06-02-17 18:39:03, vinayak menon wrote:
>> On Mon, Feb 6, 2017 at 6:10 PM, Michal Hocko <mhocko@kernel.org> wrote:
>> > On Mon 06-02-17 17:54:10, Vinayak Menon wrote:
>> > [...]
>> >> diff --git a/mm/vmpressure.c b/mm/vmpressure.c
>> >> index 149fdf6..3281b34 100644
>> >> --- a/mm/vmpressure.c
>> >> +++ b/mm/vmpressure.c
>> >> @@ -112,8 +112,10 @@ 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;
>> >>
>> >> +     if (reclaimed >= scanned)
>> >> +             goto out;
>> >
>> > This deserves a comment IMHO. Besides that, why shouldn't we normalize
>> > the result already in vmpressure()? Please note that the tree == true
>> > path will aggregate both scanned and reclaimed and that already skews
>> > numbers.
>> Sure. Will add a comment.
>> IIUC, normalizing in vmpressure() means something like this which you
>> mentioned in one
>> of your previous emails right ?
>>
>> + if (reclaimed > scanned)
>> +          reclaimed = scanned;
>
> yes or scanned = reclaimed.
>
>> Considering a scan window of 512 pages and without above piece of
>> code, if the first scanning is of a THP page
>> Scan=1,Reclaimed=512
>> If the next 511 scans results in 0 reclaimed pages
>> total_scan=512,Reclaimed=512 => vmpressure 0
>
> I am not sure I understand. What do you mean by next scans? We do not
> modify counters outside of vmpressure? If you mean next iteration of
> shrink_node's loop then this changeshouldn't make a difference, no?
>
By scan I meant pages scanned by shrink_node_memcg/shrink_list which is passed
as nr_scanned to vmpressure.
The calculation of pressure for tree is done at the end of
vmpressure_win and it is that
calculation which underflows. With this patch we want only the
underflow to be avoided. But
if we make (reclaimed = scanned) in vmpressure(), we change the
vmpressure value even
when there is no underflow right ?
Rewriting the above e.g again.
First call to vmpressure with nr_scanned=1 and nr_reclaimed=512 (THP)
Second call to vmpressure with nr_scanned=511 and nr_reclaimed=0
In the second call vmpr->tree_scanned becomes equal to vmpressure_win
and the work
is scheduled and it will calculate the vmpressure as 0 because
tree_reclaimed = 512

Similarly, if scanned is made equal to reclaimed in vmpressure()
itself as you had suggested,
First call to vmpressure with nr_scanned=1 and nr_reclaimed=512 (THP)
And in vmpressure, we make nr_scanned=1 and nr_reclaimed=1
Second call to vmpressure with nr_scanned=511 and nr_reclaimed=0
In the second call vmpr->tree_scanned becomes equal to vmpressure_win
and the work
is scheduled and it will calculate the vmpressure as critical, because
tree_reclaimed = 1

So it makes a difference, no?

--
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>

  reply	other threads:[~2017-02-06 14:35 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-06 12:24 [PATCH 1/2 v4] mm: vmscan: do not pass reclaimed slab to vmpressure Vinayak Menon
2017-02-06 12:24 ` Vinayak Menon
2017-02-06 12:24 ` [PATCH 2/2 RESEND] mm: vmpressure: fix sending wrong events on underflow Vinayak Menon
2017-02-06 12:24   ` Vinayak Menon
2017-02-06 12:40   ` Michal Hocko
2017-02-06 12:40     ` Michal Hocko
2017-02-06 13:09     ` vinayak menon
2017-02-06 13:09       ` vinayak menon
2017-02-06 13:24       ` Michal Hocko
2017-02-06 13:24         ` Michal Hocko
2017-02-06 14:35         ` vinayak menon [this message]
2017-02-06 14:35           ` vinayak menon
2017-02-06 15:12           ` Michal Hocko
2017-02-06 15:12             ` Michal Hocko
2017-02-07 11:17             ` vinayak menon
2017-02-07 11:17               ` vinayak menon
2017-02-07 12:09               ` Michal Hocko
2017-02-07 12:09                 ` Michal Hocko
2017-02-06 12:52 ` [PATCH 1/2 v4] mm: vmscan: do not pass reclaimed slab to vmpressure Michal Hocko
2017-02-06 12:52   ` Michal Hocko
2017-02-06 15:10   ` vinayak menon
2017-02-06 15:10     ` vinayak menon
2017-02-07  8:10     ` Michal Hocko
2017-02-07  8:10       ` Michal Hocko
2017-02-07 11:09       ` vinayak menon
2017-02-07 11:09         ` vinayak menon
2017-02-07 12:17         ` Michal Hocko
2017-02-07 12:17           ` Michal Hocko
2017-02-07 13:16           ` vinayak menon
2017-02-07 13:16             ` vinayak menon
2017-02-07 14:52             ` Michal Hocko
2017-02-07 14:52               ` 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='CAOaiJ-ksqOr8T0KRN8eP-YmvCsXOwF6_z=gvQEtaC5mhMt7tvA@mail.gmail.com' \
    --to=vinayakm.list@gmail.com \
    --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=mhocko@kernel.org \
    --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: link
Be 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.