From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCADAC55185 for ; Wed, 22 Apr 2020 12:28:24 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6969F20882 for ; Wed, 22 Apr 2020 12:28:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=cmpxchg-org.20150623.gappssmtp.com header.i=@cmpxchg-org.20150623.gappssmtp.com header.b="Y9jYQrTD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6969F20882 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cmpxchg.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 4C5778E0016; Wed, 22 Apr 2020 08:28:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 475548E0003; Wed, 22 Apr 2020 08:28:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38A738E0016; Wed, 22 Apr 2020 08:28:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0168.hostedemail.com [216.40.44.168]) by kanga.kvack.org (Postfix) with ESMTP id 1ED3A8E0003 for ; Wed, 22 Apr 2020 08:28:22 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id BDEA0181AEF07 for ; Wed, 22 Apr 2020 12:28:21 +0000 (UTC) X-FDA: 76735418802.10.frame69_48f1166bd473f X-HE-Tag: frame69_48f1166bd473f X-Filterd-Recvd-Size: 5454 Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by imf16.hostedemail.com (Postfix) with ESMTP for ; Wed, 22 Apr 2020 12:28:21 +0000 (UTC) Received: by mail-qk1-f195.google.com with SMTP id o19so2101866qkk.5 for ; Wed, 22 Apr 2020 05:28:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=f0jbQ8lqR59CMuevuoKxB5R1TbGTdEWUgK8b7QwWaig=; b=Y9jYQrTD+KBkq/Ivls3qIPwJpmM6ww7CJ2CqQanRl1MnnhVRBjIC8FJ9elhRHjgaAi WtmVdh8KfHvs79NF9myzgKF3YDZQa+Kv8hbQ1f0XynyfQj818YgCxZe6+8zI0tDFDBNA roHEPrdPPArwYVRbpIyKS14DdWpNtXoIySwVZMyzDaghAT7+l+UFo8jBdGkcVPgJmNK1 Ax88OWfXdaPqDS8yCuOPxz5U+/l5yJQY7Kk5uHPF34cinwO+6pSMWgPjLxzO6Hy1mSN2 GGyZFtH27zc+d6gpMknc6PTpEE65vwc0nQSxz8MYH4htOoqzKxDJB+0noiDXVVFZw7Q+ CcIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=f0jbQ8lqR59CMuevuoKxB5R1TbGTdEWUgK8b7QwWaig=; b=IUSy/S4SYnEA7w+zKFwViUrBsDOmxgoSk3sLGhx6zC7lwthJJ07TP6FJUiIInyPeZ8 VOol/9ZQ4SuKq0u5i4Z/tGFIbZwILt/qDFmAZs7rF/GhZzB1oI7drcQ+88pK9vGGQWri B/lqdqGRCQjjHz8lCKIBxtFkHtnM5jqGKs2QBxXz/Ot4Dv2Vr22DpAyG9qIQHynOmQB9 B+gnlpJ5QNqiAFMcF3844FgdszRTecnJHLHZ2+1mGLrOJraF8T6Ah3lzC/k/hID+AWmh PamI35XNGnopVUj/f96mdyXXA1G/AUCrY7EyxSSbMshhVNxSdOwRLtf/bpdfoIFNMKNj IbRA== X-Gm-Message-State: AGi0PuY8bCBq33uXhwojoQyqbeisosQw29GwkQ8EdCz9mtPE+Z800j71 +Xs0xOT4se4m3m2nr5eRRwm2xw== X-Google-Smtp-Source: APiQypK0yZ624EmqPtADqI8HwZ3PCh6fLl7kwzINQkJkM5bvPq4ticXu2xFDQMmITKIA5k9hjWwx/g== X-Received: by 2002:a05:620a:8da:: with SMTP id z26mr19355762qkz.182.1587558500498; Wed, 22 Apr 2020 05:28:20 -0700 (PDT) Received: from localhost ([2620:10d:c091:480::921]) by smtp.gmail.com with ESMTPSA id 28sm3853059qkp.10.2020.04.22.05.28.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2020 05:28:19 -0700 (PDT) Date: Wed, 22 Apr 2020 08:28:18 -0400 From: Johannes Weiner To: Joonsoo Kim Cc: Alex Shi , Shakeel Butt , Hugh Dickins , Michal Hocko , "Kirill A. Shutemov" , Roman Gushchin , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: Re: [PATCH 10/18] mm: memcontrol: switch to native NR_ANON_MAPPED counter Message-ID: <20200422122818.GB358439@cmpxchg.org> References: <20200420221126.341272-1-hannes@cmpxchg.org> <20200420221126.341272-11-hannes@cmpxchg.org> <20200422065151.GJ6780@js1304-desktop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200422065151.GJ6780@js1304-desktop> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hello Joonsoo, On Wed, Apr 22, 2020 at 03:51:52PM +0900, Joonsoo Kim wrote: > On Mon, Apr 20, 2020 at 06:11:18PM -0400, Johannes Weiner wrote: > > @@ -3768,7 +3761,7 @@ static int memcg_numa_stat_show(struct seq_file *m, void *v) > > > > static const unsigned int memcg1_stats[] = { > > NR_FILE_PAGES, > > - MEMCG_RSS, > > + NR_ANON_MAPPED, > > MEMCG_RSS_HUGE, > > NR_SHMEM, > > NR_FILE_MAPPED, > > @@ -5395,7 +5388,12 @@ static int mem_cgroup_move_account(struct page *page, > > > > lock_page_memcg(page); > > > > - if (!PageAnon(page)) { > > + if (PageAnon(page)) { > > + if (page_mapped(page)) { > > This page_mapped() check is newly inserted. Could you elaborate more > on why mem_cgroup_charge_statistics() doesn't need this check? MEMCG_RSS extended from when the page was charged until it was uncharged, but NR_ANON_MAPPED is only counted while the page is really mapped into page tables. That starts shortly after we charge and ends shortly before we uncharge, so pages could move between cgroups before or after they are mapped, while they aren't counted in NR_ANON_MAPPED. So to know that the page is counted, charge_statistics() only needed to know that the page is charged and Anon; move_account() also needs to know that the page is mapped. > > @@ -1181,7 +1187,7 @@ void page_add_new_anon_rmap(struct page *page, > > /* increment count (starts at -1) */ > > atomic_set(&page->_mapcount, 0); > > } > > - __mod_node_page_state(page_pgdat(page), NR_ANON_MAPPED, nr); > > + __mod_lruvec_page_state(page, NR_ANON_MAPPED, nr); > > __page_set_anon_rmap(page, vma, address, 1); > > } > > memcg isn't setup yet and accounting isn't applied to proper memcg. > Maybe, it would be applied to root memcg. With this change, we don't > need the mapping to commit the charge so switching the order of > page_add_new_anon_rmap() and mem_cgroup_commit_charge() will solve the > issue. Good catch, it's that dreaded circular dependency. It's fixed two patches down when I charge anon pages earlier as well. But I'll change the rmap<->commit order in this patch to avoid the temporary bug. Thanks for your thorough review!