Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1328559

Re: [PATCH 2/2] mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate()

From Johannes Weiner <jweiner@fb.com>
Newsgroups linux.kernel
Subject Re: [PATCH 2/2] mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate()
Date 2016-02-07 20:00 +0100
Message-ID <qZCIW-1TN-3@gated-at.bofh.it> (permalink)
References <qYyo1-6KS-5@gated-at.bofh.it> <qZCIW-1TN-5@gated-at.bofh.it> <qZCzg-1PA-17@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


> On Feb 7, 2016, at 1:41 PM, Vladimir Davydov <vdavydov@virtuozzo.com> wrote:
> 
>> On Thu, Feb 04, 2016 at 03:07:47PM -0500, Johannes Weiner wrote:
>> Migration accounting in the memory controller used to have to handle
>> both oldpage and newpage being on the LRU already; fuse's page cache
>> replacement used to pass a recycled newpage that had been uncharged
>> but not freed and removed from the LRU, and the memcg migration code
>> used to uncharge oldpage to "pass on" the existing charge to newpage.
>> 
>> Nowadays, pages are no longer uncharged when truncated from the page
>> cache, but rather only at free time, so if a LRU page is recycled in
>> page cache replacement it'll also still be charged. And we bail out of
>> the charge transfer altogether in that case. Tell commit_charge() that
>> we know newpage is not on the LRU, to avoid taking the zone->lru_lock
>> unnecessarily from the migration path.
>> 
>> But also, oldpage is no longer uncharged inside migration. We only use
>> oldpage for its page->mem_cgroup and page size, so we don't care about
>> its LRU state anymore either. Remove any mention from the kernel doc.
>> 
>> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
>> Suggested-by: Hugh Dickins <hughd@google.com>
> 
> Acked-by: Vladimir Davydov <vdavydov@virtuozzo.com>

Thanks!

> @@ -5483,6 +5483,7 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage)
>    unsigned int nr_pages;
>    bool compound;
> 
> +    VM_BUG_ON_PAGE(PageLRU(newpage), newpage);

That's actually possible for fuse. But in that case newpage is charged and we bail.

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH 2/2] mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate() Johannes Weiner <hannes@cmpxchg.org> - 2016-02-04 21:10 +0100
  Re: [PATCH 2/2] mm: memcontrol: drop unnecessary lru locking from  mem_cgroup_migrate() Vladimir Davydov <vdavydov@virtuozzo.com> - 2016-02-07 19:50 +0100
    Re: [PATCH 2/2] mm: memcontrol: drop unnecessary lru locking from  mem_cgroup_migrate() Johannes Weiner <jweiner@fb.com> - 2016-02-07 20:00 +0100

csiph-web