All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Yang <richardw.yang@linux.intel.com>
To: Hugh Dickins <hughd@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>,
	Wei Yang <richardw.yang@linux.intel.com>,
	Matthew Wilcox <willy@infradead.org>,
	linux-mm@kvack.org,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Roman Gushchin <guro@fb.com>, Minchan Kim <minchan@kernel.org>,
	Kirill Tkhai <ktkhai@virtuozzo.com>
Subject: Re: Why sometimes count vm event with page number, sometimes not?
Date: Wed, 6 Nov 2019 08:28:50 +0800	[thread overview]
Message-ID: <20191106002850.GA8745@richard> (raw)
In-Reply-To: <alpine.LSU.2.11.1911051143500.1363@eggly.anvils>

On Tue, Nov 05, 2019 at 12:49:17PM -0800, Hugh Dickins wrote:
>On Tue, 5 Nov 2019, Vlastimil Babka wrote:
>> On 11/5/19 7:28 AM, Wei Yang wrote:
>> > On Mon, Nov 04, 2019 at 07:32:51PM -0800, Matthew Wilcox wrote:
>> >> On Tue, Nov 05, 2019 at 10:26:44AM +0800, Wei Yang wrote:
>> >>> Hi, All,
>> >>>
>> >>> I am curious about the semantic of __count_vm_event[s].
>> >>>
>> >>> For example, we count PGDEACTIVATE event in lru_deactivate_file_fn() and
>> >>> lru_deactivate_fn(). One of them count with number of page, the other not.
>> >>>
>> >>> Just curious about the exact value we want to count.
>> >>
>> >> I don't understand the question.  We deactivate one page
>> >> in lru_deactivate_file_fn().  We deactivate several pages in
>> >> shrink_active_list().  PGDEACTIVATE counts the number of pages which
>> >> have been deactivated.
>> >>
>> >> Does that answer your question?
>> > 
>> > Not yet.
>> > 
>> > In function, lru_deactivate_fn(), __count_vm_events's second parameter is
>> > hpage_nr_pages(page). This is the number in size of "normal" page. Per my
>> > understanding, the page deactivated in lru_deactivate_file_fn() could be a
>> > hpage too. But it just count the deactivation once instead of
>> > hpage_nr_pages().
>> > 
>> > Or you want to say the page deactivated in lru_deactivate_file_fn() must be an
>> > order 0 page?
>> 
>> I suspect that was true before THP on shmem, but now perhaps it's not
>> true anymore? CCing Kirill and Hugh.
>
>I think that you and Wei are right, that lru_deactivate_file_fn() ought
>nowadays to __count_vm_events(PGDEACTIVATE, hpage_nr_pages(page)) like
>lru_deactivate_fn() does.
>
>(Though I think the only way shmem gets there is through drop_caches
>- note the noop_backing_dev_info check in generic_fadvise().
>invalidate_mapping_pages() on shmem is rarely more than a waste of
>time, since all but mapped readonly holes are undiscardably PageDirty.
>Internally we added a shmem_mapping() check to stop tests wasting time
>on expensive repeated drop_caches of shmem. And it's debatable whether
>drop_caches updating those vm_event stats is useful or the reverse.)
>
>Except that a couple of lines above I see __count_vm_event(PGROTATED):
>shouldn't that also use hpage_nr_pages? Then looking further through
>mm/swap.c, isn't there inconsistency throughout, whether a vm_event
>on a THP should be counted as 1 or hpage_nr_pages? I think originally
>the idea was that manipulating a THP should count as a single event,
>but now we have... a muddle.
>
>And what determines whether a memcg event is counted too?
>mm/vmscan.c chooses to count PGDEACTIVATE and other memcg events,
>mm/swap.c chooses not to count memcg events - unless it's PGLAZYFREE.
>
>I don't have answers.

Yes, just as you did, I looked into several places where count vm event. Feel
confused what we really count. Hmm... this break my mind...

>
>Hugh

-- 
Wei Yang
Help you, Help me


      reply	other threads:[~2019-11-06  0:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-05  2:26 Why sometimes count vm event with page number, sometimes not? Wei Yang
2019-11-05  3:32 ` Matthew Wilcox
2019-11-05  6:28   ` Wei Yang
2019-11-05 15:40     ` Vlastimil Babka
2019-11-05 20:49       ` Hugh Dickins
2019-11-06  0:28         ` Wei Yang [this message]

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=20191106002850.GA8745@richard \
    --to=richardw.yang@linux.intel.com \
    --cc=guro@fb.com \
    --cc=hughd@google.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=ktkhai@virtuozzo.com \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.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.