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=-4.0 required=3.0 tests=BAYES_00,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 610B3C433E3 for ; Fri, 17 Jul 2020 14:40:17 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 05700208DB for ; Fri, 17 Jul 2020 14:40:16 +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="nxkPNAOO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05700208DB 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 4327A8D0006; Fri, 17 Jul 2020 10:40:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E4198D0003; Fri, 17 Jul 2020 10:40:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2F99F8D0006; Fri, 17 Jul 2020 10:40:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0114.hostedemail.com [216.40.44.114]) by kanga.kvack.org (Postfix) with ESMTP id 1A7328D0003 for ; Fri, 17 Jul 2020 10:40:16 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 79414181AC9CB for ; Fri, 17 Jul 2020 14:40:15 +0000 (UTC) X-FDA: 77047827990.21.women00_0f065a726f0b Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin21.hostedemail.com (Postfix) with ESMTP id 78218180445FB for ; Fri, 17 Jul 2020 14:39:57 +0000 (UTC) X-HE-Tag: women00_0f065a726f0b X-Filterd-Recvd-Size: 5066 Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by imf33.hostedemail.com (Postfix) with ESMTP for ; Fri, 17 Jul 2020 14:39:56 +0000 (UTC) Received: by mail-qk1-f195.google.com with SMTP id k18so8941245qke.4 for ; Fri, 17 Jul 2020 07:39:56 -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=STv7WsxvA8+TLcU34mj2MS3Xd7Gr7Bu4P1KzwtIAOuE=; b=nxkPNAOOmMGSq8vdVAA45szRlpUlEv1fwfOC/OOzpgnTUQHlx85q/CguxHfQAzzEJD 8klFI7rewse8RvzYNgGppXlmSetz04nEL8MZ6IQdzlPEERJj5iHptUllNKRePqwhTg+4 RaDMHisQI+f8ikCcgQGwdRk9s5MoR6ZMQ1TA/1sx5NletxVp3ubJ7LNHbYThF00qLfcI KisWyutsRTi24ry8UsqpxYbxaKW01FZkYeASduAh6oXvL/5EdEMRU//NZjMDQmnnWfAC xK8+loM+0EYxajNdy33qCNAqyc85ZB8hBeynDAUnBAFw0/M8ZcBXlJ3IQqVbIsUOvvTF Jo2A== 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=STv7WsxvA8+TLcU34mj2MS3Xd7Gr7Bu4P1KzwtIAOuE=; b=b3cb16z9UyghlEh523NDIDBbNcfJ5/ZipVEBJfXj+mHTYmPhdWuKw1NS/E0o/L9/AU rHLxW3mAwd14pJvw9GXbvxwBiKgtzYN4Yqm2mjlX0ATx7wuzcHX7cmdd7paLy4uXeEw1 WpfCkk29B0Wbctx5M+kM5YWwy8BECQPT4wRtkekFSb9siWqE7c1sMDmb5oMOSMu97iOp SOjzFAaD5B70VCKP21QN9+R0hLmr0B9LedEU1RmWVlWbPzxr4CBAcqRQXYDl/Spm+Ue0 WvJQnnJBfav9Ef670LYavc+xslqrPFygt1sVk7wvOyJh1luJZJ7RYdABrA8TWEeTSpF1 zpUQ== X-Gm-Message-State: AOAM531eJaxRYYzKnDI76bXiRIZ1JicjVxHm1Lw0nOlZHQqXQ39BscJz Ik3LTd5bFED+zyw6g2iDSO9/xw== X-Google-Smtp-Source: ABdhPJxMXKxdEQiTF9nJ+aEIegm5INEc54s4Mkb5WF+o979C6xr7dEsy9yXIaT0Csd9/0rMmTfTfag== X-Received: by 2002:ae9:e8c5:: with SMTP id a188mr9435703qkg.222.1594996796013; Fri, 17 Jul 2020 07:39:56 -0700 (PDT) Received: from localhost ([2620:10d:c091:480::1:be7d]) by smtp.gmail.com with ESMTPSA id e129sm10150402qkf.132.2020.07.17.07.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2020 07:39:55 -0700 (PDT) Date: Fri, 17 Jul 2020 10:39:02 -0400 From: Johannes Weiner To: David Rientjes Cc: SeongJae Park , Andrew Morton , Yang Shi , Michal Hocko , Shakeel Butt , Yang Shi , Roman Gushchin , Greg Thelen , Vladimir Davydov , cgroups@vger.kernel.org, linux-mm@kvack.org Subject: Re: [patch] mm, memcg: provide an anon_reclaimable stat Message-ID: <20200717143902.GA266388@cmpxchg.org> References: <20200715071522.19663-1-sjpark@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 78218180445FB X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 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: On Thu, Jul 16, 2020 at 01:58:19PM -0700, David Rientjes wrote: > @@ -1350,6 +1350,32 @@ static bool mem_cgroup_wait_acct_move(struct mem_cgroup *memcg) > return false; > } > > +/* > + * Returns the amount of anon memory that is charged to the memcg that is > + * reclaimable under memory pressure without swap, in pages. > + */ > +static unsigned long memcg_anon_reclaimable(struct mem_cgroup *memcg) > +{ > + long deferred, lazyfree; > + > + /* > + * Deferred pages are charged anonymous pages that are on the LRU but > + * are unmapped. These compound pages are split under memory pressure. > + */ > + deferred = max_t(long, memcg_page_state(memcg, NR_ACTIVE_ANON) + > + memcg_page_state(memcg, NR_INACTIVE_ANON) - > + memcg_page_state(memcg, NR_ANON_MAPPED), 0); > + /* > + * Lazyfree pages are charged clean anonymous pages that are on the file > + * LRU and can be reclaimed under memory pressure. > + */ > + lazyfree = max_t(long, memcg_page_state(memcg, NR_ACTIVE_FILE) + > + memcg_page_state(memcg, NR_INACTIVE_FILE) - > + memcg_page_state(memcg, NR_FILE_PAGES), 0); Unfortunately, we don't know if these have been reused after the madvise until we actually do the rmap walk in page reclaim. All of these could have dirty ptes and require swapout after all. The MADV_FREE tradeoff was that the freed pages can get reused by userspace without another context switch and tlb flush in the common case, by exploiting the fact that the MMU sets the dirty bit for us. The downside is that the kernel doesn't know what state these pages are in until it takes a close-up look at them one by one.